logo

Erozija in razširitev slik z uporabo OpenCV v Pythonu

Morfološke operacije spreminjajo slike na podlagi strukture in razporeditve slikovnih pik. Uporabijo jedro za vhodno sliko za spreminjanje njenih lastnosti glede na razporeditev sosednjih slikovnih pik. Morfološke operacije, kot sta erozija in dilatacija, so tehnike pri obdelavi slik, zlasti za binarne ali sivine slike. Pomagajo pri analizi oblik, čiščenju hrupa in izboljšanju meja predmetov.

Erozija

Erozija pri obdelavi slik je morfološka operacija, ki skrči in stanjša meje predmetov na sliki z odstranjevanjem slikovnih pik na robovih predmetov, zaradi česar so predmeti manjši in odstrani majhen beli šum.

Namen

  • Zmanjša ali razjeda meje predmetov v ospredju (običajno belih slikovnih pik).
  • Odstrani fini beli šum in loči predmete, ki se dotikajo.

Kako deluje

  • Jedro (običajno 3×3 5×5 ali 7×7 matrika enic) drsi po sliki.
  • Piksel ostane bel (1) le, če so vse piksle pod jedrom bele; drugače postane črna (0).
  • Ta postopek zmanjša velikost predmeta in razjeda robove.

Dilatacija

Dilatacija je morfološka operacija, ki razširi meje predmetov na sliki z dodajanjem slikovnih pik na robove predmetov, zaradi česar so predmeti videti večji in zapolni majhne vrzeli ali luknje.



Namen:

  • Razširi meje predmetov v ospredju.
  • Poudari ali poveča značilnosti in zapolni majhne vrzeli.

Kako deluje:

  • Jedro je podobno zavito nad sliko.
  • Piksel je nastavljen na belo (1), če  vsaj enega  ustreznih slikovnih pik pod jedrom je bela.
  • Posledica tega je, da bela področja rastejo in združujejo majhne luknje ali povezujejo zlomljene dele.

Izvedba erozije in dilatacije

Implementirajmo erozijo in dilatacijo z OpenCV v Pythonu

1. korak: uvozite knjižnice

Uvozili bomo potrebne knjižnice

  • cv2 : Knjižnica OpenCV za obdelavo slik.
  • numpy : Za numerične operacije in ustvarjanje jeder.
  • matplotlib.pyplot : Za prikaz slik v zvezkih.

2. korak: Naložite vhodno sliko in definirajte strukturne elemente (jedro)

Jedro definira sosesko za operacijo. Pogoste izbire so pravokotniki ali diski.

natisni zvezdasti vzorec

Uporabljeno sliko lahko prenesete s tukaj .

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) 

Izhod:

original-mač' title=Original

3. korak: nanesite erozijo

Erozija deluje tako, da drsi jedro po sliki. Piksel ostane bel (255) le, če so vsi piksli pod jedrom beli, sicer postane črn (0). To zmanjša meje predmetov in odstrani majhen beli šum.

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

Izhod:

if else stavki java
erozija' loading='lazy' title=Po eroziji

4. korak: Uporabite dilatacijo

Dilatacija drsi jedro po sliki in piksel postane bel, če je vsaj en piksel pod jedrom bel. To zgosti bela področja ali predmete in zapolni majhne luknje.

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

Izhod:

dilatacija' loading='lazy' title=Po dilataciji

Aplikacije

Erozija

  • Odstranjevanje izoliranega belega šuma s slike.
  • Ločevanje predmetov, ki so združeni ali se dotikajo.
  • Iskanje meja predmeta s krčenjem velikosti predmeta.

Dilatacija

  • Polnjenje majhnih lukenj ali vrzeli v predmetih.
  • Spajanje zlomljenih ali nepovezanih delov istega predmeta.
  • Uporablja se po eroziji (kot del operacije 'odpiranja') za obnovitev velikosti predmeta, hkrati pa ohranja hrup odstranjen.

Erozija in dilatacija sta temeljni morfološki operaciji pri obdelavi slik, ki nam omogočata izpopolnjevanje čistih in manipuliranih oblik znotraj slik. Z uporabo preprostih strukturnih elementov te tehnike pomagajo odstraniti šum pri ločevanju ali povezovanju predmetov in izboljšajo slikovne lastnosti, zaradi česar so bistvena orodja za učinkovito predhodno obdelavo in analizo pri nalogah računalniškega vida z OpenCV in Python.

Ustvari kviz