Melléklet: Az iman3 program előzetes leírása.
Iman 3.0 szoftverdokumentáció Tartalomjegyzék 1.
Az Iman rendszer......................................................................................................................2 1.1. Modulok..............................................................................................................................2 1.2. Modulok részletes leírása....................................................................................................2 1.2.1. Iman.exe .......................................................................................................................2 1.2.2. Interpreter.dll................................................................................................................3 1.2.3. Display.dll ....................................................................................................................3 1.2.4. SharedMem.dll .............................................................................................................3 1.2.5. Storage.dll.....................................................................................................................3 1.2.6. Features.dll ...................................................................................................................3 1.2.7. Recogn.dll.....................................................................................................................3 1.2.8. OpenCV dll-ek .............................................................................................................3 1.2.9. ImanIP.dll .....................................................................................................................3 1.2.10. Grab.dll.........................................................................................................................4 1.2.11. Gyorsító kártya rutinok ................................................................................................4 1.2.12. Keresztkorrelációs felismerési rutinok.........................................................................4 1.2.13. Template (minta) adathalmaz kezelő rutinok...............................................................4 1.3. Fejlesztőeszközök ...............................................................................................................4 2. Dedikált rendszer (SENTINEL)...............................................................................................4 2.1. Kiegészítő modulok ............................................................................................................4 2.2. A modulok részletes leírása ................................................................................................5 2.2.1. Sentinel.exe ..................................................................................................................5 2.2.2. Dedikált modulok (Input, Prepare, Detect, Identify)....................................................5 2.2.3. Threads.dll....................................................................................................................5 2.3. Megvalósítandó folyamatok................................................................................................6
-2-
1. Az Iman rendszer 1.1. Modulok A modulok kialakításának főbb szempontjai: - funkcionális egységet valósítsanak meg - egy kellően rugalmas felületen keresztül kommunikálhassanak egymással és az esetleges külső modulokkal - minél több modul legyen platform (operációs rendszer- és processzor-) független - magas szinten legyen programozható valamilyen script nyelven keresztül Modulok megvalósítása: Display.dll /Ábrázolás, felhasználói felület/
Iman.exe /főprogram/
OpenCV dll-ek /IP könyvtár/ ImanIP.dll /Plusz IP rutinok/
SharedMem.dll /Globális változók, konfigurációk/
Scriptek Scriptek, Scriptek Interpreter. dll által végrehajtva
Storage.dll /mentés, visszaolvasás/
Features.dll /Morfológiai paraméterek/
Recogn.dll /Felismerés/
Másik script hívása
Gyorsító kártya rutinok Grab.dll /Képdigitalizálás/
Külső felismerő rutinok (pl.CNN)
DLL hívások = platform függő modulok
= hardver függő modulok
1. ábra A szoftvermodulok folyamatvázlata
1.2. Modulok részletes leírása 1.2.1.
Iman.exe
Ez a főprogram, nincs grafikus felülete. Miután behívta a szükséges dll-eket, behívja a plusz menüket és a hozzájuk tartozó script-eket. A menüket átadja Display.dll alprogramnak megjelenítésre. A Display.dll felhasználói felülete által generált események egy része a főprogramban kezelődik le. Ha olyan menüpont hívódik meg, amihez van script, akkor a szoftvermodul a scriptet végrehajtatja Interpreter.dll alprogrammal.
-3-
1.2.2.
Interpreter.dll
A rendszer nagyon lényeges tulajdonsága, hogy menüket és azokhoz tartozó scripteket lehessen definiálni és futtatni a magas szintű programozáshoz. Windows platformra jó megoldás a Vbscript, amelyhez a Microsoft cég ingyenes ActiveX objektumot biztosít. Platform függetlenebb megoldások: A Pascal script alkalmazása, erre vannak freeware és shareware komponensek egyaránt. Hátránya, hogy nem minden processzorra van pascal fordító, előnye, hogy az interpreter kódja a rendelkezésre áll, tehát könnyen tovább fejleszthető. B PERL script alkalmazása, ezt szintén elég sok platformra megírták már. Kérdés, hogy hozzáférhető és más processzoron lefordítható-e az interpreter forráskódja. Nagy előnye, hogy hasonlít a C++ nyelvre, tehát a C++-ban megírt dll-eket könnyebb hozzá illeszteni.
1.2.3.
Display.dll
Itt történik a rendszerben használt objektumok, pl. képek, hisztogramok megjelenítése. Az Interpreter által generált debug információk is itt jelennek meg egy szöveges ablakban. Itt található a felhasználói felület is, amelyen keresztül befolyásolni lehet az Iman rendszer működését. A felhasználói felület eseményeket generál az Iman főprogram felé, amelyek nagyrészt ott kezelődnek le. Mivel a megjelenítés és a menürendszer rendszerfüggő, ez a modul platformonként más és más lehet.
1.2.4.
SharedMem.dll
Ez egy olyan modul, amely biztosítja globális változók és konfigurációk átvitelét az egyes scriptek és dll-ek között.
1.2.5.
Storage.dll
Itt találhatók a fájlból történő képbeolvasással illetve kiírással valamint a konfigurációmentéssel és visszaolvasással kapcsolatos rutinok. Az egyes rendszereken ez különbözőképpen történhet, (pl. nem fájlba hanem CMOS-RAM-ba).
1.2.6.
Features.dll
Itt történik a morfológiai paraméterek nyilvántartása. A morfológiai paraméterek számolása az OpenCV és az ImanIP modulokban történik.
1.2.7.
Recogn.dll
Itt történik az objektumok felismerése a morfológiai paraméterek alapján.
1.2.8.
OpenCV dll-ek
Ezek szabad forráskódú, képfeldolgozó és morfológiai paraméter számoló rutinokat tartalmazó könyvtárak. (Lásd: iplman.pdf)
1.2.9.
ImanIP.dll
Itt találhatók azok a képfeldolgozó rutinok, amiket az OpenCV-n felül kell megírni.
-4-
1.2.10.
Grab.dll
A képdigitalizálással kapcsolatos alapvető műveleteket, pl.Live, Grab stb. valósítja meg az éppen használt digitalizáló kártyára.
1.2.11.
Gyorsító kártya rutinok
Az Iman rendszer teljesen nyitott, bármilyen dll illeszthető a script-eken keresztül. Jelenleg a HEXIUM „Apolló” és az Alacron „Fastimage 1300” kártya rutinjai készülnek.
1.2.12.
Keresztkorrelációs felismerési rutinok
Template.dll
1.2.13.
Template (minta) adathalmaz kezelő rutinok
Tmplbase.dll
1.3. Fejlesztőeszközök Mivel az OpenCV könyvtárakat Microsoft Visual C++ - programozási nyelvvel fejlesztették, valamint C++ fordító minden rendszerre létezik, a legtöbb modulnál célszerű ennél a fejlesztőeszköznél maradni. A platformfüggő modulok fejlesztésére mindig a leghatékonyabb eszközt kell választani, Windows alatt ez lehet a Delphi, aminek most már van Linux-os változata is (Kylix). A Pascal script-eket futtató komponensek általában Pascal-ban íródnak, ehhez lehet a Delphi-t vagy a Free Pascal-t használni, ami szintén már elég sok platformon létezik. Modul neve
Programozási nyelv
Ajánlott fejlesztőeszköz
Iman.exe Interpreter.dll Display.dll
C++ Object Pascal vagy C++ Object Pascal vagy C++
SharedMem.dll Storage.dll ImanIP.dll Features.dll Recogn.dll Grab.dll
C++ C++ C++ C++ C++ C++
Microsoft Visual C++ 6.0 Free Pascal vagy VC++ 6.0 Delphi vagy C++ fordító (platformfüggő) Microsoft Visual C++ 6.0 Microsoft Visual C++ 6.0 Microsoft Visual C++ 6.0 Microsoft Visual C++ 6.0 Microsoft Visual C++ 6.0 Microsoft Visual C++ 6.0
2. Dedikált rendszer (SENTINEL) 2.1. Kiegészítő modulok Egy dedikált képfeldolgozó rendszernél az általános modulok mellett az alábbi plusz funkciókat kell biztosítani: A több szálon kell futtatni az egyes magas szintű folyamatokat B definiálni kell a szálak egymásra hatását (ki/bemenet, várakozási sorok)
-5-
A kiegészítő modulok megvalósítása és illesztése az Iman rendszerhez: Sentinel.exe /főprogram/ Threads.dll /többszálú folyamatok/
Iman alaprendszer dll-jei (Display, Storage, ImanIP, Grab, stb.)
Input /Bejövő képek egyesítése/ Prepare /Képszűrések, mozgásdetektálás/
SharedMem.dll /Globális változók, konfigurációk/
Egyéb külső dll-ek
Detect /Objektumok detektálása/ Identify /Objektumok azonosítása/
Dedikált DLL-ek, vagy scriptek
2. ábra A kiegészítő szoftvermodulok folyamatvázlata
2.2. A modulok részletes leírása 2.2.1.
Sentinel.exe
Ez a főprogram, amely a thread.dll alprogramban definiált folyamatokat indítja és hasonlóan az Iman.exe-hez üzeneteket fogad a Display.dll alprogram felhasználói felületéről.
2.2.2.
Dedikált modulok (Input, Prepare, Detect, Identify)
Ezek dll-ek, vagy script-ek, mindegyikben egy vagy több összetett eljárással (a modulok leírását lásd: Szoftver rendszerterv.doc -ban). Az eljárásoknak olyanoknak kell lenniük, hogy egymástól függetlenül, egy többszálú rendszerben is végrehajthatók legyenek. Az egyes modulok a SharedMem.dll-en keresztül cserélhetnek adatokat.
2.2.3.
Threads.dll
Itt általános várakozási sorokat lehet összeállítani. A sorok azt írják le, hogy egy adott eljárás melyik másik eljárás befejeződése után indulhat. Minden eljáráshoz tartozik egy szemafor, amely az eljárás felé jelzi, hogy mikor kezdődhet újra, illetve kifelé jelzi, hogy az eljárás mikor fejeződött be.
-6-
2.3. Megvalósítandó folyamatok A folyamatokat Threads.dll alprogramban lehet definiálni, minden folyamat egy ismétlődő ciklus, amely egy adott várakozási sor alapján ismételten meghívja a dedikált modulok eljárásait. Megvalósítandó folyamatok (lásd: Megvalósítandó funkciók.doc): A Monitorozás : Input -> Képmegjelenítés B Mozgás figyelés : Input -> Prepare -> Képmegjelenítés C Objektum detektálás: Input -> Prepare -> Detect -> Identify -> Képmegjelenítés