logo

Erosjon og utvidelse av bilder ved hjelp av OpenCV i Python

Morfologiske operasjoner endrer bilder basert på strukturen og arrangementet av piksler. De bruker kjerne på et inngangsbilde for å endre funksjonene avhengig av arrangementet av nabopiksler. Morfologiske operasjoner som erosjon og dilatasjon er teknikker i bildebehandling, spesielt for binære bilder eller gråtonebilder. De hjelper til med å analysere former som renser støy og foredler objektgrenser.

Erosjon

Erosjon i bildebehandling er en morfologisk operasjon som krymper og tynner ut grensene til objekter i et bilde ved å fjerne piksler på objektkanter som effektivt gjør objekter mindre og fjerner liten hvit støy.

Hensikt

  • Krymper eller eroderer grensene til forgrunnsobjekter (vanligvis hvite piksler).
  • Fjerner fin hvit støy og skiller gjenstander som berører.

Hvordan det fungerer

  • En kjerne (vanligvis en 3×3 5×5 eller 7×7 matrise av enere) glir over bildet.
  • En piksel forblir hvit (1) bare hvis alle piksler under kjernen er hvite. ellers blir den svart (0).
  • Denne prosessen reduserer objektstørrelsen og eroderer kanter.

Utvidelse

Dilatasjon er en morfologisk operasjon som utvider grensene til objekter i et bilde ved å legge til piksler til objektkanter som gjør at objekter ser større ut og fyller ut små hull eller hull.



Hensikt:

  • Utvider grensene til forgrunnsobjektene.
  • Fremhever eller forstørrer funksjoner og fyller små hull.

Slik fungerer det:

  • Kjernen er på samme måte viklet over bildet.
  • En piksel er satt til hvit (1) hvis  minst én  av de tilsvarende pikslene under kjernen er hvite.
  • Som et resultat vokser de hvite områdene sammen med små hull eller sammenføyer ødelagte deler.

Implementering av erosjon og dilatasjon

La oss implementere erosjon og utvidelse med OpenCV i Python

Trinn 1: Importer biblioteker

Vi vil importere de nødvendige bibliotekene

  • cv2 : OpenCV-bibliotek for bildebehandling.
  • nusset : For numeriske operasjoner og for å lage kjerner.
  • matplotlib.pyplot : For å vise bilder i notatbøker.

Trinn 2: Last inn inngangsbilde og definer strukturelementene (kjernen)

Kjernen definerer området for operasjonen. Vanlige valg er rektangler eller disker.

Brukt bilde kan lastes ned fra her .

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) 

Produksjon:

original-katt' title=Opprinnelig

Trinn 3: Påfør erosjon

Erosjon fungerer ved å skyve kjernen over bildet. En piksel forblir hvit (255) bare hvis alle piksler under kjernen er hvite, ellers blir den svart (0). Dette reduserer objektgrenser og fjerner liten hvit støy.

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

Produksjon:

erosjon' loading='lazy' title=Etter erosjon

Trinn 4: Påfør dilatasjon

Utvidelse skyver kjernen over bildet og en piksel blir hvit hvis minst én piksel under kjernen er hvit. Dette gjør hvite områder eller gjenstander tykkere og fyller små hull.

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

Produksjon:

utvidelse' loading='lazy' title=Etter utvidelse

Søknader

Erosjon

  • Fjerner isolert hvit støy fra et bilde.
  • Skille gjenstander som er sammenføyd eller berører.
  • Finne objektgrenser ved å krympe objektstørrelsen.

Utvidelse

  • Fylle små hull eller hull i gjenstander.
  • Sammenføyning av ødelagte eller frakoblede deler av samme gjenstand.
  • Brukes etter erosjon (som en del av "åpnings"-operasjonen) for å gjenopprette objektstørrelsen samtidig som støy fjernes.

Erosjon og dilatasjon er grunnleggende morfologiske operasjoner i bildebehandling som lar oss foredle rene og manipulere former i bilder. Ved å bruke enkle struktureringselementer hjelper disse teknikkene med å fjerne støy, separere eller koble sammen objekter og forbedre bildefunksjoner som gjør dem til essensielle verktøy for effektiv forbehandling og analyse i datasynsoppgaver med OpenCV og Python.

Lag quiz