2013-04-26 5 views
2

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

1) бинаризации

2) фильтрование, чтобы удаление эффекта "ступенчатый"; т.е. сглаживание

3) Тонкие линии

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

4a) Используйте bwlabel, чтобы найти регионы (я мог бы подумать об использовании bwmorp(...,'shrink'), чтобы просто оставить «капли», но это немного уменьшает размер капли).

4б) Найти все регионы, которые не имеют максимальную площадь

4с) Используйте расположение этих областей, чтобы уменьшить эти «сгустки» в точках.

Но как я могу применить усадку в указанных местах?

бинаризации

Binarization

Фильтрация

Filtered

Разбавление

Thinning

Отверстие заполнения

Fill holes

ответ

0

Я не уверен, если я правильно понял вопрос. Но можете ли вы взять дополнение утонченного изображения, а затем использовать bwlabel. После этого подсчитайте количество пикселей, принадлежащих каждой метке. Применяйте критерии для выбора ярлыков и получения их местоположений. После этого вы можете использовать команду imfill(bw,locations).

+0

Хорошо, что я на самом деле хотел бы сделать, это не просто заполнить отверстия, но и сжать отверстия до точки. Как вы можете видеть в изображении, заполненном отверстием выше, у меня есть куча этих маленьких отверстий, заполненных. Я хочу иметь возможность применить сжатие к этим областям и сжать их до определенной точки. Затем замените заполненные отверстия этой вновь созданной точкой.Проблема, с которой я сталкиваюсь, заключается в том, чтобы обрезать хребты, чтобы просто покинуть заполненные области, избегая при этом эрозии заполненных областей (если бы я использовал эрозию, гряды исчезли, но также уменьшили размер области). – roldy

+0

Попробуйте это. После выполнения 'bwlabel', заполните каждое отверстие отдельно, а затем используйте' bwmorph (image, 'remove') 'или' bwmorph (image, 'skeleton') ', что вам подходит. Повторите эту процедуру для каждого отверстия (например, метки). Чрезвычайно неэффективен, но на данный момент я не могу думать ни о чем другом. –

0

Если у вас есть регион, который вы хотите сжать до точки, то вычислите центр масс для региона. Сделайте это, просто усреднив координаты x и y каждой точки в блобе. Установите пиксели области в черный, а центр масс - белый.

Проблема, которую я имею обрезной от гребней, чтобы просто оставить заполненные участки, избегая при эрозии заполненных областей (если бы я должен был использовать подрывать гребни исчезнет, ​​но и уменьшить размер области) ,

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

+0

Проблема, которую я испытываю при эрозии, заключается в том, что мне нужно «вычесть» эти пиксели из исходного изображения и заменить их точкой. Если я разрушу изображение, я потеряю некоторые из этих пикселей в блоках. – roldy