Képek eróziója és kitágítása OpenCV használatával Pythonban

Képek eróziója és kitágítása OpenCV használatával Pythonban

A morfológiai műveletek a képpontok szerkezete és elrendezése alapján módosítják a képeket. Kernelt alkalmaznak egy bemeneti képre, hogy a szomszédos pixelek elrendezésétől függően megváltoztassák annak jellemzőit. Az olyan morfológiai műveletek, mint az erózió és a tágulás, a képfeldolgozás technikái, különösen a bináris vagy szürkeárnyalatos képek esetében. Segítenek az alakzatok elemzésében, tisztító zajban és finomítják az objektumok határait.

Erózió

Az erózió a képfeldolgozás során egy morfológiai művelet, amely összezsugorítja és vékonyítja a képen lévő objektumok határait azáltal, hogy eltávolítja a pixeleket az objektum szélein, hatékonyan kicsinyíti az objektumokat és eltávolítja a kis fehér zajt.

Cél

  • Összezsugorítja vagy erodálja az előtérben lévő objektumok határait (általában fehér képpontokat).
  • Eltávolítja a finom fehér zajt, és elválasztja az érintkező tárgyakat.

Hogyan működik

  • Egy kernel (általában 3×3 5×5 vagy 7×7 mátrix) csúszik végig a képen.
  • A képpont csak akkor marad fehér (1), ha a kernel alatti összes képpont fehér; ellenkező esetben feketévé válik (0).
  • Ez a folyamat csökkenti az objektum méretét és erodálja az éleket.

Tágulás

A tágulás egy morfológiai művelet, amely kiterjeszti a képen lévő objektumok határait azáltal, hogy pixeleket ad az objektum széleihez, így az objektumok nagyobbnak tűnnek, és kitölti a kis hézagokat vagy lyukakat.

Cél:

  • Kiterjeszti az előtér objektumok határait.
  • Kiemeli vagy nagyítja a vonásokat, és kitölti a kis hézagokat.

Hogyan működik:

  • A kernel hasonlóképpen a kép fölé van kötve.
  • Egy képpont fehérre (1) van beállítva, ha  legalább egy  a kernel alatti megfelelő pixelek közül fehér.
  • Ennek eredményeként a fehér régiók kis lyukakat egyesítve vagy a törött részeket összekapcsolva nőnek.

Erózió és tágulás megvalósítása

Valósítsuk meg az eróziót és a dilatációt az OpenCV-vel Pythonban

1. lépés: Könyvtárak importálása

Importáljuk a szükséges könyvtárakat

  • cv2 : OpenCV könyvtár képfeldolgozáshoz.
  • zsibbadt : Numerikus műveletekhez és kernelek létrehozásához.
  • matplotlib.pyplot : Képek megjelenítéséhez jegyzetfüzetekben.

2. lépés: Töltse be a bemeneti képet és határozza meg a szerkezeti elemeket (kernel)

A kernel határozza meg a művelet környékét. A gyakori választások a téglalapok vagy a lemezek.

A használt kép letölthető innen itt .

Python
   img   =   cv2  .  imread  (  'input.webp'     0  )   plt  .  imshow  (  img     cmap  =  'gray'  )   plt  .  title  (  'Original Image'  )   plt  .  axis  (  'off'  )   plt  .  show  ()   kernel   =   np  .  ones  ((  5     5  )   np  .  uint8  )   

Kimenet:

eredeti-macskaEredeti

3. lépés: Alkalmazza az Eróziót

Az erózió úgy működik, hogy a kernelt átcsúsztatja a képen. Egy pixel csak akkor marad fehér (255), ha a kernel alatti összes pixel fehér, különben feketévé válik (0). Ez csökkenti az objektumok határait és eltávolítja a kis fehér zajokat.

Python
   img_erosion   =   cv2  .  erode  (  img     kernel     iterations  =  1  )   plt  .  imshow  (  img_erosion     cmap  =  'gray'  )   plt  .  title  (  'After Erosion'  )   plt  .  axis  (  'off'  )   plt  .  show  ()   

Kimenet:

erózióErózió után

4. lépés: Alkalmazza a Dilatációt

A dilatáció átcsúsztatja a kernelt a képen, és egy pixel fehér lesz, ha a kernel alatti legalább egy képpont fehér. Ez vastagítja a fehér területeket vagy tárgyakat, és kitölti a kis lyukakat.

Python
   img_dilation   =   cv2  .  dilate  (  img     kernel     iterations  =  1  )   plt  .  imshow  (  img_dilation     cmap  =  'gray'  )   plt  .  title  (  'After Dilation'  )   plt  .  axis  (  'off'  )   plt  .  show  ()   

Kimenet:

tágulásTágítás után

Alkalmazások

Erózió

  • Elszigetelt fehér zaj eltávolítása a képről.
  • Az összekapcsolt vagy megérintett objektumok elválasztása.
  • Objektumhatárok keresése az objektum méretének csökkentésével.

Tágulás

  • Kis lyukak vagy rések kitöltése tárgyakon.
  • Ugyanannak az objektumnak a törött vagy szétkapcsolt részeinek összekapcsolása.
  • Erózió után használják (a „nyitási” művelet részeként) az objektum méretének visszaállítására, miközben a zajt eltávolítjuk.

Az erózió és a kitágulás a képfeldolgozás alapvető morfológiai műveletei, amelyek lehetővé teszik számunkra, hogy finomítsunk és manipuláljunk a képeken belüli alakzatokat. Az egyszerű strukturáló elemek használatával ezek a technikák segítenek eltávolítani az objektumokat elkülönítő vagy összekapcsoló zajokat, és javítják a képi jellemzőket, így elengedhetetlen eszközök a hatékony előfeldolgozáshoz és elemzéshez számítógépes látási feladatokban az OpenCV és Python segítségével.

Kvíz létrehozása