Aşındırma (Erosion) ve Genişletme (Dilation) olarak iki temel yöntem ve bunlara ek olarak MorphologyEx içerisinde farklı bayraklarla bu iki temel yöntemin matematiksel karışımları vardır. Bu işlemler bir kernel ile yapılır ve bu kernel np ile tanımlanabilir (genellikle np.ones()) veya cv2.getStructeredElement fonksiyonuyla yapılabilir [[CV2 Kernel Oluşturma (getStructeredElement)]] .
!!! İkili görüntüler üzerinde yapılır. Yani genelde bir thresholing işleminden sonra gerçekleştirilir.
Yöntem olarak konvolüsyon işleminde gibi kernel gezdirilir ve merkezdeki pikselin değerini hesaplamak için kernelin taradığı alanda hedef değerden bir tane olup olmadığına bakılır. Kernel genelde np.ones ile temsil edilse de buradaki 1'ler hesaplamaya dahil edilecek maskelemeyi işaret eder. Yani istenen duruma göre 0-1 ikili değerler içeren kerneller'de kullanılabilir.
img = cv2.imread(r"Downloads\test (2).png", 0) # Load grayscale image
bin = cv2.threshold(img, 0, 255, cv2.THRESH_BINARY+cv2.THRESH_OTSU)[1] # Binarize
k = np.ones((5, 5), np.uint8) # Define 5x5 kernel
inv = cv2.bitwise_not(bin)
Erosion

out = cv2.erode(inv, k, 1)
Aynı zamanda gürültü gidermek için de kullanılır. Prensip: Kernel Konvolüsyon işleminde olduğu gibi görüntü boyunca gezdirilir. Eğer kernel içerisinde bir 0 değeri varsa kernel pikseli (yani ortadaki) '0' kabul edilir yoksa 255 kabul edilir (ikili görüntüler için). Yani kernelle taranan alanda bir tane küçük olması o kernel pikselinin değerini küçük yapar.
Dilation

out = cv2.dilate(inv, k, 1)
Genellikle erozyondan sonra kullanılır. Erozyon gürültüyü giderir ama nesneleri de daraltır. Bu işlem sonrası gürültü kalmadıgı için sadece nesneler daha belirgin hale gelmiş olur.
Prensip: Erozyonun tersine taranan kernel'de bir tane bile 255 değeri varsa o kernel pixel'i 255'e eşitlenir. Yani kernelin taradıgı alanda bir tane bile 255 olması onu 255'e ittirir.
Opening

opened = cv2.morphologyEx(bin, cv2.MORPH_OPEN, k)
Closing

closed = cv2.morphologyEx(bin, cv2.MORPH_CLOSE, k) # Apply closing
Morphological Gradient

out = cv2.morphologyEx(inv, cv2.MORPH_GRADIENT, k)
Top hat

top = cv2.morphologyEx(bin, cv2.MORPH_TOPHAT, k)
Black hat

bh = cv2.morphologyEx(inv, cv2.MORPH_BLACKHAT, k)