Подтвердить что ты не робот

Сканер отпечатков пальцев с использованием камеры

Работа с сканером отпечатков пальцев с использованием камеры или без нее, ее возможность и уровень успеха?, я столкнулся с одним из SDK с открытым исходным кодом под названием FingerJetFX, который обеспечивает возможность андроид тоже.

Экстрактор функций отпечатков пальцев FingerJetFX OSE не зависит от платформы и может быть построен для, с соответствующими изменениями в файлах make, и запускаться в средах с или без операционные системы, включая

  • Linux
  • Android
  • для Windows
  • Windows CE
  • различные RTOS

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

Я ищу предложения и рекомендации:

  • Сканер отпечатков пальцев можно использовать в андроиде, используя камеру или без камеры?
  • С помощью FingerJetFX я могу достичь своей цели?
  • Если второй ответ "да", может ли кто-нибудь предоставить мне какие-либо шаги для интеграции SDK в андроид?

Ваше предложение заметное.

4b9b3361

Ответ 1

Решения для камеры на базе Android:

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

FTIR in Biometrics

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

Я взял изображение слева с помощью коммерческого оптического сканера отпечатков пальцев (Futronics FS80) и справа с обычной камерой (15MP Cannon DSLR). После обрезки, инвертирования (в соответствии с другим соглашением по сканеру), контрастности и т.д. Изображения камеры мы получили следующие результаты.

enter image description here

Низкая контрастность изображения камеры очевидна.

enter image description here

Но программное обеспечение может точно определять поток гребня.

enter image description here

И мы получим достойное количество совпадающих мелочей (отмеченных красными кругами.)

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

Программный пакет, который я использовал для визуализации, является отличным и BSD лицензированным SourceAFIS. Никакой корпоративной версии "с открытым исходным кодом" / "платной версии" не существует, хотя в настоящее время он только портирован на С# и Java (ограниченный).

Решения без камеры:

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

Кросс-компиляция FingerJetFX

Как только вы разработали решение для получения изображений (у обоих потенциальных решений есть свои недостатки), вы можете начать беспокоиться о том, как FingerJetFX работает на Android. Сначала вы будете использовать свой SDK для написания автономной программы на С++, которая берет изображение и превращает его в шаблон. После этого у вас действительно есть два варианта.

  • Скомпилируйте его в библиотеку и используйте JNI для взаимодействия с ним.
  • Скомпилируйте его в исполняемый файл и позвольте программе Android назвать его подпроцессом.

Для или вам понадобится NDK. Я никогда не использовал JNI, поэтому я отложу мудрость другие о том, как нам это лучше всего. Я всегда выбираю маршрут №2. Для этого приложения я считаю это уместным, так как вы действительно на самом деле вызываете собственный код, чтобы сделать что-то одно, создайте шаблон своего изображения. После того, как вы запустили свою собственную программу и скомпилировали ее, вы можете использовать ответ на этот вопрос, чтобы упаковать ее с помощью своего приложения для Android и вызвать ее с вашего Android-кода.

Ответ 2

Есть пара ближайших препятствий:

  • Получение хорошего изображения отпечатка пальца будет иметь решающее значение. Согласно их сайту, fingerjet ожидает стандартные изображения отпечатков пальцев - например, 8-битные оттенки серого (высокая контрастность), сплющенные отпечатки пальцев. Если вы сделали снимки с отпечатками пальцев с камерой, пользователь должен был бы иметь плоскую прозрачную поверхность (стекло), чтобы вы могли сгладить отпечатки пальцев, чтобы сделать снимок. Затем ваше приложение обнаружит отпечаток пальца на изображении, преобразует его в формат, приемлемый для fingerjet. Такая библиотека, как OpenCV, поможет сделать это.

  • FingerJetFX OSE, похоже, не предлагает законсервированную поддержку Android - вам придется скомпилировать библиотеку для Android и использовать ее через JNI/NDK.

Оттуда, fingerjet должен предоставить вам компактное представление печати, которую вы можете использовать для сопоставления.

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