Как убрать фон с изображения отпечатка пальца? - PullRequest
8 голосов
/ 22 октября 2008

У меня есть изображение отпечатка пальца, сделанное со скользящего сканера. Однако вывод не имеет чистого фона. Это выглядит так:

грязный http://img208.imageshack.us/img208/2622/dirtyie0.png

Я хочу удалить фон, чтобы дальнейшая обработка была более точной. Как то так:

очищено http://img515.imageshack.us/img515/7530/cleanhh6.png

Как это сделать? Какой метод обработки изображения (если есть) можно использовать? Спасибо.

Ответы [ 5 ]

7 голосов
/ 22 октября 2008

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

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

Использование Wavelets также стоит попробовать. Это позволяет вам разделить изображение на подполосы интересующей частоты. Поиск хорошего вейвлета требует большой практики.

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

  1. нормализуйте изображение: самый темный пиксель становится -1, самый светлый пиксель становится 1. Вы также можете использовать -128 / 127, если предпочитаете работать с байтами.

  2. запустите гауссово размытие по изображению. Эксперимент с радиусом.

  3. вычесть нормализованное изображение из размытого изображения. Обработка переполнения путем насыщения до -1 и 1. Теперь изображение будет выглядеть примерно так, как если бы оно было обнаружено по краям, но с оттенками серого вместо двоичной маски.

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

  5. используйте маску для подготовки исходного изображения.

Для полноты картины вы также можете сделать это с морфологией изображения:

  1. Запустите детектор краев на вашем изображении. Использование детектора Canny - хороший выбор, но будет работать и простое ядро-детектор 3x3.

  2. Выполнить несколько проходов расширения по краям. Это будет на каждом проходе увеличивать границу вокруг всех белых пикселей и делать края более толстыми. Делайте это до тех пор, пока вся область отпечатка пальца не будет покрыта белыми пикселями. В вашем примере я думаю, что 4 или 5 проходов достаточно.

  3. Теперь вы можете напрямую использовать расширенное изображение в качестве маски.

Ссылка: Расширение http://homepages.inf.ed.ac.uk/rbf/HIPR2/dilate.htm

6 голосов
/ 22 октября 2008

Вы можете попробовать фильтр обнаружения края. Это помогло бы удалить фоновый шум и повысить четкость отпечатков пальцев для остальной части обработки.

Детектор краев Canny может быть хорошим, чтобы попробовать в первую очередь. Есть даже бесплатных веб-реализаций, которые вы можете попробовать , и общедоступная реализация Java, доступная .

РЕДАКТИРОВАТЬ: Было любопытно, как это будет работать, поэтому я попробовал веб-реализацию с настройками по умолчанию - не так уж плохо. Кажется, в нем есть несколько «фантомных» функций, но в целом это выглядит немного проще для обработки.

альтернативный текст http://img356.imageshack.us/img356/5/ml00055edgedetectionwp7.png

2 голосов
/ 22 октября 2008

попробуйте какое-нибудь усиление контраста (например, мексиканская шляпа) и после этого некоторое продвинутое усиление. у нас были хорошие результаты при использовании методов фильтра Габора для улучшения КТ-изображений стволов для дендрохронологии. мы использовали фильтр Габора, потому что они широко использовались в системах сопоставления отпечатков пальцев, и наши изображения были несколько похожи. после этого все, что вам нужно сделать, это немного (я бы рекомендовал локально адаптивный) трешолдинг, и вы получили бинарное изображение.

1 голос
/ 10 июля 2015

Существует много типов алгоритмов для сегментации отпечатков пальцев. Один из них, который отлично работает для датчиков (в вашем случае), основан на среднем и дисперсии каждого пикселя изображения. Ниже приведены шаги алгоритма, которые вы можете найти здесь:

Сегментация отпечатков пальцев: исследование различных методов и исследование параметров дисперсионного метода

1. Загрузка изображения с размером R x C пикселей. Здесь содержание внутри отпечатка пальца не имеет значения, поэтому я его освещаю. Вы можете видеть шум вокруг отпечатка пальца (маленькие точки), и это изображение хорошего качества, полученное с сенсора, может ваше изображение имеет плохое качество и больше шума на заднем плане. fingerprint R x C size in pixels

2. Я не выполнил нормализацию изображения, как на бумаге. Поэтому следующим шагом было определение пикселей-блоков размером w x w и разделение изображения на непересекающиеся блоки.

3. Для каждого пикселя переместите блок и вычислите среднее значение и дисперсию. Сохраните каждую дисперсию в матрице для дальнейшего сравнения. Вам придется угрожать границам. pixels-block of w x w

4. Определить порог. В документе для w = 15 порог составляет T = 210 .

5. Для каждой дисперсии сравните ее с пороговым значением; если оно меньше, оно будет фоновым, если нет, то будет сам отпечаток.

После всех этих шагов у вас будет изображение с меньшим шумом на фоне. Аналогично этому: segmented image

Вот алгоритм, который есть в статье: paper algorithm

Другие алгоритмы см .:

Улучшенный алгоритм сегментации отпечатков пальцев на основе среднего значения и дисперсии

Улучшенная сегментация изображения отпечатка пальца с использованием новой модифицированной технологии на основе градиента

1 голос
/ 22 октября 2008

Для начала я бы увеличил контраст до 100%, чтобы получить чисто черно-белое изображение (не в оттенках серого).

...