logo

Erozija i širenje slika pomoću OpenCV-a u Pythonu

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.

Korištenu sliku možete preuzeti sa ovdje .

javafx na eclipse
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) 

Izlaz:

original-mačka' title=Izvornik

Korak 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.

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

Izlaz:

erozija' loading='lazy' title=Nakon erozije

Korak 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.

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

Izlaz:

dilatacija' loading='lazy' title=Nakon dilatacije

Prijave

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