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
PythonUporabljeno sliko lahko prenesete s tukaj .
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:
Original3. 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.
Pythonimg_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
Po eroziji4. 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.
Pythonimg_dilation = cv2.dilate(img kernel iterations=1) plt.imshow(img_dilation cmap='gray') plt.title('After Dilation') plt.axis('off') plt.show()
Izhod:
Po dilatacijiAplikacije
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