logo

Erosie en dilatatie van afbeeldingen met OpenCV in Python

Morfologische bewerkingen wijzigen afbeeldingen op basis van de structuur en rangschikking van pixels. Ze passen kernel toe op een invoerafbeelding om de kenmerken ervan te veranderen, afhankelijk van de rangschikking van aangrenzende pixels. Morfologische bewerkingen zoals erosie en dilatatie zijn technieken bij beeldverwerking, vooral voor binaire of grijswaardenafbeeldingen. Ze helpen bij het analyseren van vormen, het opschonen van ruis en het verfijnen van objectgrenzen.

Erosie

Erosie bij beeldverwerking is een morfologische bewerking die de grenzen van objecten in een afbeelding verkleint en verdunt door pixels aan de objectranden te verwijderen, waardoor objecten effectief kleiner worden en kleine witte ruis wordt verwijderd.

Doel

  • Verkleint of erodeert de grenzen van objecten op de voorgrond (meestal witte pixels).
  • Verwijdert fijne witte ruis en scheidt objecten die elkaar raken.

Hoe het werkt

  • Een kernel (meestal een 3×3, 5×5 of 7×7 matrix van enen) glijdt over het beeld.
  • Een pixel blijft alleen wit (1) als alle pixels onder de kernel wit zijn; anders wordt het zwart (0).
  • Dit proces verkleint de objectgrootte en erodeert randen.

Uitzetting

Dilatatie is een morfologische bewerking waarbij de grenzen van objecten in een afbeelding worden vergroot door pixels aan de objectranden toe te voegen, waardoor objecten groter lijken en kleine gaten of gaten worden opgevuld.



Doel:

  • Vergroot de grenzen van de voorgrondobjecten.
  • Accentueert of vergroot gelaatstrekken en vult kleine gaten op.

Hoe het werkt:

  • De kernel is op soortgelijke wijze over de afbeelding gedraaid.
  • Een pixel wordt ingesteld op wit (1) als  tenminste één  van de overeenkomstige pixels onder de kernel is wit.
  • Als gevolg hiervan groeien de witte gebieden en voegen ze kleine gaatjes samen of verbinden ze gebroken delen met elkaar.

Implementatie van erosie en dilatatie

Laten we erosie en dilatatie implementeren met OpenCV in Python

Stap 1: Bibliotheken importeren

Wij importeren de benodigde bibliotheken

  • cv2 : OpenCV-bibliotheek voor beeldverwerking.
  • numpig : Voor numerieke bewerkingen en om kernels te maken.
  • matplotlib.pyplot : Om afbeeldingen in notitieboekjes weer te geven.

Stap 2: Laad de invoerafbeelding en definieer de structurerende elementen (kernel)

De kernel definieert de buurt voor de bewerking. Veel voorkomende keuzes zijn rechthoeken of schijven.

Gebruikte afbeelding kan worden gedownload van hier .

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) 

Uitgang:

origineel-cat' title=Origineel

Stap 3: Pas erosie toe

Erosie werkt door de kernel over het beeld te schuiven. Een pixel blijft alleen wit (255) als alle pixels onder de kernel wit zijn, anders wordt hij zwart (0). Dit verkleint objectgrenzen en verwijdert kleine witte ruis.

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

Uitgang:

erosie' loading='lazy' title=Na erosie

Stap 4: Dilatatie toepassen

Dilatatie schuift de kernel over het beeld en een pixel wordt wit als ten minste één pixel onder de kernel wit is. Hierdoor worden witte gebieden of voorwerpen dikker en worden kleine gaatjes opgevuld.

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

Uitgang:

verwijding' loading='lazy' title=Na dilatatie

Toepassingen

Erosie

  • Geïsoleerde witte ruis uit een afbeelding verwijderen.
  • Objecten scheiden die met elkaar verbonden zijn of elkaar raken.
  • Objectgrenzen vinden door de objectgrootte te verkleinen.

Uitzetting

  • Het opvullen van kleine gaatjes of gaten in voorwerpen.
  • Het verbinden van kapotte of losgekoppelde delen van hetzelfde object.
  • Wordt gebruikt na erosie (als onderdeel van de 'openings'-operatie) om de objectgrootte te herstellen terwijl ruis wordt verwijderd.

Erosie en dilatatie zijn fundamentele morfologische bewerkingen bij beeldverwerking waarmee we zuivere vormen kunnen verfijnen en vormen in afbeeldingen kunnen manipuleren. Door eenvoudige structurerende elementen te gebruiken, helpen deze technieken ruis te verwijderen, objecten te scheiden of met elkaar te verbinden en beeldkenmerken te verbeteren, waardoor ze essentiële hulpmiddelen worden voor effectieve voorverwerking en analyse bij computervisietaken met OpenCV en Python.

Quiz maken