Skip navigation

Képélesítés

Képélesítés feladata

A művelettel a képen lévő éleket tudjuk felerősíteni, így élesebb megjelenést elérve. A klasszikus megközelítés az, hogy az eredeti képből vonjuk ki a simított változatát, amely így az élek helyét emeli ki, és ezt az előjeles különbségképet adjuk hozzá egy megfelelő súllyal az eredeti képhez.

élesített = eredeti + (eredeti - elmosott) * súly

A legegyszerűbb megoldás az alábbi konvolúciós maszk használata:

 0 -1  0
-1  5 -1
 0 -1  0

Ez tulajdonképpen a képpont 4-szomszédjain elvégzett sima átlagoló szűrővel készült kép eredetiből kivonva, és az eredetihez 5-ös súllyal hozzáadva hatást adja. A megfelelő súly értéke képfüggő, [0.5, 1.5] tartományból választottat javasolnak. Természetesen használhatunk ennél jóval nagyobbat is, ha az alkalmasabb.

Lehetőségünk van az egyes részeredményeket algoritmikusan előállítani, így jobban kézben tarthatjuk az élesítés paraméterezését. Az élesítésnek zajerősítő hatása is van. Ennek hatását csökkenthetjük, ha az élesítést csak élek közelében végezzük, közel homogén terület esetén nem változtatunk. Ezeket a megközelítéseket tárgyaljuk a következő két példában.

A témakörről részletesen olvashatunk az alábbi linkeken (angol nyelven):

Képélesítés implementáció #1

A 06_05_a_sharpen.py példaprogram a fenti képlet szerinti egyszerű megvalósítást mutatja be. Lépések:

  • Kép beolvasása.
  • Végezzünk a képen elmosást (például Gauss átlagoló szűrővel: 5x5 méret, 2.0 szórás). Próbáljunk ki más paraméterezést is!
  • Az eredeti képből kivonjuk az elmosás eredményét. Az eredmény 16 bites, előjeles egész lesz (cv2.CV_16S).
  • A különbségképet hozzáadjuk az eredeti képhez súlyozással.
    • A súlyt [0, 5] tartományból választhatjuk ki csúszkával. Próbáljunk ki többféle értéket! Figyeljük meg, hogy az eredeti képet nem kell súlyozni, csak a hozzáadott előjeles különbségképet.
    • Az összegzett kép típusa 8 bites egész lesz. Az alul- és túlcsordulásokat telített csonkolással végezzük. (Nullánál kisebb érték 0, 255-nél nagyobb érték 255 lesz.)

Képélesítés implementáció #2

Az előzőleg bemutatott egyszerű implementáció több ponton is javítható.

  • A súlyozott összeadást csak akkor végezzük el, ha az adott képpontban az eredeti és a simított érték eltérése elegendően nagy. Ezzel a belső, homogén területeket nem módosítjuk, a zaj hatását ott így nem erősítjük fel. Technikailag ezt úgy oldjuk meg, hogy ahol az abszolút külöbség egy küszöb alatt van, ott 0 értékre állítjuk az előjeles különbségképet.
  • Színes kép esetén a három színcsatorna helyett csak az Lab színtérbe konvertált kép szürkeárnyalatos L csatornáján dolgozunk. Ez az élek mentén jobban megtartja a színt.
  • Csúszkákkal állíthatóvá tesszük az eljárás mind a négy paraméterét: az összeadás súlya (w) mellett, az eltérés minimális küszöbértékét (threshold), a Gauss simítás környezetméretét (blur size) és szórási (blur sigma) értékét.

A megoldást a 06_05_b_sharpen_adaptive.py példaprogram mutatja.