Могу ли я предположить, что конечная цель близка к разрыву?Чем вы можете использовать морфологические операции.Чтобы закрыть пробел, вам просто нужно так называемое « закрытие ».Это делается путем применения « дилатация » и затем « эрозия ».
Итак, как найти позицию, где разрыв был закрыт?Вы можете просто сравнить изображение до и после и посмотреть на изменения.
РЕДАКТИРОВАТЬ: после вашего сообщения я решил обновить ответ.Итак, я попробовал небольшой фрагмент кода в Matlab.
originalBW = imread('Je3ud.jpg');
imshow(originalBW);
se = strel('line',8, 0); % a straight line of 8 pixels
closeBW = imclose(originalBW,se_disk);
figure, imshow(closeBW)
subtractedBW = closeBW - originalBW;
figure, imshow(subtractedBW)
он создает результирующее изображение:
Итак, в основном мы нашли правильную позицию,но, к сожалению, получил много ложных срабатываний.Я думаю, что вы можете получить желаемый результат, рассматривая каждого из них как кандидата в качестве кандидата и избавляясь от ложных срабатываний.Одна из важных частей ложных срабатываний, по-видимому, заключается в том, что если вы проверите их вертикальную окрестность (на исходном изображении), вы обнаружите, что есть белые пиксели, потому что белая линия на самом деле не была отсоединена там (и поэтому они не могут быть правильнымирешение).Таким образом, вы можете попытаться использовать это, чтобы отбросить ложные срабатывания.