Egy nyomtatott kép felismerésére képes mobilalkalmazás a kamera, a képfeldolgozás és egy jól felépített adatbázis együttműködésére épül. A felhasználó lefényképez egy plakátot, könyvborítót, csomagolást vagy újságoldalt, az app pedig összeveti a látott mintát a korábban eltárolt képekkel. A fejlesztés során ezekre érdemes figyelni:
- gyors kamerakezelés;
- megbízható képfelismerés;
- egyszerű és érthető felhasználói felület;
- megfelelő adatvédelem.
Hogyan működik egy nyomtatott képet felismerő mobilapp?
A működés első lépése a kamera képének rögzítése. Az alkalmazás nem feltétlenül menti el véglegesen a teljes fotót, gyakran csak egy rövid ideig elemzi azt, majd jellegzetes részleteket keres rajta. A felismerési folyamat fő állomásai:
- kép beolvasása;
- perspektíva és fényviszonyok vizsgálata;
- fontos képrészletek kiválasztása;
- egyezés keresése az adatbázisban.
A rendszer általában nem egyetlen pixelről dönt. Inkább alakzatokat, éleket, kontrasztokat, szövegrészleteket és jellegzetes mintákat hasonlít össze. Egy plakát felismerésénél például a logó elhelyezése, egy karakter arca vagy egy különleges grafikai forma is fontos lehet. A jó eredményhez szükséges:
- stabil kézben tartott kamera;
- megfelelő felbontás;
- elegendő fény;
- lehetőleg teljesen látható nyomtatott felület.
A felismerés után az alkalmazás valamilyen választ ad a felhasználónak. Megjeleníthet egy termékleírást, videót, weboldalt, kuponkódot vagy hanganyagot. A találat mögött rendszerint egy azonosító áll, amelyhez külön tartalom kapcsolódik. Hasznos kimenetek:
- cím és rövid leírás;
- kapcsolódó weboldal;
- digitális extra tartalom;
- hibajelzés bizonytalan találat esetén.
A fejlesztés fő lépései és a szükséges technológiák
A fejlesztést érdemes egy pontosan körülhatárolt feladattal kezdeni. Más megoldás kell egy múzeumi képeslaphoz, mint egy sokféle csomagolást felismerő kereskedelmi alkalmazáshoz. A tervezés során tisztázni kell:
- milyen képeket kell felismerni;
- milyen távolságból működjön a kamera;
- szükséges-e internetkapcsolat;
- milyen eredményt kapjon a felhasználó.
A mobilos kliens elkészítéséhez használható natív Android- vagy iOS-fejlesztés, illetve keresztplatformos keretrendszer. A kamerakezeléshez a telefon saját képalkotó felülete, a képelemzéshez pedig külön könyvtár vagy felhőalapú szolgáltatás kapcsolható. Gyakori technológiai elemek:
- Kotlin vagy Swift;
- Flutter vagy React Native;
- OpenCV;
- TensorFlow Lite vagy más kész modell;
- REST API a szerveroldali kommunikációhoz.
A prototípus elkészítése után következik a tanítóképek és tesztképek gyűjtése. Ugyanarról a nyomtatott anyagról többféle fotót kell készíteni, mert a valós használatban változik a fény, a szög és a távolság. A fejlesztési ciklus fő részei:
- kezdeti mintaadatbázis összeállítása;
- működő kameranézet létrehozása;
- felismerési szolgáltatás bekötése;
- tesztelés valódi környezetben;
- hibák javítása és újramérés.
Képfeldolgozás, adatbázis és felismerési pontosság
A képfeldolgozás célja, hogy a rendszer a változó körülmények ellenére is megtalálja a lényeges képi jellemzőket. Elsőként gyakran méretezés, zajszűrés, kontrasztjavítás és perspektívakorrekció történik. Ezek a műveletek segítenek akkor, amikor:
- a fotó enyhén elmosódott;
- a papír ferdén látszik;
- a háttér zavaró;
- a megvilágítás egyenetlen.
Az adatbázisban minden felismerhető képhez célszerű egy stabil azonosítót rendelni. Ehhez kapcsolódhat a cím, a leírás, a céloldal és a verziószám. A képek tárolásakor gondolni kell a gyors keresésre és a frissíthetőségre is. Jó adatmodell például a következőket kezeli:
- képazonosító;
- vizuális jellemzők vagy lenyomat;
- kapcsolódó tartalom;
- módosítási dátum;
- aktív vagy archivált állapot.
A pontosságot nem egyetlen százalékos érték mutatja meg. Fontos külön mérni, hogy a rendszer hányszor találja meg a helyes képet, és hányszor ad téves találatot. A használhatóság javításához beállítható egy biztonsági küszöb, amely alatt az app inkább új fotót kér. A méréshez használható:
- találati arány;
- téves pozitív találatok száma;
- felismerési idő;
- sikertelen próbálkozások aránya;
- különböző fényviszonyok eredménye.
Mit tanultam a saját alkalmazásom teszteléséből
A saját prototípusom tesztelésekor azt tapasztaltam, hogy a laboratóriumi környezet túl jó képet mutat a működésről. Asztalon, egyenletes fényben és szemből készített fotókkal szinte minden minta könnyen felismerhető volt. A hétköznapi használat azonban több nehézséget hozott:
- csillogó magazinpapír;
- árnyékos helyiség;
- ferdén tartott telefon;
- részben takart kép;
- gyengébb kameraminőség.
A legtöbb hibát nem maga a felismerési modell okozta, hanem a felhasználói felület hiányossága. A tesztelők egy része túl messziről próbált fényképezni, mások nem tudták, hogy a teljes képet a keretbe kell igazítani. Ezért beépítettem néhány egyszerű segítséget:
- képernyőn megjelenő igazítókeretet;
- rövid fényképezési útmutatót;
- automatikus élesség- és fényellenőrzést;
- újrapróbálkozási gombot;
- érthető hibaüzeneteket.
A tesztelésből az is kiderült, hogy a gyorsaság legalább olyan fontos, mint a pontosság. A felhasználó néhány másodpercnél hosszabb várakozás után bizonytalanná válik, különösen akkor, ha nem látja, hogy az alkalmazás dolgozik. A végső változatban ezért ezekre helyeztem hangsúlyt:
- folyamatos töltésjelzés;
- kisebb és gyorsabban feldolgozható képek;
- helyi előfeldolgozás;
- gyorsítótárazott korábbi eredmények;
- világos válasz sikeres felismerés után.
Gyakori kérdések a képfelismerő mobilappokról
Működik-e internet nélkül? A válasz attól függ, hol fut a felismerési modell és hol található az adatbázis. Egyszerűbb, korlátozott számú képnél a teljes folyamat a telefonon is elvégezhető, nagyobb adatállománynál viszont szerverre lehet szükség. A választást ezek befolyásolják:
- képek száma;
- modell mérete;
- telefon teljesítménye;
- adatvédelmi elvárások;
- szükséges válaszidő.
Milyen nyomtatott felületeket lehet felismerni? Megfelelő előkészítéssel plakátok, könyvborítók, termékcímkék, szórólapok, képeslapok és csomagolások is azonosíthatók. A nagyon hasonló vagy gyakran változó grafikák több tesztet igényelnek. Különösen fontos:
- elegendő egyedi vizuális részlet;
- jó minőségű referenciafotó;
- stabil nyomtatási megjelenés;
- változatok kezelése eltérő adatként.
Mennyibe kerül egy ilyen alkalmazás elkészítése? A költség a funkciók számától, a felismerendő képek mennyiségétől és a választott infrastruktúrától függ. Egy egyszerű prototípus gyorsan elkészülhet, míg egy üzleti célú rendszerhez adminisztrációs felület, analitika, szerver és folyamatos karbantartás is kell. A legfontosabb költségtényezők:
- mobilplatformok száma;
- egyedi modell fejlesztése;
- felhőhasználat;
- tartalomkezelés;
- biztonsági és adatvédelmi feladatok.
Egy ilyen mobilalkalmazás elkészítése több terület összehangolását kívánja. A kamera önmagában kevés: szükség van megfelelő képfeldolgozásra, rendezett adatbázisra, jól megválasztott felismerési módszerre és sokféle valós tesztre. A sikerhez ezek adják a legfontosabb alapot:
- világos felhasználási cél;
- jó minőségű referenciaanyag;
- gyors és érthető működés;
- folyamatos mérés és javítás.