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.
PythonNaudotą paveikslėlį galima parsisiųsti iš čia .
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:
Originalus3 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ą.
Pythonimg_erosion = cv2.erode(img kernel iterations=1) plt.imshow(img_erosion cmap='gray') plt.title('After Erosion') plt.axis('off') plt.show()
Išvestis:
Po erozijos4 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.
Pythonimg_dilation = cv2.dilate(img kernel iterations=1) plt.imshow(img_dilation cmap='gray') plt.title('After Dilation') plt.axis('off') plt.show()
Išvestis:
Po išsiplėtimoProgramos
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ą