2015-06-06 3 views
2

Я пытаюсь выбрать перекрытие/касание изображений из двух двоичных изображений. Первое изображение (синие круги) имеет основное тело, и я хочу найти любые зеленые треугольники, прикрепленные к нему.Выбор областей перекрытия/касания (двоичные изображения, Matlab)

первый Binary Image здесь (цветные для идентификации) 1st Binary Image

второй Binary изображение здесь 2nd Binary Image

FinalImage = BinaryImage1 | BinaryImage2; 

**Apply Filter** 

Ожидаемый результат: Filtered Images

Обратите внимание, как незакрепленные зеленые треугольники удаляются, & все синие круги сохраняются.

Есть ли способ сделать этот трюк?

ответ

2

Это требует морфологической реконструкции! В морфологической реконструкции вы указываете маркер и начинаете восстанавливать исходное изображение с этой точки маркера с помощью морфологической дилатации.

К счастью для нас, MATLAB уже имеет функцию, которая, под названием imreconstruct в Image Processing Toolbox, которая вызывается imreconstruct(marker,image)

Признать трогательное, но не пересекающиеся фигуры, мы можем только сделать дилатации на одно из входных изображений, чтобы сделать касательные фигуры перекрывающимися. В качестве элемента структурирования мы можем, например, используйте квадрат 3 × 3, поэтому мы также распознаем 8-связные цифры. После этого мы используем перекрывающиеся точки в качестве маркеров и выполняем морфологическую реконструкцию с использованием комбинированного изображения.

dilatedImage1 = imdilate(binaryImage1, strel('square',3)); 
finalImage = imreconstruct(dilatedImage1&binaryImage2, dilatedImage1|binaryImage2); 

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

finalImage = finalImage | binaryImage1; 

Для двух ваших примеров изображений, это приводит:

final image

круг в правом верхнем углу не связан с какой-либо треугольник. Я не знаю, как этот треугольник появился в вашем ожидаемом изображении результата, но я полагаю, что это только для демонстрационных целей.

Примечание: Я импортировал образцы изображений .jpg в MATLAB, которые приводят к уродливым границам, поэтому я сначала сделал морфологическое открытие изображений. Границы все еще не оптимальны, но это выглядит не так уж плохо.

+0

Ах да, извините за путаницу; Я рисовал быстрый и простой пример в MS Paint. Спасибо! – Keyes34

Смежные вопросы