logo

Vaizdų erozija ir išsiplėtimas naudojant OpenCV programoje Python

Morfologinės operacijos modifikuoja vaizdus pagal pikselių struktūrą ir išdėstymą. Jie taiko branduolį įvesties vaizdui, kad pakeistų jo funkcijas, atsižvelgiant į gretimų pikselių išdėstymą. Morfologinės operacijos, pvz., erozija ir išsiplėtimas, yra vaizdo apdorojimo metodai, ypač dvejetainiams arba pilkų atspalvių vaizdams. Jie padeda analizuoti figūras, valončias triukšmą ir patobulinti objektų ribas.

Erozija

Vaizdo apdorojimo erozija yra morfologinė operacija, kuri sumažina ir plonina vaizdo objektų ribas, pašalindama objekto kraštų pikselius, todėl objektai tampa mažesni ir pašalinamas mažas baltas triukšmas.

Tikslas

  • Sutraukia arba išgraužia priekinio plano objektų (dažniausiai baltų pikselių) ribas.
  • Pašalina smulkų baltą triukšmą ir atskiria liečiamus objektus.

Kaip tai veikia

  • Branduolys (dažniausiai 3 × 3 5 × 5 arba 7 × 7 matrica) slysta per vaizdą.
  • Pikselis lieka baltas (1), tik jei visi pikseliai po branduoliu yra balti; kitu atveju jis tampa juodas (0).
  • Šis procesas sumažina objekto dydį ir ardo kraštus.

Išsiplėtimas

Išsiplėtimas yra morfologinė operacija, kuri išplečia objektų ribas vaizde, pridedant pikselių prie objekto kraštų, todėl objektai atrodo didesni ir užpildo mažas spragas ar skyles.



Paskirtis:

  • Išplečia pirmame plane esančių objektų ribas.
  • Paryškina arba padidina bruožus ir užpildo mažas spragas.

Kaip tai veikia:

  • Branduolys yra panašiai susietas su vaizdu.
  • Pikselis nustatytas kaip baltas (1), jei  bent vienas  atitinkamų pikselių po branduoliu yra baltas.
  • Dėl to baltos sritys auga sujungdamos mažas skylutes arba sujungdamos sulaužytas dalis.

Erozijos ir išsiplėtimo įgyvendinimas

Įdiegkime eroziją ir išsiplėtimą su OpenCV Python

matematikos atsitiktinis java

1 veiksmas: importuokite bibliotekas

Importuosime reikalingas bibliotekas

  • cv2 : OpenCV biblioteka vaizdo apdorojimui.
  • nelygus : Skaitmeninėms operacijoms ir branduoliams kurti.
  • matplotlib.pyplot : Vaizdams rodyti užrašų knygelėse.

2 veiksmas: įkelkite įvesties vaizdą ir apibrėžkite struktūrinius elementus (branduolį)

Branduolys apibrėžia operacijos apylinkę. Dažniausiai pasirenkami stačiakampiai arba diskai.

Naudotą paveikslėlį galima parsisiųsti iš čia .

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) 

Išvestis:

originalus-katinas' title=Originalus

3 veiksmas: užtepkite eroziją

Erozija veikia stumiant branduolį per vaizdą. Pikselis lieka baltas (255), tik jei visi po branduoliu esantys pikseliai yra balti, kitaip jis tampa juodas (0). Tai sumažina objektų ribas ir pašalina nedidelį baltą triukšmą.

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

Išvestis:

erozija' loading='lazy' title=Po erozijos

4 veiksmas: taikykite išsiplėtimą

Išsiplėtimas perstumia branduolį per vaizdą ir pikselis tampa baltas, jei bent vienas pikselis po branduoliu yra baltas. Tai sutirština baltas sritis ar objektus ir užpildo mažas skylutes.

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

Išvestis:

išsiplėtimas' loading='lazy' title=Po išsiplėtimo

Programos

Erozija

  • Atskiro balto triukšmo pašalinimas iš vaizdo.
  • Sujungtų arba liečiamų objektų atskyrimas.
  • Objekto ribų radimas mažinant objekto dydį.

Išsiplėtimas

  • Mažų skylių ar tarpų užpildymas objektuose.
  • To paties objekto sulūžusių ar atjungtų dalių sujungimas.
  • Naudojamas po erozijos (kaip „atidarymo“ operacijos dalis), kad būtų atkurtas objekto dydis ir pašalintas triukšmas.

Erozija ir išsiplėtimas yra pagrindinės morfologinės vaizdų apdorojimo operacijos, leidžiančios patobulinti švarias ir manipuliuoti vaizdų formas. Naudodami paprastus struktūrizavimo elementus, šie metodai padeda pašalinti triukšmą, atskirti arba sujungti objektus ir pagerinti vaizdo ypatybes, todėl jie yra būtini veiksmingo išankstinio apdorojimo ir analizės įrankiai atliekant kompiuterinės vizijos užduotis naudojant OpenCV ir Python.

Sukurti viktoriną