Morfološke operacije mijenjaju slike na temelju strukture i rasporeda piksela. Oni primjenjuju kernel na ulaznu sliku za promjenu njezinih značajki ovisno o rasporedu susjednih piksela. Morfološke operacije poput erozije i dilatacije su tehnike u obradi slike, posebno za binarne slike ili slike u sivim tonovima. Pomažu u analizi oblika čisteći buku i pročišćavajući granice objekta.
Erozija
Erozija u obradi slike morfološka je operacija koja smanjuje i stanjiva granice objekata na slici uklanjanjem piksela na rubovima objekta čime se objekti učinkovito smanjuju i uklanja mali bijeli šum.
Svrha
- Smanjuje ili nagriza granice objekata u prednjem planu (obično bijelih piksela).
- Uklanja fini bijeli šum i odvaja objekte koji se dodiruju.
Kako to radi
- Jezgra (obično 3×3 5×5 ili 7×7 matrica jedinica) klizi preko slike.
- Piksel ostaje bijel (1) samo ako su svi pikseli ispod kernela bijeli; inače postaje crna (0).
- Ovaj proces smanjuje veličinu objekta i nagriza rubove.
Dilatacija
Dilatacija je morfološka operacija koja proširuje granice objekata na slici dodavanjem piksela na rubove objekata čime objekti izgledaju veći i popunjavaju male praznine ili rupe.
Svrha:
- Proširuje granice objekata u prednjem planu.
- Naglašava ili povećava značajke i popunjava male praznine.
Kako radi:
- Jezgra je na sličan način uvijena preko slike.
- Piksel je postavljen na bijelo (1) ako barem jedan odgovarajućih piksela ispod kernela je bijela.
- Kao rezultat, bijele regije rastu spajajući male rupe ili spajajući slomljene dijelove.
Provedba erozije i dilatacije
Implementirajmo eroziju i dilataciju s OpenCV-om u Pythonu
Korak 1: Uvezite biblioteke
Uvest ćemo potrebne biblioteke
izlazni znak java
- cv2 : OpenCV biblioteka za obradu slika.
- numpy : Za numeričke operacije i stvaranje jezgri.
- matplotlib.pyplot : Za prikaz slika u bilježnicama.
Korak 2: Učitajte ulaznu sliku i definirajte strukturne elemente (Kernel)
Kernel definira susjedstvo za operaciju. Uobičajeni izbor su pravokutnici ili diskovi.
PythonKorištenu sliku možete preuzeti sa ovdje .
javafx na eclipse
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)
Izlaz:
IzvornikKorak 3: Nanesite eroziju
Erozija funkcionira klizanjem jezgre preko slike. Piksel ostaje bijel (255) samo ako su svi pikseli ispod kernela bijeli, inače postaje crn (0). Time se smanjuju granice objekta i uklanja mali bijeli šum.
Pythonimg_erosion = cv2.erode(img kernel iterations=1) plt.imshow(img_erosion cmap='gray') plt.title('After Erosion') plt.axis('off') plt.show()
Izlaz:
Nakon erozijeKorak 4: Nanesite dilataciju
Dilatacija klizi jezgrom preko slike i piksel postaje bijel ako je barem jedan piksel ispod jezgre bijeli. Ovo podebljava bijele regije ili predmete i ispunjava male rupe.
Pythonimg_dilation = cv2.dilate(img kernel iterations=1) plt.imshow(img_dilation cmap='gray') plt.title('After Dilation') plt.axis('off') plt.show()
Izlaz:
Nakon dilatacijePrijave
Erozija
- Uklanjanje izoliranog bijelog šuma sa slike.
- Razdvajanje predmeta koji su spojeni ili se dodiruju.
- Pronalaženje granica objekta smanjivanjem veličine objekta.
Dilatacija
- Popunjavanje malih rupa ili praznina u predmetima.
- Spajanje slomljenih ili nepovezanih dijelova istog predmeta.
- Koristi se nakon erozije (kao dio operacije 'otvaranja') za vraćanje veličine objekta uz uklanjanje buke.
Erozija i dilatacija temeljne su morfološke operacije u obradi slike koje nam omogućuju pročišćavanje i manipuliranje oblicima unutar slika. Korištenjem jednostavnih elemenata strukturiranja ove tehnike pomažu u uklanjanju buke u razdvajanju ili povezivanju objekata i poboljšavaju značajke slike što ih čini ključnim alatima za učinkovitu pretprocesiranje i analizu u zadacima računalnog vida s OpenCV-om i Pythonom.
Napravi kviz