Я пытаюсь обнаружить горизонтальные линии, используя встроенные функции Matlab. Я читал, что фильтр: w = [-1 -1 -1;2 2 2;-1 -1 -1]
при применении к изображению будет обнаруживать горизонтальные линии шириной в 1 пиксель. Так как его отклик будет выше в горизонтальном направлении, а в остальных случаях его отклик будет нулевым.
Моя проблема в том, что линии, которые я хочу обнаружить, имеют ширину более 1 пикселя. Например, я хочу обнаружить белые линии на этом изображении:
Теперь, если я применю вышеуказанный фильтр к этому изображению, используя:
lines = imfilter(img, w);
imshow(lines)
Это дает следующий результат:
Он работал, как и ожидалось, то есть он обнаружил горизонтальные линии толщиной 1 пиксель, и я думаю, именно поэтому он обнаружил только края или границы линий. Я хочу, чтобы он обнаружил полную белую линию.
Итак, как мне это сделать? Как мне сделать линии только моей интересующей областью, а затем работать только с ними?
Я думаю, что один из способов, чтобы это сработало, заключается в том, что я каким-то образом узнаю ширину белых линий в пикселях, а затем создаю новое ядро для работы с этими размерами, но как мне найти ширину в пикселях? как мне сделать новое ядро для указанной ширины?
или я на совершенно неправильном пути?