Как обнаружить трещину на изображении? - PullRequest
0 голосов
/ 11 апреля 2020

Как обнаружить такие трещины, которые вы видите на прикрепленных изображениях? Я пробовал некоторые алгоритмы OpenCV, такие как обнаружение блобов (cv :: SimpleBlobDetector), но не смог получить никаких результатов.

Это обрезанное изображение, у полного изображения также есть некоторые другие функции, поэтому я не уверен порог может работать, потому что я должен получить ограничительную рамку обнаруженной трещины. Один из способов - назначить несколько (область интереса) области интереса и попытаться обнаружить ее, но эта трещина не появляется в том же месте на изображении. Есть идеи?

Можно ли решить эту проблему с помощью машинного / глубокого обучения (например, обнаружения объектов)? Если я обучу модель с набором данных трещины? Потому что часть изображения не имеет много функций, поэтому я не уверен, что этот метод будет работать. Пожалуйста, руководство.

Спасибо.

enter image description here enter image description here

Ответы [ 2 ]

1 голос
/ 11 апреля 2020

Использовать математическую морфологическую операцию. Пример кода Matlab:

a=imread('in.png');
se=strel( 'disk', 7);
b = imgaussfilt(a,1.3);
c=b-imopen(b,se);
c=3*c;
d=imclearborder(c);
imwrite(d, 'out.png');

Result

1 голос
/ 11 апреля 2020

Эти трещины трудно обнаружить, потому что изображение шумит (предположительно, рентген) и плохой контраст, поэтому соотношение сигнал / шум низкое.

Я бы попробовал применить фильтр Гаусса для шумоподавления, но только в горизонтальном направлении, чтобы сохранить горизонтальные края. Затем обнаружение горизонтальных краев.

Это то, что делает фильтр Габора. Вы можете попробовать разные ориентации.

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