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/ SharedMem.dll /Globális változók, konfigurációk/ Storage.dll /mentés, visszaolvasás/ Iman.exe /főprogram/ Scriptek Scriptek Scriptek, Interpreter. dll által végrehajtva Másik script hívása OpenCV dll-ek /IP könyvtár/ ImanIP.dll /Plusz IP rutinok/ Features.dll /Morfológiai paraméterek/ Recogn.dll /Felismerés/ DLL hívások Gyorsító kártya rutinok Grab.dll /Képdigitalizálás/ Külső felismerő rutinok (pl.cnn) = platform függő modulok = hardver függő modulok 1.2. Modulok részletes leírása 1. ábra A szoftvermodulok folyamatvázlata 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 C++ Microsoft Visual C++ 6.0 Interpreter.dll Object Pascal vagy C++ Free Pascal vagy VC++ 6.0 Display.dll Object Pascal vagy C++ Delphi vagy C++ fordító (platformfüggő) SharedMem.dll C++ Microsoft Visual C++ 6.0 Storage.dll C++ Microsoft Visual C++ 6.0 ImanIP.dll C++ Microsoft Visual C++ 6.0 Features.dll C++ Microsoft Visual C++ 6.0 Recogn.dll C++ Microsoft Visual C++ 6.0 Grab.dll C++ 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: Threads.dll /többszálú folyamatok/ SharedMem.dll /Globális változók, konfigurációk/ Sentinel.exe /főprogram/ Input /Bejövő képek egyesítése/ Prepare /Képszűrések, mozgásdetektálás/ Detect /Objektumok detektálása/ Iman alaprendszer dll-jei (Display, Storage, ImanIP, Grab, stb.) Egyéb külső dll-ek 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