logo

Erosion og dilatation af billeder ved hjælp af OpenCV i Python

Morfologiske operationer ændrer billeder baseret på strukturen og arrangementet af pixels. De anvender kerne til et inputbillede for at ændre dets funktioner afhængigt af arrangementet af nabopixels. Morfologiske operationer som erosion og dilatation er teknikker til billedbehandling, især for binære billeder eller gråtonebilleder. De hjælper med at analysere former, der renser støj og forfiner objektgrænser.

Erosion

Erosion i billedbehandling er en morfologisk operation, der formindsker og fortynder grænserne for objekter i et billede ved at fjerne pixels på objektkanter, der effektivt gør objekter mindre og fjerner små hvid støj.

Formål

  • Formindsker eller udhuler grænserne for objekter i forgrunden (normalt hvide pixels).
  • Fjerner fin hvid støj og adskiller genstande, der rører ved.

Hvordan det virker

  • En kerne (normalt en 3×3 5×5 eller 7×7 matrix af dem) glider hen over billedet.
  • En pixel forbliver kun hvid (1), hvis alle pixler under kernen er hvide. ellers bliver den sort (0).
  • Denne proces reducerer objektstørrelsen og udhuler kanter.

Dilatation

Dilatation er en morfologisk operation, der udvider grænserne for objekter i et billede ved at tilføje pixels til objektkanter, så objekter ser større ud og udfylder små huller eller huller.



Formål:

  • Udvider grænserne for objekterne i forgrunden.
  • Accentuerer eller forstørrer funktioner og udfylder små huller.

Sådan fungerer det:

  • Kernen er på samme måde viklet over billedet.
  • En pixel er indstillet til hvid (1), hvis  mindst én  af de tilsvarende pixels under kernen er hvid.
  • Som følge heraf vokser de hvide områder sammen med små huller eller forbinder ødelagte dele sammen.

Implementering af Erosion og Dilatation

Lad os implementere Erosion og Dilatation med OpenCV i Python

Trin 1: Importer biblioteker

Vi importerer de nødvendige biblioteker

  • cv2 : OpenCV-bibliotek til billedbehandling.
  • nusset : Til numeriske operationer og til at skabe kerner.
  • matplotlib.pyplot : For at vise billeder i notesbøger.

Trin 2: Indlæs inputbillede og definer struktureringselementerne (kernen)

Kernen definerer området for operationen. Almindelige valg er rektangler eller diske.

Brugt billede kan downloades 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) 

Produktion:

original-kat' title=Original

Trin 3: Anvend erosion

Erosion virker ved at skubbe kernen hen over billedet. En pixel forbliver kun hvid (255), hvis alle pixels under kernen er hvide, ellers bliver den sort (0). Dette reducerer objektgrænser og fjerner lille hvid støj.

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

Produktion:

erosion' loading='lazy' title=Efter Erosion

Trin 4: Anvend dilatation

Dilatation glider kernen hen over billedet, og en pixel bliver hvid, hvis mindst én pixel under kernen er hvid. Dette gør hvide områder eller genstande tykkere og udfylder små huller.

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

Produktion:

udvidelse' loading='lazy' title=Efter Dilatation

Ansøgninger

Erosion

  • Fjernelse af isoleret hvid støj fra et billede.
  • Adskillelse af objekter, der er forbundet eller rørende.
  • Finde objektgrænser ved at formindske objektstørrelsen.

Dilatation

  • Udfyldning af små huller eller huller i genstande.
  • Sammenføjning af ødelagte eller afbrudte dele af samme genstand.
  • Bruges efter erosion (som en del af "åbnings"-operationen) til at genoprette objektstørrelsen, mens støj holdes fjernet.

Erosion og dilatation er grundlæggende morfologiske operationer i billedbehandling, der giver os mulighed for at forfine rene og manipulere former i billeder. Ved at bruge enkle struktureringselementer hjælper disse teknikker med at fjerne støj med at adskille eller forbinde objekter og forbedre billedfunktioner, hvilket gør dem til væsentlige værktøjer til effektiv forbehandling og analyse i computervisionsopgaver med OpenCV og Python.

Opret quiz