Я пытаюсь реализовать фильтр Собеля.
Полученный результат выглядит очень похоже на это (серый):
Но не так (черно-белый с градиентом):
Я пытался использовать порог, но это не правильно:
Есть ли какой-нибудь способ, которым я могу превратить шкалу серого в черно-белый с градиентом результат?
Ниже приведены шаги, которые я использую для фильтрации изображения в C #:
- Преобразование растрового изображения из файла (уже в оттенках серого)
Свертка каждого пикселя с помощью Собеляядро (например, горизонтальное)
private static float[][] Sobel3x3Kernel_Horizontal() {</p>
<code> return new float[][] {
new float[]{ 1, 2, 1},
new float[]{ 0, 0, 0 },
new float[]{ -1, -2, -1}
};
}
</code>
Переназначить все значения, чтобы они попадали в диапазон 0 ~ 255 (в противном случае будут отрицательные значения или значения, превышающие255, который нельзя использовать для Bitmap.SetPixel (int x, int y, Color color)
Вывод результата растрового изображения (в оттенках серого)