5.14. Gauss-simítás és élek

Két feladat uralja, hogy mire használják a környezeti ablakokat a klasszikus gépi látásban: a képpontról képpontra való változás tiszta simítása, és azon élek megtalálása, ahol a kép élesen változik. A Gauss-szűrő az első feladat szabványos eszköze, a Laplace-alapú detektorok pedig a másodiké – és a kettő összeáll, mert minden éldetektor jobban működik egy enyhén simított bemeneten.

5.14.1. A Gauss-szűrő

A gaussian() a mean() központra súlyozott unokatestvére. Mindkettő átlagot számít az egyes képpontok környezetén, de a Gauss súlyai nem egyenletesek: a környezet középpontjához közelebbi képpontok többet számítanak, a környezet szélén lévők kevesebbet, a súlyok pedig az ismerős haranggörbét követik, amely a szűrő nevét adja.

A haranggörbe alakú súlyozás teszi a Gauss-szűrőt simábbá egy box-átlagnál. Az átlagszűrés látható műtermékeket hozhat létre az objektumok szélein – a súlyozás éles levágása kis gyűrűződési mintázatokat vezet be az éles átmeneteknél. A Gauss simán lecsengő súlyai elkerülik ezt a gyűrűződést, és olyan eredményt állítanak elő, amely közelebb áll ahhoz, ahogy az „elmosódottnak” ki kellene néznie. Az ára több képpontonkénti számítás, mint az átlagszűrőé, de nem drámaian – a képpontonkénti költség még mindig sokkal alacsonyabb, mint a bilaterális szűrőé.

img.gaussian(1)    # 3x3 Gaussian -- a clean light blur
img.gaussian(2)    # 5x5 Gaussian -- stronger smoothing

A Gauss-simítás szinte minden éldetektálási folyamat szabványos első lépcsője. Az alábbi éldetektorok mind felerősítik a nagyfrekvenciás tartalmat, beleértve az érzékelő zaját is, amelyet az algoritmus valójában nem akar észlelni. Egy enyhe Gauss előzetes futtatása elnyomja ezt a zajt anélkül, hogy a valódi éleket túlságosan elmosná, így az éldetektor a valódi éleket találja meg a foltzaj helyett.

5.14.2. Életlenségi maszkolás (unsharp masking)

Egy kép Gauss-elmosott másolata a unsharp mask technika nyersanyaga a klasszikus élesítéshez. Az unsharp=True beállítása a szűrőn átkapcsolja azt az „állítsd elő az elmosott képet” módról arra, hogy „vond ki az elmosott képet az eredetiből, és add vissza a különbséget az eredetihez” – a hatás az, hogy a nagyfrekvenciás élek felerősödnek a sima belső felületekhez képest.

img.gaussian(1, unsharp=True)

Az opcionális mul és add paraméterek skálázzák az unsharp eredmény erősségét; az alapértelmezések (mul=1.0, add=0.0) mérsékelt élesítést jelentenek, amely nem nagyítja fel az érzékelő zaját.

5.14.3. A Laplace-szűrő

A laplacian() a kép második térbeli deriváltjának diszkrét közelítését futtatja le. A kimenet ott nagy, ahol a képpontértékek gyorsan változnak, és nulla közeli ott, ahol állandóak vagy lineárisan változnak. Az eredmény természetes olvasata egy élválasz: azok a képpontok, ahol a kép gyorsan változik, kivilágosodnak, a sima belső felületekben lévő képpontok pedig sötétek maradnak.

img.laplacian(1)   # 3x3 Laplacian -- edge response

Ugyanazok a paraméterek érhetők el, mint a gaussian esetében. A sharpen=True egy élesített képet állít elő (a Laplace-t visszaadva az eredetihez, nem pedig önmagában visszatérve vele). A mul és az add skálázza a választ.

Az éldetektáláson túli gyakorlati felhasználás a fókuszmérés. Egy terület fölött átlagolt Laplace-válasz durva mértéket ad arról, mennyi nagyfrekvenciás tartalmat hordoz a terület; egy jól fókuszált képkockán ez az átlag magas, egy elmosódotton lecsökken. A Laplace-válasz képkockák közötti összehasonlítása az olcsó módja annak, hogy megkérdezzük, „a lencse fókuszban van-e?”, anélkül, hogy egy drágább kontrasztmetrikára lenne szükség.

5.14.4. A find_edges metódus

A find_edges() egy teljes éldetektálási folyamatot futtat le, nem csupán egy élválasz-szűrőt. Szürkeárnyalatos képeken működik, és az eredmény egy bináris kép, amelynek nem nulla értékű képpontjai azokat a pozíciókat jelölik, ahol a bemenet olyan fényerő-változással rendelkezik, amely élnek számít.

A metódus egy edge_type paramétert vesz át, amely két algoritmus közül választ:

Az EDGE_SIMPLE egy felüláteresztő szűrőt futtat, küszöböt alkalmaz, és visszaadja az eredményt. Gyors, de a kimenet minden küszöb feletti fényerő-változást tartalmaz, beleértve a zajt és a textúrát is, amellyel az alkalmazás valószínűleg nem törődik. Tiszta képekhez és olyan esetekhez ésszerű, ahol a zajt egy későbbi morfológiai menet fogja eltakarítani.

Az EDGE_CANNY a Canny éldetektort futtatja – a klasszikus többlépcsős algoritmust. Kiszámítja a fényerő-gradienst, elnyom minden nem maximális választ a gradiens iránya mentén (így minden él egy képpont széles), és hiszterézis küszöböt alkalmaz (így egy él, amely valahol erős, ott is nyomon követhető, ahol elhalványul). Az eredmény az élképpontok tiszta, vékony, összefüggő halmaza, amilyet minden klasszikus élalapú algoritmus szeretne.

A threshold paraméter egy kételemű (low, high) rendezett pár. Az EDGE_CANNY esetében a high érték az a vágási pont, amely felett egy képpont biztosan él, a low érték pedig az a vágási pont, amely felett egy képpont csak akkor él, ha egy biztos élhez kapcsolódik. Az EDGE_SIMPLE esetében csak a high érték számít; ez az egyetlen vágási pont, amely felett egy képpont élnek számít. Az alapértelmezett (100, 200) egy kiindulópont, amelyet érdemes az adott jelenethez hangolni.

img.gaussian(1)                                   # pre-smooth
img.find_edges(image.EDGE_CANNY, threshold=(50, 100))

A Canny-detektor a jobb választás szinte minden olyan alkalmazáshoz, ahol az élek számítanak. A gyorsabb EDGE_SIMPLE érdemes megjegyezni azokra az esetekre, amikor a Canny költsége gondot okoz, és a hiszterézisének zajelnyomására valójában nincs szükség.

5.14.5. Adaptív küszöbölés a Gauss-on

A statisztikai szűrőkhöz hasonlóan a gaussian() is elfogadja a threshold=True / offset=N kulcsszópárt az adaptív küszöböléshez. A viselkedés ugyanaz, mint a mean() esetében: az egyes pozíciókban a Gauss-statisztika lesz a helyi vágási pont, és a forrásképpontot a statisztika plusz az eltolás értékéhez hasonlítjuk egy bináris eredmény előállításához.

A Gauss-változat általában a legtisztább választás az adaptív küszöböléshez, amikor a bemenet meglehetősen zajmentes. A súlyozott átlag simább vágási pontot ad, mint amit az átlagszűrő állít elő, kevesebb műtermékkel az éles megvilágítási átmeneteknél.