Masterfield

A Masterfield Oktatóközpont szakmai blogja. Minden, ami a tanfolyamokról kimaradt

Friss topikok

  • gyuria: Na végre, már nagyon vártam Már annyi téma összejött, hogy egy jó darabig biztos kitart :) (2008.10.24. 08:04) Elindultunk

Linkblog

Ujjlenyomatozás

2008.09.04. 09:33 | gyuria | Szólj hozzá!

Címkék: ujjlenyomat azonosítás fingerprint neurotechnology

Nemrégiben egy ügyviteli rendszerbe kellett ujjlenyomat azonosítást beépítenem a felhasználók számára, előzetes költségbecsléssel. A feladat először nem tűnt bonyolultnak, de utólag már látom, hogy mennyi munkával járt, így szerintem megér egy postot.

Tudtam, hogy a Microsoft rendelkezik valami saját ujjlenyomat olvasóval, ebből gondoltam, hogy a beépítés gyerekjáték lesz és nem drága az ügyfelek számára. Az első csalódás akkor ért, amikor rájöttem, hogy a Microsoft terméke bizony nem sok mindenre használható, számomra pedig semmire. Külső alkalmazásba nem lehet integrálni, gyakorlatilag csak arra jó, hogy website-okon beírja a jelszót, ha rátesszük az ujjunkat.

Alaposabb kutatásba kezdtem. Kiderült, hogy sok gyártónak van ilyen hardvere, de szinte mindegyik csak a saját eszközéhez gyárt API-t. Mivel egy dobozos termékhez kellett ezt a funkciót kifejleszteni, nem akartam egyik hardver gyártóhoz sem elkötelezni magam, több API-t kezelni pedig még annyira sem. Így találtam rá egy biometrikus azonosítással foglalkozó szoftver cégre, aki nagyon sok típusú ujjlenyomat olvasóhoz rendelkezik egy egységes API-val.

Ekkor jött a második komoly csalódás, ugyanis már az API is pénzbe került, a Standard változata 339 EUR. Ezután még minden számítógépre kell licenszet venni (kb. 40 EUR/licensz volt, 2008 szeptembertől sokkal olcsóbb lett), ahol használni akarom és természetesen maga a hardver sem olcsó. De hasonló árakat találtam mindenhol, és a trial alapján ez a cég jónak tűnt.

Mindenféle programnyelvre (Delphi 7, VB.NET, C#, Java, C++, Access, VB6, Linux GTK stb.) volt API-juk és jó Demo programok. Az ujjlenyomat beolvasás első lépése egy egyszerű scan, amelynek eredménye egy sima kép (NImage osztály). A kép letárolása feleslegesnek tűnt, de mivel jópofa dolog az alkalmazásban megjeleníteni a képet, így mentettem azt is. A képből az algoritmus kikeresi (NFExtractor osztály) az egyedi pontokat, vonalakat, szögeket, irányokat és egy ún. minutiae-t vagy kivonatot készít belőlük (NFRecord osztály). Ebből pedig egy Byte tömb készül (NFPackedRecord). Na ezt érdemes igazából letárolni, mert az azonosításhoz úgyis ez kell és ez a legkisebb helyigényű. (3-5kB).

A keresésre és az azonosításra is külön osztály van (NFMatcher). A felismerés maga egy állítható valószínűség alapján megy. Tehát ha akarjuk, a cucc nagyon-nagyon ritkán látja két ember ujjlenyomatát azonosnak, de így előfordulhat az is, hogy bizony ismételni kell a beolvasást, mert ugyanannak az embernek kétszer egymás után beolvasott ujjlenyomatait sem találja egyezőnek. Ugyanígy beállíthatjuk úgy is, hogy gyakrabban előfordul a téves felismerés, de szinte soha nem kell ismételni a beolvasást. Minden alkalmazáshoz meg kell találni a megfelelő egyensúlyt.

Sajnos a tapasztalat az, hogy a képet is és a kivonatot is le kell tárolni. A kivonatot azért, mert ez alapján történik az azonosítás és ha egyezést keresünk, de nincs kivonat, akkor minden letárolt képből először kivonatot kell készítenünk, ami időigényes. A kép pedig két ok miatt kell: egyrészt meg tudjuk mutatni a felhasználónak (ez ugye menő), másrészt gyakran változik a képből kinyerhető kivonat technikája, ahogy fejlődik a technológia. Ez velem is megesett már. És mivel a képek tárolásra kerültek, a szoftver frissítésben ki tudtuk azt is küldeni, hogy minden letárolt képhez generálja újra a kivonatokat is.

A licenszelésük és az automatizált telepítésük külön szívás volt:

  • csak online lehetett aktiválni, maximális aktiválási limittel (2 vagy 3 azt hiszem)
  • egy saját service-nek folyamatosan futnia kell, hogy használni lehessen
  • újraaktiválás előtt deaktiválni kellett a régi gépen és ezt elküldeni nekik, hogy a maximális aktiválások számát megnöveljék
  • ha egy gép elszállt és nem tudtad deaktiválni a licenszt (ügyfeleknél azért gyakran előfordul), akkor úgy kell könyörögni nekik, hogy ugyan már hagy aktiváljál újra azzal a licensszel egy másik gépen

Az API, amivel dolgoztam, rengeteg egyéb számomra kevésbé fontos dolgot is tudott, ennek megfelelően az ára is igen magas. Ennek a cégnek egyébként van retina, arc és egyéb különleges biometrikus felismerő algoritmusa is - részben béta állapotban, sajnos mindegyik külön megvásárolandó, igen borsos áron.

Összességében a beépítés teljesen korrekten, és mindent lekezelve sokkal több időt vett igénybe, mint terveztem (kb. 5 nap). Ehhez jön még a keresés ideje, amire remélem ennek a bejegyzésnek az ismeretében másoknak már nem lesz szüksége.

Ja, és persze két ismert általános tévedés is cáfolásra került:

  • Minden ujjunknál különbözik az ujjlenyomat, így ugyanazt az ujjunkat kell használni (vagy minden ujjat külön letárolni és mindegyikhez képest vizsgálni)
  • A filmekben, amikor pörög a képernyőn a sok ujjlenyomat, baromság. Az algoritmus sokkal gyorsabb egy átlagos pc-n is, ha kitennénk minden képet, jelentősen lassítaná a felismerést (még esetleg 89-ben tudott úgy működni).

A bejegyzés trackback címe:

https://masterfield.blog.hu/api/trackback/id/tr20729419

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

Nincsenek hozzászólások.
süti beállítások módosítása