2010-01-02 3 views
1

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

Есть ли способ обрабатывать только те части, которые ограничивают изображение, в данном случае, отпечаток пальца? То, что я пытаюсь сделать, это в основном это:

1) Разделяйте отпечатков пальцев
2) Extract важные моменты для сравнения с другими отпечатками пальцев
3) найти лучший матч на базе других отпечатков пальцев, которые имели свои очки ранее извлечено

У меня уже есть методы для 2 и 3, так что теперь мне просто нужно будет разграничить изображение.

Язык программирования должен быть Ruby, Java или C++. Ruby предпочитал, затем Java, и Бог помог мне, если мне нужно использовать C++. У меня нет опыта обработки изображений, но я хотел бы сделать это с помощью нескольких распространенных форматов, таких как jpg, gif, png, если это возможно.

+0

Это проблема большого жесткого диска. Либо вы найдете пакет, чтобы сделать это для вас, либо C++ - это наименьшее из ваших забот. – bmargulies

ответ

1

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

Возможны подходы, предложенные wikipedia (article), но ни один из них не является тривиальным, поскольку они работают с градиентами или ядрами. Вы должны проверить Canny Edge Detection, который должен быть достаточно простым для реализации: tutorial.

В любом случае, если вы хотите не углубляться в детали реализации, вы должны использовать OpenCV, который является библиотекой компьютерного зрения, способной сделать это простым способом. Вы можете использовать его наверняка в C++ и Java, но я думаю, что оболочка для Ruby тоже предлагается. This - простой пример использования библиотеки с алгоритмом Canny.

EDIT: на самом деле мой ответ охватывает пункт 2-3, поэтому мне интересно, что вы имеете в виду, ограничивая изображение? Подумайте о том, что масштабирование или поворот необходимо учитывать, если вы хотите сравнить разные отпечатки пальцев: вам нужен нечеткий компаратор. Возможно, вам стоит поработать над версией быстрого преобразования Fouried Transform, которая может лучше справляться с такими вещами.

0

Простой подход может быть с помощью порогового значения, как:

Преобразование изображения в оттенках серого - так у вас есть отпечатки пальцев в белом на черном фоне.

Найдите пороговое значение, которое получает большую часть отпечатка пальца.

Используйте открытую операцию (http://en.wikipedia.org/wiki/Mathematics_morphology), чтобы удалить шум. (эксперимент с расширением несколько раз)

Найти центр тяжести (x, y) изображения и стандартное отклонение (vx, vy).

В коробке:

[х-2vx, у-2vy], [х-2vx, у + 2vy], [х + 2vx, у + 2vy], [х + 2vx, y-2vy]

Вы найдете 95.4% от пикселей Вы можете сузить поле вниз, чтобы найти в нем максимальные и минимальные пиксели, если у вас много выбросов. Используйте поле для клипа с исходного изображения.

Это простой способ, который может хорошо работать для вашей ситуации :)

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