Morfolojik İşlemler

Bazen, görüntünüzü eşledikten sonra, ikili görüntünüzde istenmeyen parazit olur. Morfolojik işlemler bu gürültüyü görüntüden çıkarmaya yardımcı olabilir.

Çekirdek

Çekirdek, başlangıç noktasının ikili görüntünün 1 değerinin her pikselinin üzerine yerleştirildiği basit bir şekildir. OpenCV, çekirdeği NxN matrisiyle sınırlar, burada N tek sayıdır. Çekirdeğin kökeni merkezdir. Ortak bir çekirdek

\[\begin{split}kernel = \begin{pmatrix} 1 & 1 & 1\\ 1 & 1 & 1\\ 1 & 1 & 1 \end{pmatrix}\end{split}\]

Farklı çekirdekler, görüntüyü farklı şekilde etkileyebilir, örneğin yalnızca dikey olarak aşındırma veya genişletme.

Referans için, oluşturduğumuz ikili imajımız:

Original binary image.

Erozyon

Bilgisayarla görmedeki erozyon, topraktaki erozyona benzer. Ön plandaki nesnelerin sınırlarından uzaklaşır. Bu işlem arka plandaki gürültüyü ortadan kaldırabilir.

kernel = np.ones((3, 3), np.uint8)
binary_img = cv2.erode(binary_img, kernel, iterations = 1)
Image after erosion.  Little spots have gone away and large spots reduced in size.

Erozyon sırasında, üst üste binen çekirdeğin pikselleri tamamen ikili görüntünün pikselleri tarafından kapsanmazsa, üzerine bindirildiği piksel silinir.

Dilation-Genişleme

Genleşme erozyonun tam tersidir. Sınırlardan uzaklaşmak yerine onlara katkıda bulunuyor. Bu işlem, daha geniş bir bölgedeki küçük delikleri kaldırabilir.

kernel = np.ones((3, 3), np.uint8)
binary_img = cv2.dilate(binary_img, kernel, iterations = 1)
Image after Dilation.  All of the spots have grown larger.

Genişletme sırasında, üst üste binen her çekirdeğin her pikseli genişlemeye dahil edilir.

Opening-Açılış

Açılma erozyon ve ardından genişlemedir. Bu işlem, daha büyük özelliklerin şeklini etkilemeden gürültüyü ortadan kaldırır.

kernel = np.ones((3, 3), np.uint8)
binary_img = cv2.morphologyEx(binary_img, cv2.MORPH_OPEN, kernel)
Image after Opening.  It has removed most of the small artifacts but still keeps the large size of the larger elements.

Not

Bu özel durumda, sağ üstteki piksellerden kurtulmak için daha fazla açma yinelemesi yapmak uygundur.

Closing-Kapanış

Kapatma genişlemedir ve ardından erozyon meydana gelir. Bu işlem, daha büyük unsurların şeklini etkilemeden küçük delikleri veya kırılmaları giderir.

kernel = np.ones((3, 3), np.uint8)
binary_img = cv2.morphologyEx(binary_img, cv2.MORPH_CLOSE, kernel)
Little holes around the image have been removed but overall size of each object stayed roughly the same.