Jó volt, szép volt.
Kiemelt támogatók
BIG FISH
Pentaschool
WISH
Macasoft
G'Roby
23vnet
Kiskapu
 

  5k – górcső : 5k Recognition

screenshotelkövette: Varga Gábor és Tóth Gábor
LEÍRÁS


Leírás

         ===========================================
                       5K RECOGNITION
         ===========================================
            Szövegfelismerő script PHP 4.3.0-hoz.


Funkció
-------

  A script a felhasználó által elkészített képen végez karakterfel-
  ismerést. Felületet biztosít szakaszokból és tört vonalakból álló
  kép elkészítésére, valamint értelmezi az kész ábrát.
  

Használat
---------

  A kezelőfelület közepén található világoskék téglalap a rajzmező.
  Ezen kattintva jelölhetjük meg a rajzolandó pontot, mely az oldal
  frissülése után meg is jelenik. Ismételt kattintásokkal adható meg
  a törtvonal következő pontja. Ilyen törtvonalakból rajzolhatod ki
  az angol ábécé nyomtatott nagybetűinek valamelyikét, vagy akár egy
  teljes szót. Ha új betűt, vagy egy betű új alkotóelemét szeretnéd
  elkezdeni, kattints az ÚJ VONAL linkre. Ha egy pontot rossz helyre
  tettél, vagy elfelejtettél új görbét kezdeni, használhatod a
  VISSZAVONÁS funkciót. A TÖRLÉS a teljes rajzmező kiürítésére szolgál,
  ezt nyomd meg, ha új szót kívánsz leírni.
  Ha elkészültél a leírt szöveggel, az ÉRTELMEZÉS linkre kattintva
  megtudhatod, hogy a script milyen karaktersorozatot vélt felismerni
  a kézírásodban. Kérünk, hogy törekedj nyomtatott nagybetűk írására,
  ugyanis a script ezeket keresi.


Működés
-------

  A script az ÉRTELMEZÉS link meghívásakor fut le, és a megrajzolt
  szöveget koordinátákkal kódolva kapja meg. A koordinátákat tömbbe
  rendezi annak megfelelően, hogy melyik görbe koordinátája, továb-
  bá, hogy x, vagy y koordináta-e. Az így szétválasztott görbéket
  megvizsgálja, hogy azok vajon egy betű alkotóelemei-e, vagy nincs
  köztük összefüggés. Az ily módon szortírozott görbehalmazokat -
  melyek az egyes betűk -, egy tömbbe rendezve értelmezi tovább.
  Az angol ábécé minden betűjéhez tartozik egy minta, melyek kódolt
  formájából ezen a ponton képeket állít elő a script. A minta
  kezelése GD-vel történik. A minták 50×50-es szürkeárnyalatú képek,
  melyek formájukban a mintázott betűre hasonlítanak, ám szórtabbak,
  hogy a felhasználók kézírása közti különbségeket tolerálják. A
  mintákkal való összevetés első lépése a görbehalmazok 50×50-es
  méretűvé konvertálása, mely még mindig a koordináták alapján
  történik. Ezután az egyes görbecsoportokat GD-vel kirajzolja a
  script, és a létrehozott minták mindegyikével összehasonlítja őket.
  Az összehasonlítás a legkisebb négyzetek elvével történik, melynek
  lényege, hogy minden képpontra veszi a minta és a görbecsoport közti
  különbséget, képezi ezek négyzetösszegét, majd amelyik mintára ez a
  legkisebb, az annak megfelelő betűt adja eredményül. Miután minden
  görbecsoportot megvizsgált, azok eredményét egy stringbe fűzi, és
  azt visszaadja értelmezésként.
  Bővebb tudnivalók a függvényreferenciában.


Cél
---

  A script lényege, hogy demonstrálja az egyszerű statisztikai elvek
  robusztusságát és gyorsaságát. A teljes script kitömörítve kb. 10K
  méretű, mely elég kicsi ahhoz, hogy egyszerű érintőképernyős eszkö-
  zökön, esetleg palmtopokon vagy más, a billentyűzetet kiváltó -
  kézírás alapú - technológiák alapjául szolgáljon. Nem titkolt cél,
  hogy a konferencia révén teret nyissunk az ilyen egyszerű scripteknek
  a tömeges felhasználás felé. Reméljük segítségére lesz ennek a forrás-
  kód nyílttá tétele.


Függvényreferencia
------------------

parse_coord_string()
  A felhasználó által megadott koordináták sorozatából előálló
  görbéket tömbökbe rendezi, melyek külön tartalmazzák az x és y
  koordinátákat. Értelmezés során ez a script végzi a karakterek
  50×50 pixeles méretűre történő transzformálását is.

draw_image()
  Megrajzolja a görbéket tartalmazó tömbök által leírt képet.
  Minták generálásakor, illetve értelmezéskor szórást visz a
  folyamatba.

create_pattern()
  A függvény tartalmazza a mintákat leíró kódokat, melyek a betűk
  pontjait egy 5×5-ös mátrixban definiálják. Ezeket koordinátákká
  alakítja, majd ezekből megrajzolja a betű képét. Ezeket elemzi,
  és egy tömbben adja vissza az eredményt. Egy betűnek így több
  minta is megfelel, figyelembe véve a betűk többféle írásképét.

analyse()
  Ez a függvény végzi a képek értelmezését. A kép pixelei szürke
  komponensének értékeiből készít tömböt.
  
convex_husk()
  Konvexburok-függvény. A kapott x koordinátatömbből és a hozzá
  tartozó y koordinátákat rendre tartalmazó tömbből előálló pontok
  konvex burkát állítja elő.

convex_arr()
  A kapott két alakzat (x, y koordináták és az indexeket
  megadó tömb) kitöltött sokszögét készítí el későbbi
  összevetés céljából.

cmp()
  Az usort függvény rendező algoritmusa, mely a betűk, mint görbe-
  csoportok görbéit rendezi.

break_chars()
  A kapott koordinátasorozatból előálló görbék csoportjait
  képzi a fenti 3 függvény segítségével. Az elv, hogy minden
  görbecsoport összefüggő, ha konvexburkaiknak van közös
  pontja, de előzetes szűrésként megnézi, hogy az x koordináták
  közt van-e átfedés. A kimenete egy tömb, melyben a betűk, mint
  görbehalmazok a bemenő string formátumában szerepelnek. A
  betűket x tengely mentén sorba rendezi.

match()
  A betű értelmezett képének és keresi a párját a mintákat tartalmazó
  tömbből, a tömbök elemei négyzetes különbségei összegének a minimumát
  keresi, és azt a betűt adja, amelyikhez tartozó minta a legkisebb
  eltérést mutatja az illesztendő betűtől.


Készítők
--------

  Varga Gábor (vargusz##kukac##fazekas.hu)
  Tóth Gábor (totge##kukac##startadsl.hu)
  Budapest, 2003.03.10.
Valid XHTML 1.0! Valid CSS!