Jegyzet2009G

A VIK Wikiből
Ugrás a navigációhoz Ugrás a kereséshez

Ez az oldal a korábbi SCH wiki-ről lett áthozva. Az eredeti változata itt érhető el.

Ha úgy érzed, hogy bármilyen formázási vagy tartalmi probléma van vele, akkor kérlek javíts rajta egy rövid szerkesztéssel.

Ha nem tudod, hogyan indulj el, olvasd el a migrálási útmutatót


2009-es órai jegyzet by G és Z

1. előadás (2009. 02. 09.)

Az emberi látás jellegzetességei

  • Történelmi érdekesség: a görögök úgy képzelték, hogy a szemből valamiféle részecskék áramlanak ki, és azok tapogatják le a képet.
  • A számítógépek 3 színcsatornával dolgoznak, de a színinformációnak nem minden része azonos fontosságú: ha egy képen pl. a kék csatornát erősen elkenjük (simító szűrő), attól még jól felismerhető marad a kép. Ennek részben a szem logaritmikus érzékenysége az oka.
  • Ha f fényességen vizsgáljuk az érzékenységi küszöböt (vagyis, hogy milyen [math] \Delta f [/math]-re lesz már f és [math] f+\Delta f [/math] megkülönböztethető), akkor azt tapasztaljuk, hogy a [math] (\Delta f)/f [/math] arány közel állandó. Ez az arány a Weber-tört.
  • Az érzékelhető kontraszt függ a síkfrekvenciától is: ha nagyon magas (sűrűn váltakozó sávok), vagy nagyon alacsony (lassú változások), akkor kevésbé érzékeljük, mint ha közepes lenne. Ez a színérzékelésnél kicsit különbözik: ott alacsony frekvenciás változásokat (hosszú csík, egyik végétől a másikig fokozatosan vált pirosból zöldbe) is könnyen észlelünk.

Képfeldolgozás matematikai alapjai

  • Digitális képek készítéséhez mintavételeznünk kell az eredeti, analóg jelet. Itt nagy a jelentősége Shannon első és második törvényének: az első kimondja, hogy ha a képen legfeljebb f frekvenciájú komponensek vannak (vagy csak azok érdekesek számunkra, és így a többit el tudjuk távolítani), akkor legalább 2f frekvenciával kell mintavételezni, hogy ne veszítsünk információt (egyértelműen visszaállítható legyen a mintavételezett jelből az eredeti). A második törvény adja meg a visszaállítás módját: ideális aluláteresztő szűrőn kell átfuttatni a mintavételezett jelet (ennek sin x/x jellegű impulzusválasza van).
  • A gyakorlatban a digitálisból analógba alakításnál nem ideális szűrőt használunk, hanem egyszerű nulladrendű tartót.

2. előadás (2009. 02. 12.)

CCD-k tulajdonságai:

  • Kvantumhatások: határt szabnak, hogy legalább mekkora fény lesz már érzékelhető. Az érzékenységet az egységnyi fényteljesítmény által keltett árammal adják meg (A/W).
  • Spektrális érzékenység: az egyes hullámhosszakon való érzékenysége más, mint a szemé, ezért az érzékelt színek hamisak lesznek.
  • Lineáris érzékenység: adott fényenergia mindig kb. ugyanannyi elektront üt ki, ezért a CCD-ben tárolt töltés a fényesség lineáris függvénye, ellentétben a szem közel logaritmikus karakterisztikájával, így a fényességek nem fognak a szem által érzékelteknek megfelelni.
  • Blooming (virágzás): egy pixel kondenzátorán gyűlő töltés "átfolyhat" a szomszédosakba (bizonyos okok miatt főként oszlopok mentén), ezt valamilyen nemlineáris módszerrel korrigálni kell (lásd pl. az I épület csillogásának hatását a műhold optikájára: Google Maps). Létezik hardveres korrekció is (antiblooming gate).
  • Sötétáram: fény nélkül is gyűlik valamennyi töltés a kondenzátorban, a hőmérséklettől függ az áram. Kis fényerőnél, hosszú expozíciós időnél nagy lesz a hasznos információhoz képest a zaj.
  • A CCD felülete lényegesen kisebb a hagyományos fotólemezénél, és csak egy része fényérzékeny. Minden pixelen mikrolencse irányítja nagyobb területről a fényt az érzékeny részre, és minden pixelen színszűrő is van (vörös, zöld, kék) egy adott minta szerint. A fotodiódák jó elhelyezésével növelhető a fényérzékeny felület aránya.
  • PSD (Position Sensitive Device) detektorok: fogjunk egy hosszú, keskeny téglalap alakú fotodiódát. Ha egy ponton megvilágítjuk, a keltett áram egy része az egyik vége felé, a másik része a másik vége felé fog lefolyni, és a két áram aránya a pont és a két szél közti szakasz ellenállásától, vagyis hosszától függ, így a két áram különbségéből és összegéből a teljes fényerősség és a pont helye is számítható. A módszer két dimenzióban is működik. Egy ilyen eszköz felhasználható 3D kamera készítésére (azaz egy felület letapogatására pontszerű fényforrással).
  • Wikipédia: PSD

Színek, fényforrások

  • A fény akkor színes, ha nem azonos minden hullámhosszon az intenzitás. A fény elsődleges forrásának az izzó testet definiáljuk, ennek általában folytonos spektruma, gyakran ún feketetest-sugárzási spektruma van. Nem ilyen pl. a lézer (monokróm) és a fénycső (folytonos, pár kiugró vonallal) spektruma.
  • A "hideg-meleg" szín fogalmát a megszokottal ellentétesen kell itt használni, ugyanis a vörös a legnagyobb hullámhosszú, így legkisebb energiájú (látható) fény, a kék a legnagyobb energiájú, így az izzó test hőmérsékletének növelésekor a spektrum a kék felé tolódik.
  • A színek kezelésére két alapvető modell van:
    • A fényt a teljes spektrális eloszlásával jellemezzük. Ekkor a kibocsátott fény spektrumát meg kell szorozni a közegével, amin áthaladt, és a felületével, amiről visszaverődött, így kapjuk a szembe jutó spektrumot.
    • A fényt pszichofizikai szemszögből, a keltett érzet alapján határozzuk meg. A retina sejtjei miatt három alapvető érzet kombinációjaként áll elő minden fény. Ezzel a szemléletmóddal dolgozunk a továbbiakban.
  • A színkeverésre ekkor két alapvető módszer adódik: a meglévő színt továbbszűrjük, kivonunk belőle (szubsztraktív) vagy hozzáadunk (additív).
  • Megadható, hogy a retina melyik sejtja melyik hullámhosszra mennyire jön ingerületbe, és így kapunk három függvényt (ezeket sok kísérlettel mérték ki közelítőleg); ezek maximumhelyei egy piros, zöld, és kék árnyalatnál (hullámhossznál) vannak.
  • A CIE definíciója szerint a színek három, általuk megadott hullámhosszú fényből keverhetők ki. Végigmentek a spektrumon, és mindegyikhez kimérték, a három hullámhosszt milyen arányban kell kombinálni, hogy a keltett színérzet azonos legyen, így kaptak három függvényt, amik az adott hullámhosszhoz tartozó trikromatikus komponenseket megadják. Ezekből bizonyos átalakítások után (részleteket lásd a Wikipédia cikkben) kaphatók az adott színhez tartozó XYZ koordináták.
  • Wikipédia: CIE 1931 színtér
  • Egy adott spektrális eloszlású fény színérzetét jellemző XYZ koordinátákat úgy lehet megkapni, ha az eloszlást rendre a három bázisfüggvénnyel beszorozva integráljuk.
  • Ha maradunk a háromféle fény keverésénél, akkor ezek lehetséges keverékeit (csak az arányokra figyelve) egy háromszögön lehet ábrázolni: ennek középpontja az 1:1:1 arányú keverék, csúcsai a csak az egyik komponenst tartalmazó színek (vagyis a három megadott hullámhosszú szín). A fények mennyiségeit úgy normáljuk, hogy a középpontba a fehér kerüljön (vagyis, ha R, G, B intenzitású fényeket kell keverni, hogy a szem fehérnek lássa, akkor a háromszögben az r/R, g/G, b/B számok alapján helyezzük el a színeket, így a fehér lesz az 1, 1, 1 által meghatározott pontban, azaz középen).

Színmodellek

  • A színeket többféle számhármassal is leírhatjuk; ezek a leírási módok a színmodellek.
  • HSB: fogjuk a színháromszöget, és kiegészítjük egy függőleges tengellyel, amin a teljes fényerősség van. Így egy kettős gúlát kapunk; azért nem hasábot, mert a fényerő túlzott növelésével és csökkentésével is csökken a szem színmegkülönböztető képessége, így a legnagyobb és legkisebb fényerőnél is egy ponttá zsugorodik a háromszög (fekete és fehér). Egy pontját az alakzatnak 3 számmal jellemzünk: a ponton át fektetünk egy vízszintes síkot, a pontot pedig összekötjük a sík középpontjával (a tengelymetszettel). H (Hue, árnyalat): a középpontból milyen irányban látszik a pont. S (Saturation, telítettség): a középponttól mért távolság. B (Brightness, fényesség): a pont magassága. A HSV, HSL, HSI rövidítések (Brightness helyett Value, Luminance, Intensity) hasonló vagy azonos modelleket jelentenek.
  • CMYK (Cyan, Magenta, Yellow, Key): nyomtatókban alkalmazzák, a szubsztraktív keverésre épül.
  • Színterek: mivel minden megjelenítő kicsit más színeket ismer, és máshogy jeleníti meg a színeket, ezért az eszközfüggetlen színmegjelenítéshez szükség van egy közös referenciára, erre szolgálnak a színterek.

Visszaverődés

  • A szem/kamera által érzékelt képet több hatás együttese alakítja ki: vannak a megvilágító fényforrásnak, a fény által átjárt közegnek, a megvilágított tárgynak és az érzékelőnek is jellemzői; kérdés, hogy az érzékletből hogyan tudunk az objektumra (annak alakjára, színére, ...) következtetni.
  • Az objektumot felfoghatjuk, mint egy kétdimenziós domborzatot. Ekkor (Lambert visszaverődést feltételezve) ennek a függvénynek a parciális deriváltjaitól fog függeni, hogy hol milyen világosnak látszik. Ha a világosság-értékekből számoljuk vissza az objektum alakját, az a shape from shading.

3. előadás (2009. 02. 16.)

Koordináta-transzformációk

  • A grafikából tanultakhoz hasonlóan itt is homogén koordinátákkal dolgozunk, így a háromdimenziós tér lineáris, affin és projektív transzformációit 4x4-es mátrixokkal írhatjuk le. (Megjegyzés: itt a grafikával ellentétben a "vektorok oszlopvektorok, és a mátrixokkal balról szorzunk" konvenciót követjük.)
  • Nagy lesz a jelentősége a transzformációk invertálásának (ugyanis a leképzéseket is transzformációkkal írjuk le, és a képből az eredeti objektumra szeretnénk következtetni). Ha a mátrix determinánsa nullához közeli, akkor (mivel az inverzmátrix elemeinek kifejezésében a determinánssal osztani kell) nagy lesz a számítási pontatlanság.
  • Bizonyos forgatásoknak külön neve is van: az x tengely körüli a pan, a z körüli a tilt.

Kamera-modellek

  • Mivel a leképzésben lényeges szerepe van a kamerának, ezért modellezni kell, hogy hogyan képez le. 2 alapvető modell használatos.
  • Az első modell nagyon primitív, és ezért ritkán használható, ekkor a leképzést egyszerű párhuzamos vetítésnek tekintjük. Például mikroszkópnál lehet értelme használni.
  • A másik modell középpontos vetítéssel dolgozik (mintha pinhole kamerával dolgoznánk). Ha a z=0 síkra vetítünk, és a vetítési középpont a [math] (0, 0, \lambda) [/math] pontban van ([math] \lambda [/math] a fókusztávolság), akkor a transzformáció: [math] \left[ \begin{array}{cccc} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 0 & 0 \\ 0 & 0 & -1/\lambda & 1 \end{array} \right] [/math]
  • Ez a mátrix nem invertálható, ugyanis a leképzés nem egy-egyértelmű, egy pont többnek a képeként is előáll, amik egy (vetítési középponton átmenő) egyenesen helyezkednek el. (Megjegyzés: a diasorban szereplő mátrix azért tér el ettől, mert ott két lépésben van kezelve a vetítés: az első az ottani mátrix, a második a z koordináta kinullázása. Ezt a két műveletet egybefűzve kapjuk az itt szereplő mátrixot.)
  • Ennek a sztereo látásban is van jelentősége, ugyanis általános esetben (nem pinhole kamera) a két kép pontjait bonyolult megfeleltetni egymásnak (szemantikus módszerekkel lehetséges), itt viszont az egyik vetület pontját a másik vetületen a geometria miatt csak egy egyenesen kell keresni. A sztereo látásnak ez a modellje az epipoláris geometria.
  • A fentiekhez viszont pontosan ismerni kell a kamera helyét, helyzetét a térben, valamint a paramétereit (fókusztávolság, stb.), ez nem triviális, mozgó kamera esetén nagyon bonyolult is lehet.
  • A vetítési transzformáció egyszerűbb közelítéseként használatos a gyenge perpektíva: a mátrixban lévő reciprokos tagot nem vesszük figyelembe. Ennek akkor van értelme, ha viszonylag kis tértartományt akarunk leképezni.
  • A valódi kamerák sokkal bonyolultabb módon vetítenek, a legegyszerűbb, gyakorlatban már használható modell is 9 optikai paramétert tartalmaz.

Monitorok működése

  • Monitorok fő paraméterei: képátló (általában inch-ben, kb. 2.54cm, megadva), képarány (általában téglalap, de a képfeldolgozásban mégis négyzetes képekkel szoktunk dolgozni), felbontás, színmélység (egy időben megjelenített színek száma), képfrissítési frekvencia (állókép/sec, az 50Hz-et tudatosan már nem, de tudat alatt még érzékeljük).
  • CRT: fókuszált elektronsugárral villant fel képpontokat. A fókuszálás, megfelelő eltérítés fontos. Azért, hogy mindegyik színt csak a hozzá tartozó elektronágyú villantsa fel, árnyékmaszk kell, amit úgy kell megtervezni, hogy összességében minél nagyobb legyen a "hasznos" sugarak aránya (a fényerő miatt).
  • LCD: több fajtája van, az egyik a TFT, ezt először projektorokban alkalmazták.
  • Dikroikus tükör: az LCD projektorokban alkalmazzák. Olyan tükör, ami a különböző hullámhosszokat különböző irányba veri vissza.
  • DMD: digital micromirror device.
  • DLP projektor: felváltva vetíti ki a színeket, van benne egy színes kerék, ami meghatározza, éppen melyiket.

3D megjelenítők

  • A mélységérzékelésben fontos tényező, hogy a két szem különböző irányokból látja a tárgyat, és a két vetület kombinálásából az agy tud a 3. dimenzióra következtetni. Ezért az élethű 3D megjelenítéshez a két szemnek különböző képeket kell vetíteni.
  • Fontos paraméter az ún. parallax: milyen szögben kell állnia a két szemnek, hogy valószerűnek tűnjön a látvány (ez nyilván annak függvénye, honnan nézve készült a két szemnek vetített kép). Ha ez túlzottan eltér a természetestől, az fárasztja a szemet.
  • A két szem képei szétválaszthatóak szín alapján: ez az anaglyph módszer. Leggyakoribb formájában az egyik szem képe vörös, a másiké kék, és ezek egyszerűen egymásra vannak vetítve. Megfelelő színű szűrőkkel nézve mindkét szem csak a saját képét látja, szürkeárnyalatosan. Fejlettebb verziójában mindkét szemhez van rendelve egy piros, egy zöld és egy kék hullámhossz, és a szem előtti szűrők ennek megfelelően bonyolultabbak, viszont ez színes képet ad.
  • A két kép polarizáció alapján is szétválasztható, pl. az egyik szemé függőlegesen, a másiké vízszintesen poláros fénnyel van vetítve (ehhez speciális vászon kell, ami polarizációt megtartó módon veri vissza a fényt). Hátránya, hogy a fej forgatásakor összekombinálódnak a képek, ezért használnak helyette cirkulárisan polarizált fényt is.
  • Az eddigiek passzív sztereo módszerek voltak, mert szemekbe jutó fényt passzívan szűrték. Aktív módszer például, mikor a videó minden második képkockája szól az egyik szemnek, és olyan szemüveget visel a néző, aminek mindkét lencséje csak minden második képkockánál átlátszó.
  • A 3D megjelenítésben kritikus, hogy a videó tárolása, átvitele többb adatot jelent, valamint a szűrés miatt sokkal kisebb lehet a szembe jutó fényerősség, mint egyébként (ezért nagyobb teljesítményű projektor kell).
  • Lentikuláris megjelenítő: speciális, apró bordák segítségével választja szét a két képet.

4. előadás (2009. 02. 19.)

Bevezető a képfeldolgozásba

  • Az egyszerűség kedvéért bináris képekkel foglalkozunk (minden pixel fekete vagy fehér). Ezek sok gyakorlati helyzetben jól használhatók, pl. futószalagon érkező terméket átvilágítjuk, és a vetületének a kontúrját figyeljük (Automated Optical Inspection). Tárolásuk kicsit nehézkes, mert vagy pocsékolunk, és minden pixelt egy bájtban tárolunk (8x méret), vagy egy bájtba több pixel adatait pakoljuk (ekkor macerás bitműveletek kellenek a kezeléséhez).
  • Általában bizonyos kérdésekre keressük a választ, pl. "hol van a tárgy?" (hogy egy kar meg tudja fogni). Ezekhez először definiálunk egy tulajdonságot (hely), majd ahhoz egy matematikai mértéket (pl. egy objektum helyét a súlypontjával definiálhatjuk).
  • Ha feltesszük, hogy a tárgy egy homogén anyagú, mindenhol azonos vastagságú lemez, akkor a tárgy súlypontját megkaphatjuk a vetületének súlypontjából. Ez utóbbinak koordinátáit két integrállal számítjuk ki: [math] x_s = \frac{1}{T}\int\int x b(x, y) dx dy,\; y_s = \frac{1}{T}\int\int y b(x, y) dx dy [/math] ahol b(x, y) a kép értéke (1 vagy 0) az (x, y) helyen, T a tárgy területe ([math] T=\int\int b(x, y) dx dy [/math]). Az integrálok itt és a továbbiakban is az egész képen való integrálást jelentenek. Ez a két integrál az ún. elsőrendű momentumok (mivel az x, y-ból összerakható elsőfokú polinomokkal szoroztuk a kép függvényét, és így integráltunk), a terület a nulladrendű momentum.
  • Ez azért alkalmas a "hely" leírására, mert minden tárgyra van értelme (pl. a "középpont" is értelmes definíció lenne, de csak bizonyos szimmetrikus alakzatoknál használható), és eltolásnál, elforgatásnál a súlypont a "tárggyal együtt" mozog (invariáns).
  • A helyzethez (orientációhoz) is hasonló mértéket keresünk: legyen minden alakzatra értelmes, eltolásnál, forgatásnál a tárggyal együtt mozogjon. A definiáláshoz egy fizikai fogalmat használunk: ha egy testet egy tengely körül forgatni akarjuk, akkor lesz egy (tengelytől függő) tehetetlenségi nyomatéka. Ha megkeressük azt a (képsíkban fekvő) tengelyt, ami körül a legkisebb ez a nyomaték, az rendelkezik a kívánt tulajdonságokkal. Kiszámolása: először eltoljuk a tárgyat, hogy a súlypont az origóba kerüljön, majd kiszámoljuk a másodrendű momentumokat és a másodrendű keresztmomentumot. Ezek hasonló integrálok, x és y helyett a függvényt rendre [math] x^2 [/math]-tel, [math] y^2 [/math]-tel és xy-nal szorozva.
  • A továbbiakhoz szükségünk lesz a vetület fogalmára. A kép egy vetülete egy egyváltozós függvény, amit az eredeti kétváltozósból vonalmenti integrálással kaphatunk. Pl. az y tengelyre vett vetületet úgy kapjuk, hogy az x változó mentén integrálunk, így a kapott kifejezés már csak y-tól fog függeni: [math] p_y(y)=\int b(x, y) dx [/math]
  • A momentumok meghatározásához nem feltétlenül van szükségünk az eredeti képfüggvényre. Például a terület meghatározásához elég egy vetület is: [math] T=\int\int b(x, y) dx dy = \int \left( \int b(x, y) dx \right) dy = \int p_y(y) dy[/math] (bármely egyenesre vett vetületből kifejezhető). A két elsőrendű momentumhoz már két vetület kell: pl. az x és y irányban vett vetületekből egyszerűen kifejezhetőek, a területhez hasonlóan. A három másodrendű momentumhoz három kell, pl. x, y tengelyekre és x=y egyenesre vett vetületek megfelelőek.
  • A fenti képletek egyszerűen átvihetők a gyakorlatban jellemző, folytonos helyett diszkrét képekre; ekkor az integrálok helyett szummák lesznek.
  • A gyakorlatban nem célszerű az egész képet egyszerre, tömörítetlenül memóriában tartani. Mivel jellemzőek a nagy, összefüggő, egyszínű területek, ezért jól használható a futáshossz-kódolás. Feltéve, hogy a kép bal szélén csupa nulla van, minden sorban tároljuk, hány nullával kezdődik, majd hány egyes következik, majd hány nulla, stb. (az azonos számokból álló "futamok" hosszát). A tömörített adatsorból visszafejtés nélkül is hatékonyan meghatározhatók bizonyos vetületek, így a momentumok is.
  • A függőleges tengelyre vett vetület úgy számítható, hogy minden sorban minden párosadik számot összeadjuk, megkapva a sorban lévő összes egyes számát. Mivel csak egyesek és nullák vannak, ezért a sorban lévő összes egyes száma egyenlő az egész sor összegével, vagyis a kívánt vetülettel. A vízszintes tengelyre és x=y egyenesre vett vetületek előállítása kicsit bonyolultabb.
  • A módszer előnye, hogy kevés memóriát igényel (mindenhez elég egyszerre egy RLE értéket betölteni), és könnyen készíthető rá célhardver. Manapság az érzékelők gyakran végeznek előfeldolgozást, így ez fontos.

5. előadás (2009. 02. 23.)

Geometriák, szomszédosság

  • Felix Klein aszerint osztályozta a geometriákat (pl. euklideszi, gömbi), hogy mikor tekint két alakzatot azonosnak (egybevágónak). Pl. a kicsinyítés a síkon egybevágóság, de a gömbön nem, mert nem lehet szögtartó módon elvégezni. Minél szélesebb az egybevágósági transzformációk családja, annál könnyebb felismerni valamit (mert annál több, hozzá hasonló dologgal tekintjük azonosnak), de annál nehezebb megkülönböztetni a különböző dolgokat.
  • Ebben a rendszerben a legmagasabb rendű geometria a topológia: az alakzatokat az összefüggőségeikkel jellemzünk. Folytonos kép esetén akkor tartozik két pont ugyanabba a tartományba, ha az egyikből a másikba el lehet jutni határátlépés nélkül (Jordan-tétel). Diszkrét képeknél szükségünk van a pixelek szomszédosságának fogalmára; erre több definíció lehetséges.
  • 4-szomszédosság: a két pixelnek "van közös oldala", 8-szomszédosság: van közös oldaluk vagy csúcsuk. Mindkét esetben fellép szomszédosság-anomália: sakktábla-szerű mintázat esetén vagy semmi semmivel nem tartozik egybe, vagy a sarkoknál átnyúlnak egymáson a tartományok. Ezért topológiai célokra egyik sem megfelelő.
  • Megoldja az anomáliát, ha az objektumra 8-as, a háttérre 4-es szomszédságot használunk, de ennek az önkényes asszimetriája nem szerencsés. Jobb a 6-szomszédság: egy pixel szomszédai az oldalszomszédok, és valamelyik átló irányában a két sarokszomszéd. Ha a képet megfelelő irányban nyírjuk, ez egy hatszöges szomszédságnak felel meg. A hatszögesen elhelyezkedő pixelek mintavételezési szempontból is jobbak.
  • Komponens-címkézés: meghatározni, melyik pixel melyik összefüggő tartományba tartozik. Ez végezhető rekurzívan (kiindulunk egy pixelből, és rekurzívan az azonos színű szomszédaival folytatjuk), vagy szekvenciálisan (ekkor egyszerre csak két sort kell memóriában tartani, és alkalmazható akkor is, ha adatfolyamként kapjuk a képet).

6. előadás (2009. 02. 26.)

  • Éldetektálás: pl. szomszédos pixelekre XOR. Ez végezhető pl. SIMD (single instruction, multiple data) célhardverrel. Gyakori feladat az élek összhosszának keresése, ebből ugyanis (a pixelek összegével együtt) számolható a kép kerület/terület aránya, ami a struktúráltságot, részletek méretét jellemzi (pl. sok kis körnél nagy lesz, kevés nagy körnél kisebb).
  • Euler-szám: komponensek száma mínusz lyukak száma. Karakterfelismerésnél, alakfelismerésnél használják, gyakran nem az egész képre, hanem egyes tartományaira. Rendelkezik az ún. additív halmaz tulajdonsággal: ha X, Y a kép pixeleinek részhalmazai, E(X) az Euler-szám értéke az X halmazon, akkor [math] E(X)+E(Y)=E(X\cup Y)+E(X\cap Y) [/math] (vagy másképp megfogalmazva: ha X, Y diszjunktak, akkor [math] E(X)+E(Y)=E(X\cup Y) [/math]).
  • A tulajdonság miatt számítható soronként, akár átlósan is. Ez azért hasznos, mert az AOI-nál (Automated Optical Inspection, pl. futószalagon érkező termékeknél) nagy sebesség és jó minőség a követelmény, ezért fontos a párhuzamosíthatóság.
  • Végiggondolásra érdemes, hogy egy pixel változása - a szomszédoktól függően - hogyan változtathatja az Euler-számot. A lokális műveletek párhuzamosításánál gondot jelent, hogy a tartományok, amiktől függ a hatásuk (pl. hogy hogyan hat egy pixelen végzett változtatás az Euler-számra), átlapolódnak. Két szomszédos pixelen végzett művelet, ha nem egymás után, hanem párhuzamosan hajtjuk végre (és mindkettő feltételét a régi pixelek alapján számoljuk) esetleg nemkívánatos hatással járhat. Pl. keskenyítés: az objektum szélső pixeleit eltávolítjuk; ennek nem kellene az Euler-számot változtatnia. Ha viszont van egy 2 pixel vastag "nyak", akkor, párhuzamosan végezve a keskenyítést, változhat (míg sorosan végezve az egyik eltávolítása után a másiknál az új szomszéd-értékek alapján nem döntenénk az eltávolítás mellett).

7. előadás (2009. 03. 02.)

Bináris képfeldolgozás - esettanulmány

  • AOI és AXI (Automated X-Ray Inspection) rendszerek: használják őket pl. NYÁK-gyártásban, palackozásban, címkézésben. Általában magasak a minőségi követelmények: pl. egy lámpagyártó cég a megrendelő autógyárnak minden hibás lámpa után 2000 Euro-t kell megtérítsen. Ennek oka egyrészt az autóval szembeni magas követelmény, valamint az utólagos kézi csere - a gyártósori összerakáshoz képest - viszonylag magas költsége. A lámpagyár nagyon sok lámpát gyárt, és ezeket mind nagyon nagy biztonsággal kell (lehetőleg teljesen automatikusan) megvizsgálni.
  • A NYÁK-gyártásban a tesztelést lehet ICT-vel (in-circuit test) végezni, de ez drága, és az áramkörök bonyolultságának növekedésével egyre nehezebb (pl. egy processzornál hányféle input vizsgálata után mondhatjuk, hogy jó?), ezért itt is egyre fontosabb az AOI.
  • A vizsgálat fázisai: képeket készítünk a NYÁK-ról, binárissá alakítjuk (két osztályba soroljuk az érzékelt árnyalatokat/színeket), kis foltokat (zaj, lényegtelen elemek) eltávolítjuk. A képet digitálisan szokták pozícionálni, és nem a kamerát vagy a NYÁK-ot mozgatják. Jó áramkörökről (és esetleg tipikus hibával rendelkezőkről) makrókat készítenek, ezekkel hasonlítja össze a rendszer adott algoritmussal a képpel.
  • Az AOI rendezerek nagyon drágák, és folyamatos supportot igényelnek, aminek egy részét csak helyben lehet végezni (pl. optika kopása, koszolódása).

Képek matematikai leírása, képfüggvények

  • Képfüggvény: értelmezési tartománya korlátos (csak véges méretű képet tudunk érzékelni, feldolgozni), értékkészlete korlátos, szakaszonként folytonos. (Órán hangzott el: "az értékkészlete diszkrét, mert az érzékelő által mért energia kvantált". :)) Ezekből következik, hogy abszolút integrálható, és létezik (kétdimenziós) Fourier-transzformáltja. Ennek gyakran dolgozunk az abszolút értékének négyzetével, a teljesítményspektrummal.
  • Ebből a tárgyból a Jelek és Rendszerek-től eltérő módon írjuk fel a transzformációt: egydimenziós esetben: [math] F(u)=\mathcal{F}\{f(x)\}=\int_{-\infty}^{+\infty}f(x)e^{-2\pi jux}dx [/math] két dimenzióban: [math] F(u, v)=\mathcal{F}\{f(x, y)\}=\int_{-\infty}^{+\infty} \int_{-\infty}^{+\infty} f(x, y)e^{-2\pi jux-2\pi jvy}dxdy [/math] Az inverz transzformációk hasonlóak, de itt nem kell [math] \frac{1}{2\pi} [/math]-s konstanssal szorozni: [math] f(x)=\mathcal{F}^{-1}\{F(u)\}=\int_{-\infty}^{+\infty}F(u)e^{+2\pi jux}du [/math] illetve: [math] f(x, y)=\mathcal{F}^{-1}\{F(u, v)\}=\int_{-\infty}^{+\infty} \int_{-\infty}^{+\infty} F(u, v)e^{+2\pi jux+2\pi jvy}dudv [/math] A változók elnevezése (t és [math] \omega [/math] helyett x és u) azt hangsúlyozza, hogy idő helyett térbeli a jel. Szokás szerint kisbetű a tértartománybeli függvény, nagybetű a frekvenciatartománybeli.
  • A Fourier-transzformáció ezen alakjának van egy előnye: a szimmetriája. Itt mindkét irányba igaz a konvolúció és a szorzás kapcsolatát megadó tétel: [math] f(x, y)\cdot g(x, y) \Rightarrow F(u, v) * G(u, v) [/math] illetve [math] f(x, y) * g(x, y) \Rightarrow F(u, v) \cdot G(u, v) [/math]
  • Egy fontos függvény: a kép közepén egy téglalapban A az értéke, azon kívül 0. Ha a téglalap oldalai a és b, akkor [math] f(x, y)=A\left(\varepsilon\left(x+\frac{a}{2}\right)-\varepsilon\left(x-\frac{a}{2}\right)\right)\left(\varepsilon\left(y+\frac{b}{2}\right)-\varepsilon\left(y-\frac{b}{2}\right)\right) [/math] Ennek Fourier-transzformáltja: [math] F(u, v)=A\frac{\sin(\pi a u)}{\pi u}\frac{\sin(\pi b v)}{\pi v} [/math] Ha az f(x, y) függvény körszimmetrikus (vagyis csak [math] \sqrt{x^2+y^2} [/math]-től függ), akkor F(u, v) is körszimmetrikus lesz, ezért ha nem téglalap, hanem kör van a kép közepén, akkor transzformáltja körszimmetrikus lesz, és sin(x)/x-hez hasonló hullámzást mutat.

Képfüggvényből képmátrix, mintavételezés, kvantálás

  • A folytonos képfüggvényt először mintavételezzük, majd kvantáljuk, hogy digitálisan tárolhatóvá tegyük. A mintavételezésnél tulajdonképp egy [math] f(x, y)=\sum_{k=-\infty}^{+\infty}\sum_{l=-\infty}^{+\infty} \delta(x-k\Delta x)\delta(y-l\Delta y) [/math] függvénnyel szorozzuk meg a képet (egy rács pontjaiban Dirac-delták máshol 0 - "fakír-ágy" :D). Így a mintavételezett függvény a következő lesz: [math] \sum_{k=-\infty}^{+\infty}\sum_{l=-\infty}^{+\infty} \delta(x-k\Delta x)\delta(y-l\Delta y)f(k\Delta x, l\Delta y) [/math]
  • Ha az eredeti képfüggvény sávkorlátos, akkor létezik olyan [math] \Delta x,\; \Delta y [/math], hogy nem vesztünk információt (a mintavételezett verzióból helyreállítható az eredeti). Mivel a gyakorlatban soha nincs végtelen részletességű képünk (pl. az érzékelő felbontása miatt), illetve adott skála alatti részletek nem is érdekelnek, ezért mindig lehet úgy mintavételezni, hogy ne veszítsünk hasznos információt.
  • Kvantálás: a függvény értékkészletét döntési szintekkel tarotmányokra bontjuk, az egy tartományba eső értékeket egy közös kvantumszinttel jellemezzük. Általában minél több szintet használunk, annál kevesebb információ veszik el, de: az eredeti jel biztosan tartalmaz zajt (általában legalább -40dB), ezért bizonyos határon túl nem nyerünk a szintek számának növelésével.
  • (Adott szint-számhoz tartozó) optimális kvantálás: amikor minden kvantálási tartományba a kép ugyanakkora része esik. Ez általában bonyolult, helyette inkább túlkvantálunk (azaz több szintet használunk), egyenlő méretű tartományokkal. Utólag, a túlkvantálás miatti többletinformáció és a hisztogram segítségével közelíthető az optimális kvantálás.
  • Ha ismert a kép hisztogramja, és hogy milyen jel-zaj viszonnyal készült, akkor kiszámítható, mennyi bitre érdemes kvantálni.

8. előadás (2009. 03. 05.)

Szűrés

  • Lineáris szűrők: a kép frekvenciaeloszlását valamilyen cél érdekében módosítják (szorozzák). A képtartományban konvolúcióval valósíthatók meg. A konvolúciót úgy is értelmezhetjük, hogy a képet valamilyen másik függvénnyel letapogatjuk.
  • Szűrők gyakran előforduló fajtái: aluláteresztő (magasvágó), felüláteresztő (mélyvágó), sáváteresztő, sávzáró. Gyakran előforduló sáv- illetve felüláteresztő a mexikói kalap.
  • A folytonos szűrőfüggvényt mintavételezni kell, hogy a mintavételes képfügvénnyel konvolválható legyen. A mintavételezés frekvenciájától erősen függ pl. az aluláteresztő törésponti frekvenciája, hiszen a ritkább mintavételezés olyan, mintha az eredeti frekvenciával vennénk a mintákat, de előtte "összenyomtuk" volna a függvényt.
  • Aluláteresztő szűrőket binárisan kvantálva olyan szűrőt kapunk, aminek a közepén néhány 1-es van. Ahhoz, hogy a DC (nullafrekvenciás) komponenst az új szűrő ne változtassa meg, le kell osztani az egészet az egyesek számával (szűrősúly).
  • Ha az eredeti képen volt egy bithiba (a tömörítetlen adatfolyamban), akkor az pontszerű torzulást jelent, az egyik pixel (egyik színkomponense) lényegesen nagyobb vagy kisebb lesz, mint kellene (ez attól is függ, melyik helyiértéken változott a bit). Ezt salt & pepper (só és bors, sötét és világos pontok véletlen eloszlással) zajnak hívják. Egy ilyen képet lineárisan szűrve a hiba hatása "szétfolyik" a környezetbe, ezért nemlineáris módszerekkel lehet jól eltüntetni.
  • Jól használható a mediánszűrő: minden pixelnek vesszük a (2k+1)x(2k+1)-es környezetét. Az itt lévő pixeleket sorbaállítjuk (ha nem szürkeskálás, hanem RGB a kép, akkor komponensenként külön végezzük el), és a "középső" (a [math] 2k^2+2k+1 [/math]-edik) érték lesz a pixel új értéke. Az ablak méretétől függő elmosódottságot okoz a képen, ettől függ az is, hány közel lévő hibás pixelt tud még kijavítani.
  • Nagy frekvenciák kiemelése (high-boost, deriváló szűrő): [math] \left[ \begin{array}{ccc} -1 & -1 & -1 \\ -1 & 8 & -1 \\-1 & -1 & -1 \end{array} \right] [/math] érzékeny a zajra, rontja a jel-zaj viszonyt.
  • A szubpixel feldolgozásnál az élkiemelő szűrő kimenetét interpoláljuk (a mintavételes képmátrixból visszaszámolunk egy lehetséges képfüggvényt), majd ebben keressük a nullátmenetet (a második deriváltnak ott van nullhelye, ahol az első deriváltnak, azaz a változási sebességnek szélsőértéke).
  • Mivel a legtöbb szűrő lokális, a pixelek kis környezetével dolgozik, ezért jól párhuzamosítható a művelet, és könnyen készíthető rá célhardver (konvolúciós processzor).

9. előadás (2009. 03. 09.)

Szűrők folytatás

  • Sobel, Prewitt, Roberts operátor: élkeresésre használhatóak.
  • Ideális aluláteresztő szűrő: a frekvenciatartományban az origó körüli adott sugarú körön 1 az értéke, azon kívül nulla. A tértartományban (sin x)/x jellegű, emiatt "belengéseket", hullámzást okoz a szűrt képen, így gyakorlatban ritkán használják.
  • A kép "fölösleges" információinak eltüntetésére használható a következő eljárás: vegyük a frekvenciatartománybeli alakot; ez véges méretű, mintavételezett kép esetén véges sok diszkrét értékből áll. Ezeket állítsuk abszolútérték (energia) szerint sorba, és a legkisebb energiájúakat töröljük. Ha az energia nagy részét hordozú frekvenciák megmaradnak, akkor a kép is felismerhető marad.
  • Butterworth szűrő: az "áteresztő" tartományban a lehető leglaposabb (vagyis a képből azok a frekvenciák, amiket "meghagyunk", nem változnak nagyon), és nem "hullámzik" (vagyis a karakterisztikája monoton nő vagy csökken). Használják pl. röntgenképek feldolgozására.
  • A kép kvantálásakor tulajdonképpen a hisztogramot módosítjuk: adott tartományba eső fényességértékeket mind egy közös értékkel helyettesítünk. Ez olyan, mintha a fényességértékekre egy lépcső-szerű függvényt alkalmaznánk (gradációs lépcső), ez a képen ugrásszerű változásokat okoz. Ennek az utólagos korrekciójára szolgálnak a gradációs szűrők, erre a célra is gyakran használnak Butterworth szűrőt. Ennek oka a Webber-törttel kapcsolatos.
  • Homomorf szűrés: az emberi szem közel logaritmikus karakterisztikájú, ezért sok szűrő jobban működik, ha a képet először "logaritmizáljuk", vagyis a fényességeknek a logaritmusát vesszük, így szűrünk, majd a végén visszaalakítjuk a képet.

Szegmentálás

  • Élek (elválasztók, határvonalak) illetve összefüggő tartományok (pixelblokkok) keresése, a képanalízis egyik első lépése. Problémát okoz, hogy a határok a pixelek között húzódnak. Két alapvető megközelítés van:
    • Hasonlósági módszerek: pixelek "hasonlóságát" vizsgáljuk, és ha eléggé hasonlítanak, akkor egy tartományba tartoznak. Ilyen módszerek: küszöbözés, régió növelés, régió szeletelés és növesztés.
    • Különbözőségi módszerek: pontok, vonalak, élek detektálása.
  • Küszöbözés: adott fényességi szintnél "elvágjuk" a képet, ami fényesebb, az az egyik tartományba, ami sötétebb, a másikba tartozik (pl. sötét objektum világos háttér előtt). Néha több tartomány is elkülöníthető így (több szint szerinti vágással). Általában a konstans döntési szintnél bonyolultabb módszereket használnak, ezek típusai: globális (egy pixelnél használt döntési szint csak a pixeltől függ), lokális (a pixel kis környezetétől is), dinamikus (a pixel koordinátáitól is).
  • A dinamikus küszöbözésnek pl. akkor van jelentősége, ha a kép megvilágítása nem egyenletes (és az a fényességérték, ami az egyik szélén még sötétnek számít, a másikon már világosnak).
  • A kép fényesség-függvényét a megvilágítás és a reflexió szorzataként kapjuk meg, ebből minket csak a reflexió (a tárgy kinézete) érdekel. Ha a kép logaritmusát vizsgáljuk, az a reflexió és a megvilágítás logaritmusának összege lesz. Belátható, hogy ha két képet összegzünk, a hisztogramjaik konvolválódnak, tehát ha a megvilágításnak legalább a hisztogramja ismert, akkor dekonvolúcióval a reflexióé is meghatározható. A megvilágítás hisztogramja meghatározható, ha egy homogén reflexiójú felületet megnézünk azonos megvilágításban.
  • Ha ismert a reflexió, akkor a döntési küszöböket kell meghatározni. Ezt általában nem lehet tökéletesen, mert pl. az objektum és a háttér hisztogramja egymásba lóg (vagyis van olyan fényesség, ami mindkettőben előfordul). Optimális küszöbözés: ami minimalizálja a tévesen besorolt pixeleket. Ha vannak apriori információk arról, kb. hány százaléka a pixeleknek tartozik hova, akkor számítható az optimális küszöb. Cél lehet pl. a tévesen objektumnak gondolt, a tévesen háttérnek gondolt, vagy a bármilyen módon tévesen besorolt pixelek számának minimalizálása; ettől függ, hogy mi lesz az optimális küszöb.
  • Esettanulmány arról, hogy ez a cél nem nyilvánvaló: orvosi szoftvert fejlesztettek, ami az emberek leletei alapján adott egy előzetes becslést, hogy beteg-e. Úgy "lőtték be", hogy a téves negatívokat minimalizálja, vagyis aki beteg, arról mindenképp mondja meg (cserébe viszonylag sok egészségest is betegnek fog nevezni). Ennek hatására sok embernek kellett további vizsgálatra mennie, ami költséges volt, ezért végül át kellett állítaniuk a szoftvert, hogy szigorúbb szempontok szerint mondjon valakit betegnek.

10. előadás (2009. 03. 12.)

Szegmentálás, régióorientált módszerek

  • Az R képet szeretnénk [math] R_i [/math] részekre bontani. Ehhez a P homogenitási kritériumot használjuk: P egy függvény, ami pixelek egy halmazára akkor igaz, ha az (valamilyen szempontból) homogén. Amit szeretnénk:
    • [math] \bigcup_{\forall i}R_i = R [/math] és [math] \forall i\neq j \;R_i \cap R_j = \emptyset [/math], vagyis minden pixel pontosan egy tartományba tartozzon.
    • Az [math] R_i [/math] tartományok legyenek összefüggőek.
    • [math] \forall i \; P(R_i) [/math], vagyis a tartományok legyenek a megadott szempont szerint homogének.
    • [math] \forall i\neq j \; \neg P(R_i \cup R_j) [/math], vagyis ne lehessen egyesíteni két tartományt (mert akkor minek van kettészedve?).
  • A P függvény sokféle lehet: pl. intenzitásban nincsenek nagy különbségek, sebesség hasonló (ha mozgóképpel dolgozunk). A kritérium lehet globális (a teljes régióra vonatkozó, pl. az intenzitások szórása elég kicsi) vagy lokális (a régió minden kis darabjára külön-külön igaz, pl. szomszédos pixelek fényessége hasonló)
  • Régiónövesztés: adott gyökér-pixelből indulva keresünk szomszédos jó pixeleket. Gyökérnek választható a legfényesebb pixel, vagy előszegmentálás alapján valamelyik. Fontos paraméterek: milyen szomszédsággal dolgozunk, mikor hasonlít eléggé két szomszéd, egy eldobott pixelt lehet-e újravizsgálni, milyen sorrendben nézzük a szomszédokat.
  • Régiószeletelés (split and merge): kezdetben az egész képet egy nagy régiónak tekintjük, és megnézzük, homogén-e. Ha nem, felosztjuk, majd szükség szerint tovább. Ha valamelyik lépésben van két összevonható régió, azokat összevonjuk. A felosztásra használják pl. a sima kvadrális felosztást (vagyis ha egy téglalap nem homogén, akkor 2x2 kis téglalapra vágjuk).
  • Egyéb módszerek: klaszterezés, [math] \kappa [/math]-means, gráf alapú (minimális vágás keresése).

Szegmentálás, gyors változáson alapuló módszerek

  • Él: két régió határa, amik relatíve különböző fényességűek. A éldetektálásnál nagyfrekvenciás ugrásokat keresünk, akár irányérzékeny módon (ha pl. csak a vízszintes élek érdekelnek), ezt highpass szűrőkkel lehet megtenni (pl. Prewitt, Sobel, stb.). A kép deriváltja (gradiensvektora) digitális képen csak közelítőleg számítható.
  • Laplace operátor: elmosódott éleket pontosabban lokalizál, nem irányérzékeny, viszont zajérzékeny, és megkettőz minden élt.
  • Canny algoritmus: fehérzajos képen a lépcsős élekhez optimális, mert teljesít 3 kritériumot: fontos él nem veszik el, egy élet egyszer detektál (vö. Laplace), az él valós és detektált helye közt minimális az eltérés.
  • Hough transzformáció: egyszerű formákat (kör, egyenes) lehet keresni vele. Előtte a képet előfeldolgozni kell (szűrés, binarizálás, élkeresés). Minden egyenest lehet az origótól való távolságával és az irányával jellemezni. Vegyük fel egy koordinátarendszert, ami az "egyenesek tere": ennek két tengelye a két egyenes-jellemző, és minden pont az eredeti kép egy egyenesének felel meg. Az eredeti kép minden pontja rajta van bizonyos egyeneseken, és az egyenes-térben ez egy pontsorozatot (konkrétan szinuszgörbét) jelent. Ha tehát végigmegyünk a kép pontjain, és minden élponthoz rárajzoljuk a transzformált képre a neki megfelelő görbét, akkor azon egyeneseknek megfelelő pontok, amiken sok pont volt rajta, sok "találatot" kapnak, és a végére világosak lesznek.
  • Ha több egymás utáni felvételünk van egy változó (mozgó) képről, és már megtaláltuk, melyik pixel hova kerül a következő képen, akkor a sebességek alapján (optical flow mező) is lehet régiókat keresni (az egy tárgyhoz tartozó pixelek hasonló sebességgel mozognak).

11. előadás (2009. 03. 16.)

2D és 3D adatok együttes feldolgozása

  • A szegmentálásra a nagyfrekvenciás módszerek nem annyira jók, ugyanis a képen hamis élek is vannak (pl. árnyékok). Ezeket el kell tudni különíteni a "valódi" élektől. Ha van plusz 3D információnk (pl. a fényképezéssel egyidejűleg távolságmérővel is végigpásztázzuk a képet), és az alapján az f(x, y) képfüggvény mellé ki tudjuk számítani a z(x, y) mélység-térképet, akkor a feladat könnyebb, de szükségessé válik a kétféle adatsor kombinált feldolgozása.
  • z(x, y) általában nehezebben kezelhető, mint f(x, y): nem korlátos az értékkészlete, nem abszolút integrálható, nem szakaszosan folytonos, értelmezési tartományában lehetnek lyukak, így Fourier-transzformáltja sem értelmezhető (általában). Előállítani többféle 3D látó módszerrel is lehet: távolságmérés, binokuláris látás, epipoláris geometriai módszerek. Az iparban, az aktív látásban elterjedtek: pulzuslézer (időmérés alapján számít távolságot), fénymoduláció (szinusszal modulált fény fáziskülönbsége alapján táv), LIDAR. A lézer erős fénye jó kontrasztot ad környezeti fényektől függetlenül. Strukturált fényes távmérés: mintát (pl. négyzetrácsot) vetítünk a tárgyra, és figyeljük a torzulását. Az ilyen eszközökkel kapott z(x, y) általában tg(x)-szel torzított értékkészletű (olyan eloszlása van, mint egy szokványos hisztogram tangensének lenne).
  • A 2D és 3D infók egymásnak megfeleltetése nem triviális, mivel a kamera és a távmérő nem lehet ugyanott. Hasonló probléma a multimodális orvosi képfeldolgozás: több forrásból (CT, MRI, PET) származó infók egymásra illesztése. Egy lehetséges megoldás egy lézer visszaverődési idejét és intenzitását is mérni (ekkor mégis lehet egy helyen a kamera és a távmérő), vagy máshonnan mérjük a mélységi adatokat, de felhasználás előtt nemlineárisan torzítjuk.
  • Szenzorfúzió: különböző érzékelők adatainak közös feldolgozása. Előnyei: pontosság, megbízhatóság, sebességnövelés, plusz információk nyerhetők ki, hiba esetén az egyik feladatát átveheti a másik.
  • A két adat közti kapcsolatot az objektum reflexiós modellje adja. A fentiek miatt nem lehet pixelenként összekapcsolni a kettőt, inkább vonalak, élek alapján. Megpróbáljuk felépíteni a tárgy drótvázas modelljét, ehhez éleket és csúcsokat keresünk.
  • 3-féle él van. Vágóél: a képen megjelenő kontúr, ahol z(x, y) folytonos, de a deriváltjának szakadása van (az objektum felületén "törés" van). Ugróél: z(x, y)-nak szakadása van (az objektum széle, amin túllépve "leesünk" a mögötte lévő dologra). Az ugró- és vágóélek együtt a geometrikus vagy volumetrikus élek. Nem geometrikus él: z és deriváltja is folytonos, csak f-nek van él-szerű viselkedése (textúra, megvilágítás éles változásai). Az éleknek ezen kívül több attribútumuk van: a vágóél lehet konvex vagy konkáv ill. egyenes vagy ívelt, az ugró lágy vagy kemény (z deriváltjának folytonossága alapján, lágy ugróél van például a tetőcserepek szélénél, ahol a következő cserép is ugyanabban a szögben áll). z(x, y)-ra azért van szükség, mert pl. az ugróél nem feltétlenül látszik f-en.
  • Waltz-féle szűkítés: először eltávolítjuk a nem geometrikus éleket f(x, y) és z(x, y) összevetésével. A megmaradó élek mind az objektum drótvázának élei. Egy csúcsba nem futhatnak be a különböző fajta élek akármilyen kombinációban, ez alapján leszűkíthető, hogy melyik él milyen lehet. Felismerhetők vele a lehetetlen objektumok.

12. előadás (2009. 03. 19.)

2D-3D együttes feldolgozás folyt.

  • Feltételezzük, hogy a felületek a Lambert-törvény szerint vernek vissza. Triangulációs mérőrendszer: az objektumot lézerrel végigtapogatjuk, egy másik pontból pedig a fényfolt helyét nézzük. A folt helyét befolyásolja, hogy hol tart éppen a letapogatás, és az objektum alakja is. Minket csak az objektum pontjainak mélysége érdekel, ezt az adatokból háromszögeléssel határozhatjuk meg. A rendszert egy referenciasíkkal kell kalibrálni. A kalibrációra a Rioux-elrendezésnél nincs szükség.
  • Az erős lézerfényben a porszemcsék jól látszanak, ezért a felületi textúráknál jó lesz a felbontás. Ezt használja ki a lézervilágítású intenzitáskamera. A háttér homogén vaslemezén majdnem látható a kristályszerkezet. A jól fókuszált lézer is nemnulla területű foltot világít meg, ezért a folt integrálját mérjük.

Élek, felületek leírása

  • Élek fontos jellemzői: ívesség, típus (Waltz-szűkítéssel határozható meg). Az élek közti felületek kétváltozós függvények, amiknek ritkán ismerjük az analitikus alakját, általában közelítjük, pl. Bézier-felületekkel, spline-okkal. A lokális differenciális jellemzőket (görbület) a Hesse-mátrix írja le.
  • A pixelek Haralick-féle topografikus osztályzásánál a Hesse-mátrix sajátértékei és sajátvektorai alapján állapítjuk meg, az adott pixel "hegytető", "völgy", stb.-e. A nagyobb sajátértékhez tartozó sajátvektor a legnagyobb görbület iránya, a másik a legkisebbé, a sajátértékek pedig a megfelelő görbületek. A nemnulla sajátértékek száma a felület rendje: ha mindkettő nulla, akkor nulladrendű, és lokálisan síkként viselkedik, ha egyik nulla, akkor elsőrendű, hengerfelület jellegű, ha pedig egyik sem nulla, akkor másodrendű, ún. általánosított gömbfelület (ez pl. a nyeregfelületet is magában foglalja).
  • Az összefüggő, azonos osztályú pontok alkotnak egy felületdarabot. A képet zajszűrni kell, mert különben a nagyon apró "gerinceket" és "völgyeket" fogja megtalálni a módszer, a zajszűrés viszont megváltoztathatja a helyüket.
  • A módszer eredetileg a (reflexiós) intenzitásképek elemzésére jött létre. Ott problémás a nyeregfelület felismerése, a gerinc-völgy megkülönböztetése (az abszolútérték-képzés miatt).
  • Az élek és az általuk határolt felületek típusa közt van kapcsolat. Itt csak a volumetrikus élekkel foglalkozunk, viszont fontos, hogy egyenesek-e vagy nem. Így mindegyik él lehet ugró (SK) vagy vágó (SCK), illetve egyenes vagy ívelt. A vizsgált felület minden "sarkában" két oldaléle találkozik, a 4 éltípus miatt összesen 10-féle kombináció fordulhat elő (mivel a két él sorrendje nem érdekes), mindegyiknél meghatározható a felület rendje. Ha az egyes csúcspontok alapján más-más adódik, akkor a felületet alaposabban meg kell vizsgálni; lehet, hogy bonyolultabb az alakja (pl. kocka kidomborodó oldalakkal), vagy egy élet nem találtunk meg (letekeredő WC-papír: a hengerpalást és sík csatlakozásánál változik a felület rendje, de nincs él).
  • Wikipédia: háromszögelés
  • Wikipédia: Hesse-mátrix
  • Haralick-féle osztályozás

13. előadás (2009. 03. 23.)

3D látás

  • Az ember többféle forrásból is kap térbeli információt:
    • Szem helyzete (szemmozgató izmok állapota)
    • Milyen távolságra nézünk éppen (lencsefeszítő izmok állapota)
    • Tárgyak relatív nagysága és helyzete (a távolabbi tárgy kisebbnek és "feljebb" látszik)
    • Takarási viszonyok
    • Textúragradiens (a falon a távolabbi vége felé haladva egyre kisebbnek látszanak a téglák)
    • Levegőperspektíva (a vastagabb levegőréteg szórása miatt a távolabbi hegy kékebbnek látszik)
    • Mozgásparallaxis (vonatból kinézve a távolabbi dolgok "lassabban mozognak")
    • Árnyékolás (fények, árnyékok helyzete)
    • (Hallás: üres szoba visszhangosabb, stb.)
  • Ezek egy részét felhasználhatjuk a gépi látásban is. A leképzésnél (perspektivikus transzformáció) egy koordinátányi információ elveszik, ennek pótlására egy lehetőség a sztereo látás. Ugyanaz a pont a két képen máshova kerül, ez a binokuláris diszparitás. Ahhoz, hogy ezt ki tudjuk használni, tudni kell, melyik pontok tartoznak össze a két képen. Lehet pl. a két képet fokozatosan egymásra tolni, és figyelni, mikor tűnik el a "szellemkép".
  • Az összetartozó pontok kereséséhez használják az epipoláris geometriát: az egyik képen egy pont a térben egy, a vetítési középponton átmenő egyenesen kellett legyen. Ezt az egyenes vetítve a másik képsíkra egy, az első vetítési középpont vetületén átmenő egyenest kapunk; az eredeti kép pontjának megfelelője ezen az egyenesen kell legyen. Képlettel: [math] \underline{p}_1^T \cdot \underline{\underline{E}} \cdot \underline{p}_2 = 0 [/math], ahol a két p vektor egy pont két képének helye, E pedig a síkok és vetítési középpontok elhelyezkedését jellemző mátrix.
  • A vizsgálandó egyenesek "ferdék", azaz nem párhuzamosak, hanem egy ponton mennek át. Ezért projektív transzformációt hajtunk végre, ami párhuzamos egyenesekbe viszi őket. Ezután már könnyebb korrelációs módszerekkel megkeresni, hogyan illeszthető a két kép egymáshoz. Általában nem pontok, hanem feature-ok (sarkok, élek) közt végzünk összehasonlítást.
  • Mozgásparallaxis: csak egy kamerát használunk, de azt mozgatjuk a térben, és így több nézőpontból készítünk képet vele. Előnye, hogy folytonos mozgásnál könnyebb egy adott pontot követni (mert két képkocka között csak nagyon keveset mozdulhat).
  • Wikipédia: binokuláris diszparitás
  • Epipoláris geometria levezetése

14. előadás (2009. 03. 26.)

ZH a 12. előadás anyagáig

15. előadás (2009. 03. 30.)

  • Az ember az érzékszervi információk 70-75%-át a látásból szerzi, 20%-ot a hallásból. Amikor a kettőt együtt tároljuk, fontos ügyelni arra, hogy szinkronban maradjanak.
  • Képek "életciklusa": a nyers inputot érzékeljük (emberi vagy gépi látórendszer), ennek során zaj adódhat hozzá. Ezután a feldolgozás során több művelet történhet: tárolás, továbbítás, tömörítés, lényegkiemelés (ezek során szintén jelenhet meg zaj). Végül valamilyen döntést hozunk a kapott információhalmaz alapján, esetleg meg is jelenítjük azt.
  • A képfeldolgozás során lényeges kérdés, hogy milyen információ van a képen, abból mi érdekel minket, és azt hogyan nyerjük ki. Lényeges elemek lehetnek: szín, mozgás, textúra, geometria, stb.
  • Textúrákat lehet pl. másodrendű hisztogram alapján kezelni. Itt nem azt számoljuk meg, melyik fényesség-értéket hány pixel veszi fel, hanem rögzített viszonyú (pl. vízszintesen szomszédos) pixelpárokat veszünk, és vizsgáljuk, a lehetséges fényesség-értékpárok hányszor fordulnak elő. Pl. egy 256 szintre kvantált szürkeskálás kép másodrendű hisztogramja 256*256 értékből áll.
  • A textúra függhet a megvilágítástól és a skálától is: egy téglafalnak messziről nézve más a textúrája, mint ha egy téglát nézünk közelről, ezért problémás lehet, hogy melyik skála az érdekes az adott esetben. A textúra változásaiból (textúra elemek, texelek méretének függése a távolságtól) lehet a 3D viszonyokra, pl. horizont helyzetére is következtetni.
  • Gépi látás problémája: 2D adatokból következtetünk 3D dolgokra. Ez a feladat nincs elég pontosan megfogalmazva, a konkrét esettől függ, mit értünk alatta, többnyire nem oldható meg egyértelműen, illetve a megoldás nem folytonosan függ az adatoktól (ill-posed problem). A gépi látás voltaképp a számítógépes grafika inverz problémája, a mozgóképen a tárgyak követése pedig az animációé. A képek értelmezését, a kétértelműségek feloldását segítheti, ha térben vagy időben több képpel dolgozunk.
  • Pinhole kamera a valóságban: nemnulla méretű lyuk. Túl nagy lyuk homályosodást, túl kis lyuk kis fényerőt és erős diffrakciót okoz.

16. előadás (2009. 04. 02.)

  • A kapott képről nincs szükségünk minden információra, csak amennyi a döntéshozatalhoz kell. Célok lehetnek pl. akadály elkerülés, objektum követése, önlokalizáció 3D-ben, környezet feltérképzeése, értelmezése.
  • A világ objektumai közt többféle geometriai információ van, ami érdekes lehet: egyenesek, méretek, szögek, párhuzamosságok, alakok, síkok helyzete, mélység. Ezek nagy része a vetítésnél elveszik; pinhole vetítésnél megmarad pl. az egyenesség, a képsíkkal párhuzamos síkban lévő alakzatok alakja. A mélységi információk egy részét a már elmondott módszerekkel visszanyerhetjük.
  • Képek értelmezésére egy nem túl robusztus módszer a shape from shading: ha ismert a felület tükröződése, akkor abból és két képből visszaállítható a normális. Jobb módszer a textúrából gradiens: itt a texelek méretének változása alapján határozzuk meg a felület irányát. Használható az epipoláris geometria, csak általános esetben a kamera tökéletlenségeit (pinhole modelltől való eltéréseit) korrigálni kell.
  • Ha mozgóképpel dolgozunk, akkor az egyes pontok mozgásvektorait tartalmazza az optical flow mező. Ennek meghatározásához veszünk két, egymás után [math] \delta t [/math]-vel készült képet, és megvizsgáljuk egy pixel környezetét. Tegyük fel, a fényesség a kis környezetben lineárisan változik a térben és az időben is, és hogy a valódi objektum pontjai állandó fényességűek. Ha [math] (v_x, v_y) [/math] sebességgel mozgunk, akkor az eredeti (x, y) pont a két frame között [math] (v_x \delta t, v_y \delta t) [/math]-vel kerül odébb. Vagyis az új helyen az új képkockán ugyanaz a fényesség, mint az eredeti helyen a régi képen: [math] I(x+v_x \delta t, y+v_y \delta t, t+\delta t) = I(x, y, t) [/math]. Kihasználva a linearitást, a bal oldalt átírhatjuk: [math] I(x+v_x \delta t, y+v_y \delta y, t+\delta t) = I(x, y, t) + \frac{\partial I}{\partial x} v_x \delta t + \frac{\partial I}{\partial y} v_y \delta t + \frac{\partial I}{\partial t} \delta t = I(x, y, t) [/math], innen adódik: [math] (v_x, v_y)\cdot (\frac{\partial I}{\partial x}, \frac{\partial I}{\partial y}) = - \frac{\partial I}{\partial t} [/math]. Ebben túl sok az ismeretlen, ezért nem tudjuk a sebességet kifejezni, csak a kép gradiensével párhuzamos komponenst; ezek összességét minden pixelre nevezzük optical flow mezőnek.

Morfológiai képfeldolgozás

  • A képeken lévő struktúrák tanulmányozására egy mód, ha választunk egy (lehetőleg kicsi) ún. struktúráló elemet (kernelt), majd a képen ezt "végighúzzuk", és minden pixelnél megnézzük, mennyire "illeszkedik". Erre könnyen lehet valós idejű célhardvert is gyártani, az alkalmazott transzformációk pedig általában nem reverzibilisek. Az alkalmazott alapműveletek: erózió, dilatáció, fit-and-hit. Megfelelő struktúráló elem esetén sok célra alkalmasak lehetnek: zajszűrésre, objektumok elkülönítésére, objektumok szétválogatására.
  • Erózió: megvizsgáljuk a pixel egy kis környezetét. Ha bizonyos kijelölt helyeken (pl. maga a pixel és négy szomszédja) 1-es van, akkor a kimenetben 1-es lesz a pixel helyén, egyébként nulla. A fenti példában kereszt alakú "ablak", amit a pixelre illesztettünk, és amiben mindenhol egyesnek kellett lennie, a struktúráló elem.
  • Dilatáció: az erózióhoz hasonló, csak nem az összes kijelölt helyen, hanem legalább egyiken kell 1-esnek lennie (ÉS-kapcsolat helyett VAGY). Másképp megfogalmazva, a kép inverzén végzünk eróziót, és az eredményt ismét invertáljuk.
  • Wikipédia: optical flow
  • Wikipédia: morfológia
  • Wikipédia: struktúráló elem

17. előadás (2009. 04. 06.)

  • A morfológiai műveletek eredetileg bináris képek kezelésére lettek kitalálva. Szürkeskálás képekre is alkalmazhatók, ha a k szintre kvantált képet szétválasztjuk k-1 bináris képre (a k-1 lehetséges módon küszöbözve), ezekre egyenként alkalmazzuk a műveletet, majd az eredményeket összeadjuk (vagy egyéb módon kombináljuk).
  • A műveletek egy része idempotens: ha többször alkalmazzuk egy képre, ugyanaz lesz az eredmény, mint ha egyszer alkalmaztuk volna (pl. ilyen a "nullával szorzás" művelet). Sok esetben nem triviális a leállási feltétel meghatározása (pl. szűrésnél: "elég kevés már a képen a zaj?"), ha egy művelet idempotens, akkor nincs ilyen gond (mert nincs értelme egynél többször végrehajtani).
  • Az alapműveletekből összerakható több összetett is: pl. nyitás, zárás, kontúrkeresés. Nyitás: először eróziót, majd ugyanazzal az SE-vel dilatációt végzünk. Az erózió célja a kis pixelblokkok (zaj) eltüntetése, viszont az objektumokat "elvékonyítja", ezt korrigáljuk utána a dilatációval. Idempotens művelet. Zárás: először dilatáció, majd azonos kernellel erózió. A zaj jellegű kis lyukakat tünteti el, szintén idempotens.
  • Hit and miss: hasonló az erózióhoz, de nem csak azt kötjük ki, hogy bizonyos helyeken 1-esnek kell lennie, hanem azt is, hogy bizonyos helyeken 0-nak. Felfogható, mint egy erózió, és az inverz képen másik kernellel végzett dilatáció eredményének metszete (össze-ÉS-elése).
  • Kép vázának (skeleton) keresése: megkeressük azokat az objektumba írható körlemezeket, amik legalább két ponton érintik a határát; ezek középpontjainak halmaza a skeleton (jellemzően vonalas ábrát kapunk). Nagyon érzékeny a zajokra, kis változásokra a határ alakjában.

Képek BLOB (Binary Large OBject) jellemzői

  • A (bináris) képeket kezelhetjük egyszerűen bitek blokkjaként is, ha nem akarunk 3D objektumokat, visszaverődési modellt, stb. "mögéképzelni". Ezzel a szemlélettel is sok topológiai és geometriai tulajdonságot megállapíthatunk róluk. Topológiai tulajdonságok: Euler-szám, lyukak száma. Geometriai tulajdonságok: terület, kerület, terület-kerület arány, bennfoglaló téglalap mérete, alakja, súlypont, orientáció, körkörösség, kompaktság. A képeket a tulajdonságaik alapján a jellemzők alkotta térben egy pont fogja jellemezni, aminek egyik koordinátája az objektum területe, a másik a lyukak száma, stb.
  • Ha alakzatokat osztályozunk a BLOB jellemzőik alapján, akkor a jellemzőteret felosztjuk tartományokra, és a képet aszerint osztályozzuk, hogy melyik tartományba esik a térben az őt leíró pont. A tartományok kialakíthatók pl. úgy, hogy mindegyik kategóriából veszünk egy konkrét példát, és megkeressük, a vizsgált kép a térben melyik kategória képviselőjéhez van a legközelebb. A közelség megállapítására használható az euklideszi távolság vagy bármi más.

18. előadás (2009. 04. 09.)

Real-time feldolgozás

  • A real-time itt a video-rate-et jelenti, vagyis amilyen sebességgel jönnek a mozgókép adatai, olyan sebességgel fel kell dolgozni, nincs lehetőség tárolni és utófeldolgozni. Ha 50Hz-enként kapunk két félképet (interlaced), és a képek 576x768 pixelesek, akkor (soros feldolgozás esetén) 66 ns jut egy pixelre, viszont sok művelet nagyon jól párhuzamosítható.
  • A digitális kép-előfeldolgozás folyamata nagy vonalakban: a jel általában CCD-től érkezik be, ezt digitalizáljuk (az eredmény hisztogramja alapján lehet a kvantálási küszöbök értékét frissíteni), végül adaptívan binarizáljuk. A képet ezután tárolhatjuk (ehhez általában tömörítik is), illetve kinyerhetünk belőle topológiai, geometriai, textúra és kontúrjellemzőket; ezekhez gyakran előtte konvolválni kell a képet egy vagy több kernellel.
  • A konvolúciót gyakran jobb nagy ablakkal végezni, viszont a kis ablak hardverből könnyebben valósítható meg. Két kis ablakos konvolúció egymásutánja egy nagy(obb) ablakos konvolúció, ezért néha a nagy ablakos közelíthető két kis ablakos sorozatával. A 3x3-as ablak bináris képeknél külön jelentőséggel bír, mivel a kimenet egy pixelének értékét összesen 9 bemeneti pixel alapján határozzuk meg. Így készíthetünk egy [math] 2^9 [/math] mezős lookup-tablet, amiben benne van a 9 pixel értékének összes lehetséges kombinációja, és mindegyikhez eltárolhatjuk a kimenetet, így jelentősen felgyorsítva a számítást.

19. előadás (2009. 04. 16.)

TODO

20. előadás (2009. 04. 20.)

Analóg képfeldolgozás

  • Eddig a látórendszerek összekapcsolt modulokból álltak (külön kamera, külön feldolgozóegység, külön tárolóegység, stb.), de mostanában kezdenek az integrált rendszerek elterjedni. A trendek alapján a jövőben jellemző lesz az egyetlen chipre integrált látórendszer (SOC, system on a chip).
  • A digitális eszközök nagy része "sorosan" működik (pl. a pixeleket egymás után dolgozza fel), míg a fizikai világ "párhuzamos", azaz mindenhol egyszerre érvényesülnek a törvények. Ha a képfeldolgozási műveletekre párhuzamos modelleket alkotunk, az jobb megértéshez vezethet (pl. a konvolúciót sokkal természetesebb az egész képen párhuzamosan végzett műveletként kezelni, mint pixelek tömbjén sorosan végrehajtottként). Az analóg világ párhuzamosságának kihasználása pedig hatékonyságot növelhet.
  • Az analóg módszerek más eszközkészletet igényelnek:
    • Moduláció: ha egy síkot átvilágítunk, és a fény intenzitásának helyfüggése A(x, y), a sík áteresztőképessége pedig f(x, y), akkor a sík túloldalát A(x, y)*f(x, y) intenzitású fény hagyja el.
    • Diffrakció: adott mintázatú rácson átbocsátva koherens fényt, az ernyőn közel a rács mintájának Fourier-transzformáltja jelenik meg.
    • Lencsén átbocsátás: a lencsetranszformációs egyenlettel írható le a hatása.
  • A fenti és további analóg elemekből építkezve komplex feladatok is megvalósíthatók, pl. éldetektálás, objektumok követése. Így optikai processzorok, számítógépek is építhetők; ténylegesen létező rendszerek pl. a SCAMP vision chip és a TOMBO optikai számítógép.
  • Példa: domborzat (mélységfüggvény) letapogatása struktúrált fénnyel. A tárgyra adott mintázatot (pl. négyzetrács, stb.) vetítünk, és egy kamerával felvesszük a képét. Ebből megállapítható, melyik pont hol van a térben. Jól használható pl. a de Bruijn mintázató csíkozás, mert egy csík kis környezete alapján könnyen eldönthető, hol vagyunk a globális mintán belül (vagyis a kép adott részére melyik csíkbeli pontja esik az objektumnak).

21. előadás (2009. 04. 23.)

TODO

22. előadás (2009. 04. 27.)

Érdekes pontok detektálása, követése

  • Fontos feladat mozgóképen adott objektumot követni. Ez sok tulajdonság alapján megtehető; ezek egy hierarchiába rendezhetők aszerint, mennyire robusztusak, illetve mennyire egyszerűen számíthatók. Növekvő robusztusság és bonyolultság szerint:
    • intenzitás (pl. sötét háttér előtt világos objektum követése);
    • szín (a háttértől elütő színű objektum követése);
    • él;
    • sarok (adott sarokpontok közti régió követése);
    • kontúr (adott kontúr által határolt régió követése);
    • textúra (adott módon kinéző, pl. tárolt arckép-mintához hasonló régió követése);
    • optical flow (hasonló módon mozgó pontokból álló régió követése).
  • Lényeges kérdés, hogy a 2D követési információból hogyan következtetünk 3D-re (azaz hol van a világban az objektum, amit a képen követünk). Ha ezt is megoldottuk, akkor használható fel a módszer pl. pozíciófüggő 3D megjelenítésre (körüljárhatjuk a képernyőt, és mindig azt a vetületét jeleníti meg a 3D látványnak, amit az aktuális helyzetünkből látnánk - ehhez a néző pozícióját kell követni).

Sarkok követése Harris operátorral

  • Sarok keresésére egy módszer a Harris operátor; ez olyan pontokat keres, amik kis környezetében két merőleges irányban is nagy a gradiens. A pont kis környezetében mindenhol kiszámítunk egy mátrixot az x és y irányú deriváltakból, majd a mátrixoknak vesszük a súlyozott összegét: [math] \underline{\underline{M}}=\sum w(x, y) \left[\begin{array}{cc} I_x^2 & I_x I_y \\ I_x I_y & I_y^2 \end{array}\right] [/math] ahol [math] I_x=\frac{\partial I}{\partial x} [/math] és [math] I_y=\frac{\partial I}{\partial y} [/math], w(x, y) a súlyfüggvény, és a szummázás a pont meghatározott környezetében történik.
  • A mátrix sajátvektorai mutatják azt a két irányt, amerre a legnagyobb és a legkisebb az intenzitásváltozás mértéke a pont környezetében, a sajátértékek (gyökei) pedig a két irány mentén a változás sebességét. Saroknak azt tekintjük, ahol mindkét irányban nagy a változás sebessége (él van). Ha a két sajátérték [math] \lambda_1,\; \lambda_2 [/math], akkor a sarokság mértéke: [math] R=(\lambda_1 \lambda_2) - k(\lambda_1+\lambda_2)^2=det(\underline{\underline{M}}) - k\cdot tr(\underline{\underline{M}}) [/math], ahol tr a mátrix főátlóbeli elemeinek összege, k pedig kísérletileg megállapított konstans, általában 0.04-0.06 között. Ha ez pozitív nagy (mindkét sajátérték nagy), akkor saroknak tekintjük a pontot, ha negatív nagy (egyik sajátérték nagy, másik kicsi), akkor élnek, ha nullához közeli, akkor síknak. Megkeressük a lokális maximumait (hogy a sarkokat ne találjuk meg többször a saját környezetükben), ahol egy küszöb fölött vagyunk, és azokat tekintjük saroknak.
  • Az operátor invariáns az elforgatásra. A kép kontrasztjának növelésére csak részben (a kontraszttal arányosan nő a fenti R érték is, és lehet, hogy bizonyos pontok átlépik a "sarokság" küszöbét), a térbeli skálázásra is (ha egy sarkot nagyítunk, előbb-utóbb hosszú, enyhén görbült él lesz belőle, és megváltozik a besorolása).

Textúra követése

  • Eddig pontszerű képrészletekkel dolgoztunk, viszont gyakran van szükségünk olyan objektumok követésére (pl. webkamera, ami arcot figyel), amiknek elsősorban a textúrájukat ismerjük (közelítőleg). Először tegyük fel, hogy a textúra mérete, stb. nem változik, csak vízszintes irányban mozog v sebességgel, és két képkocka közt nagyon kicsi az elmozdulás. Legyen a k. képkocka képfüggvénye f(x, y, k) és [math] \delta x [/math] a textúra elmozdulása. A két kép lényeges részére [math] f(x, y, k+1) \approx f(x + \delta x, y, k) [/math] teljesül. Mivel az elmozdulás kicsi, ezért [math] f(x+\delta x, y, t) \approx f(x, y, t) + \frac{\partial f}{\partial x} \delta x [/math]. Így a két kép és a textúra x irányú deriváltjának kapcsolata: [math] f(x, y, k+1) - f(x, y, k) \approx \frac{\partial f}{\partial x} \delta x [/math].
  • Ez az elmozdulásra egy túldeterminált lineáris egyenletrendszer (mivel elvileg a lényeges részen minden pixelre igaznak kellene lennie). Ismert módszerekkel meghatározható az az érték, amire a legkisebb lesz a hiba, ezt fogadjuk el elmozdulásnak. Az eredeti képen tudjuk, hol volt a textúra, az elmozdulás ismeretében a következőn is, így tovább követhető.
  • Ha a mozgásnak több szabadságfoka van (forgást, méretváltozást, megvilágítás változását, stb.) is megengedünk, akkor több ismeretlenünk van, és a textúrának mindegyik fajta változás szerinti "deriváltjára" szükség van. Ilyenkor már az "érdekes" terület nagyságát, stb. is számon kell tartani, és a képkockák közti változások alapján frissíteni.
  • A módszer finomítható, hogy a textúra elé "belógó" dolgokat figyelembe vegye: ha a követett kép egy részén hirtelen nagy hiba jelentkezik (a kiszámolt elmozdulást az egyenletbe visszahelyettesítjük, és megnézzük, hol mekkora a különbség a két, elvileg egyenlő oldal közt), akkor eltároljuk, hogy az a rész jelenleg nem megbízható, és a továbbiakban csak a többi alapján számítjuk a változásokat. Ha pár képkocka múlva megint kicsi lesz (a többi alapján számolt elmozdulások behelyettesítéséből adódó) hiba, akkor visszavesszük a pixeleket a követendők közé.

-- G - 2009.02.16.