Julius Drost képe az Unsplash-en
végül, abban a pillanatban, amire mindannyian vártatok, a következő a felügyelet nélküli Bayes-I következtetési sorozat: (nem annyira) mély merülésünk a Sobel Operátorba.
egy igazán varázslatos élérzékelő algoritmus, amely lehetővé teszi az alacsony szintű funkciók kibontását és a dimenzió csökkentését, lényegében csökkentve a kép zaját. Különösen hasznos volt az arcfelismerő alkalmazásokban.
Irwin Sobel és Gary Feldman (Stanford Artificial Intelligence Laboratory) 1968-as szerelmi gyermeke, ez az algoritmus inspirálta számos modern éldetektálási technikát. Két ellentétes mag vagy maszk konvolválásával egy adott kép fölé (pl. lásd alább-balra) (mindegyik képes vízszintes vagy függőleges élek észlelésére), létrehozhatunk egy kevésbé zajos, kisimított ábrázolást (lásd alább-jobbra).
Presented as a discrete differential operator technique for gradient approximation computation of the image intensity function, in plain English, the algorithm detects changes in pixel channel értékek (általában fénysűrűség) az egyes pixelek (a horgony pixel) és a környező pixelek közötti különbség megkülönböztetésével (lényegében egy kép deriváltjának közelítésével).
Ez az eredeti kép simítását eredményezi, és alacsonyabb dimenziós kimenetet eredményez, ahol az alacsony szintű geometriai jellemzők tisztábban láthatók. Ezek a kimenetek ezután felhasználhatók bonyolultabb osztályozási algoritmusok bemeneteként, vagy példaként a felügyelet nélküli valószínűségi fürtözéshez Kullback-Leibler divergencia (KLD) (amint az az LBP legutóbbi blogomban látható).
Az alacsonyabb dimenziós kimenet generálásához meg kell vennünk a kép deriváltját. Először kiszámítjuk a származékot mind az x, mind az y irányban. Két 3×3-as magot hozunk létre (lásd mátrixok), nullákkal a megfelelő tengely közepe mentén, kettővel a középső négyzetekben, merőlegesen a középső nullára, egyesekkel az egyes sarkokban. A nem nulla értékek mindegyikének pozitívnak kell lennie a nullák tetején/jobb oldalán (tengelytől függően), negatívnak pedig a megfelelő oldalon. Ezeket a kerneleket Gx-nek és Gy-nek nevezik.
ezek a következő formátumban jelennek meg:
ezek a kernelek ezután a kép fölé kerülnek, minden kernel központi pixelét a kép minden pixelére helyezve. Mátrixszorzással számítjuk ki egy új megfelelő pixel intenzitási értékét a kimeneti képen, minden kernelhez. Ezért két kimeneti képet kapunk (mindegyik derékszögű irányhoz egyet).
a cél az, hogy megtaláljuk a különbséget/változást a képen látható pixel és a gradiens mátrix (kernel) összes pixelje között (Gx és Gy). Matematikailag ez kifejezhető.
Mellékjegyzet:
technikailag nem konvolving semmit. Bár az AI és a gépi tanulás körében a ‘konvolúciókra’ szeretünk hivatkozni, a konvolúció magában foglalná az eredeti kép megfordítását. Matematikailag, amikor konvolúciókra utalunk, valójában kiszámítjuk a bemenet minden 3×3 területe és az egyes pixelek maszkja közötti keresztkorrelációt. A kimeneti kép a maszk és a bemenet közötti teljes kovariancia. Így érzékelik az éleket.
vissza a Sobel magyarázathoz…
a maszk és a bemenet 3×3 szakasza közötti mátrixszorzáshoz kiszámított értékeket összegezzük, hogy a kimeneti kép pixelének végső értékét kapjuk. Ez egy új képet hoz létre, amely információkat tartalmaz az eredeti képen lévő függőleges és vízszintes élek jelenlétéről. Ez az eredeti kép geometriai ábrázolása. Továbbá, mivel ez az operátor garantáltan ugyanazt a kimenetet állítja elő minden alkalommal, ez a technika lehetővé teszi a képszegmentálási feladatok stabil élérzékelését.
ezekből a kimenetekből kiszámolhatjuk mind a gradiens nagyságát, mind a gradiens irányát (az arctangent operátor segítségével) bármely adott pixelnél (x,y):