Morfologické operace upravují obrázky na základě struktury a uspořádání pixelů. Aplikují jádro na vstupní obraz pro změnu jeho vlastností v závislosti na uspořádání sousedních pixelů. Morfologické operace, jako je eroze a dilatace, jsou techniky zpracování obrazu, zejména u binárních obrázků nebo obrázků ve stupních šedi. Pomáhají při analýze tvarů, čištění šumu a zpřesňování hranic objektů.
Eroze
Eroze při zpracování obrazu je morfologická operace, která zmenšuje a ztenčuje hranice objektů na obrázku tím, že odstraňuje pixely na okrajích objektu, čímž objekty efektivně zmenšuje a odstraňuje malý bílý šum.
Účel
- Zmenšuje nebo eroduje hranice objektů v popředí (obvykle bílé pixely).
- Odstraňuje jemný bílý šum a odděluje objekty, které se dotýkají.
Jak to funguje
- Po obrázku se posune jádro (obvykle matice 3×3 5×5 nebo 7×7).
- Pixel zůstane bílý (1), pouze pokud jsou všechny pixely pod jádrem bílé; jinak zčerná (0).
- Tento proces snižuje velikost objektu a eroduje okraje.
Dilatace
Dilatace je morfologická operace, která rozšiřuje hranice objektů v obrázku přidáním pixelů k okrajům objektu, díky čemuž objekty vypadají větší a vyplňují malé mezery nebo díry.
Účel:
- Rozšiřuje hranice objektů v popředí.
- Zvýrazňuje nebo zvětšuje prvky a vyplňuje malé mezery.
Jak to funguje:
- Podobně je nad obrázkem konvolvováno jádro.
- Pokud je pixel nastaven na bílou (1). alespoň jeden odpovídajících pixelů pod jádrem je bílý.
- Výsledkem je, že bílé oblasti rostou a spojují malé otvory nebo spojují zlomené části dohromady.
Provádění eroze a dilatace
Pojďme implementovat erozi a dilataci s OpenCV v Pythonu
Krok 1: Import knihoven
Naimportujeme potřebné knihovny
- cv2 : Knihovna OpenCV pro zpracování obrázků.
- nemotorný : Pro numerické operace a vytváření jader.
- matplotlib.pyplot : Pro zobrazení obrázků v poznámkových blocích.
Krok 2: Načtěte vstupní obrázek a definujte strukturující prvky (jádro)
Jádro definuje okolí operace. Běžné možnosti jsou obdélníky nebo disky.
PythonPoužitý obrázek lze stáhnout z zde .
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)
výstup:
OriginálKrok 3: Aplikujte erozi
Eroze funguje tak, že se jádro posune přes obraz. Pixel zůstane bílý (255), pouze pokud jsou všechny pixely pod jádrem bílé, jinak se stane černým (0). Tím se zmenší hranice objektů a odstraní se malý bílý šum.
Pythonimg_erosion = cv2.erode(img kernel iterations=1) plt.imshow(img_erosion cmap='gray') plt.title('After Erosion') plt.axis('off') plt.show()
výstup:
Po eroziKrok 4: Aplikujte dilataci
Dilatace posouvá jádro po obrázku a pixel zbělá, pokud je alespoň jeden pixel pod jádrem bílý. Tím se zahustí bílé oblasti nebo předměty a vyplní se malé otvory.
java boolean na řetězecPython
img_dilation = cv2.dilate(img kernel iterations=1) plt.imshow(img_dilation cmap='gray') plt.title('After Dilation') plt.axis('off') plt.show()
výstup:
Po dilataciAplikace
Eroze
- Odstranění izolovaného bílého šumu z obrázku.
- Oddělování objektů, které jsou spojené nebo se dotýkají.
- Hledání hranic objektu zmenšením velikosti objektu.
Dilatace
- Vyplňování malých otvorů nebo mezer v předmětech.
- Spojování rozbitých nebo odpojených částí stejného předmětu.
- Používá se po erozi (jako součást operace „otevření“) k obnovení velikosti objektu při zachování odstranění hluku.
Eroze a dilatace jsou základními morfologickými operacemi při zpracování obrazu, které nám umožňují zjemňovat čisté tvary a manipulovat s nimi v obrazech. Použitím jednoduchých strukturovacích prvků tyto techniky pomáhají odstranit šum, oddělovat nebo spojovat objekty a vylepšovat vlastnosti obrazu, což z nich činí základní nástroje pro efektivní předběžné zpracování a analýzu v úlohách počítačového vidění s OpenCV a Python.
Vytvořit kvíz