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.
PythonA használt kép letölthető innen itt .
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 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ó 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á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