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

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

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

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čkaIzvornik

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:

erozijaNakon 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:

dilatacijaNakon 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