Я написал код с MATLAB, который после сглаживания (со срединным фильтром для уменьшения шума), обнаружение края с помощью алгоритма Sobel и, наконец, пороговое значение, использует заранее определенные шаблоны, чтобы опустить нереальные (или нежелательные) ребра. Мой вопрос заключается в том, что когда я подаю пример Pattern = [1 1 1;0 0 0;0 0 0]
на изображение с обнаруженным краем (BW), неожиданно у меня остались вертикальные края (фактически никаких существенных изменений не было сделано).Как улучшить обнаружение края с заранее определенными шаблонами в MATLAB?
Мой шаблон кода приложения:
[l,k] = size(edgeDetected_BW);
P(1:l , 1:k)=1; //improved edge detected image
Pattern = [1 1 1;0 0 0;0 0 0];
for i=1:l-2
for j=1:k-2
if((edgeDetected_BW([i i+1 i+2] , [j j+1 j+2])| Pattern) == Pattern)
P(i+1 , j+1) = 0;
end
end
end
После выполнения этого кода были утолщенной линии и несколько точек были удалены. Где моя ошибка?
.: Вид сзади на автомобиль :.
Точки в желтых кругах нежелательны.
Благодарим вас за ур ответ, после применения советов, о которых вы упомянули выше, потеря ценных данных не была пренебрежимой, поэтому я применил несколько шаблонов и, наконец, «ИЛИ» выходы. Результат: было удалено много точек (желательно), но снова линии были утолщены. – aminous
вы можете загрузить изображение edgeDetected_BW и свой код, щелкнув «изменить» своего исходного сообщения? – lennon310
Несомненно, на самом деле моя проблема связана с этой частью кода. Так я применил эти pattenrs (рядом с вашим шаблоном): 'P = [1 0 1; 1 0 1; 1 0 1]' 'P = [0 0 0; 1 1 1; 1 1 1] '' P = [1 1 1; 1 1 1; 0 0 0] ' – aminous