Положение пикселей в изображении влияет на определение края? - PullRequest
1 голос
/ 04 мая 2019

Ссылаясь на это видео от Andrew NG https://youtu.be/XuD4C8vJzEQ?list=PLkDaE6sCZn6Gl29AoE31iwdVwSG-KnDzF

Из этого видео я делаю вывод, что для обнаружения вертикальных краев на изображении должна быть некоторая BRIGHTER, за которой следуют DARKER-области, начиная с левой стороны, а затем только эти [[1,0, -1], [1,0, - 1], [1,0, -1]] будет действовать как вертикальный детектор края, в противном случае - нет.

Мой вывод верен?

и

Является ли обратное тоже правдой?

1 Ответ

2 голосов
/ 04 мая 2019

Если вы подумаете о фильтре:

1 0 -1
1 0 -1
1 0 -1

, вы увидите, что он просто вычитает пиксели справа от пикселей слева в каждом месте, то есть находит горизонтальные различия.

Как таковой, он способен находить переходы от светлого к темному и от темного к светлому, просто различия будут проявляться с противоположным знаком (плюс или минус).Таким образом, если вы перейдете от светлой области слева к более темной области справа, у вас будет большое число (светлое) минус небольшое число (темное), и разница будет положительной.И наоборот, если вы перейдете из темной области слева (небольшое число) в более яркую область справа (большое число), вы получите отрицательную разницу.

Вот пример, только что сделанныйв терминале с ImageMagick .Начните с этого изображения:

enter image description here

Примените фильтр, о котором вы говорите:

magick input.png -morphology convolve '3x3: 1,0,-1 1,0,-1 1,0,-1' result.png

enter image description here

И вы можете видеть, что он находит только темные края.

Если вы хотите обнаружить края от светлого к темному и от темного к светлому, вам необходимо:

  • используйте номер со знаком (в отличие от без знака), чтобы вы могли удерживать отрицательные результаты, или
  • добавьте "смещение" к вашей свертке.

Если ваши данные были 8-разрядными без знака, вы могли бы добавить 50% смещение, разделив все ваши текущие значения на 2 и добавив 127 перед сверткой, например.

Итак, применяя смещение,теперь ваш фильтр обнаруживает края от темного к светлому и от светлого к темному:

magick input.png -define convolve:scale='50%!' -bias 50% -morphology convolve '3x3: 1,0,-1 1,0,-1 1,0,-1' result.png

enter image description here


Если вы хотите обнаружитьгоризонтальные края, переходящие из светлого в темное, поверните фильтр так:

-1 -1 -1
 0  0  0
 1  1  1

и примените:

magick input.png -morphology convolve '3x3: -1,-1,-1 0,0,0 1,1,1' result.png

enter image description here

Или, если вы хотите найти горизонтальный eпереходя из темноты к свету, используйте:

 1  1  1
 0  0  0
-1 -1 -1

magick input.png -morphology convolve '3x3: 1,1,1 0,0,0 -1,-1,-1' result.png

enter image description here

И снова то же самое, но с уклоном, чтобы мы могли найти оба светапереходы в темноту и темноту к свету одним махом:

magick image.png -define convolve:scale='50%!' -bias 50% -morphology convolve '3x3: -1,-1,-1 0,0,0 1,1,1' result.png

enter image description here


Энтони Тиссен предоставляет более полную информацию освертка, чем вы могли бы надеяться, в очень доступном стиле здесь .

...