Способ заполнения отверстия любого размера

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

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

2) Фильтрация для устранения эффекта "ступеньки"; то есть сглаживание

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

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

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

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

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

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

бинаризации

бинаризации

фильтрация

отфильтрованный

разжижение

разжижение

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

Заполнить отверстия

2 ответа

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

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

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

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

Другие вопросы по тегам