Morfolojik İşlemler

Created with Sketch.
  • Görüntüler üzerinde morfolojik(şekilbilimsel) işlemler yapmayı öğreneceğiz: Erosion,Dilation,Opening,..
  • Bunları yapabilmek için birçok yeni fonksiyonla tanışacağız: cv2.erode()cv2.dilate()cv2.morphologyEx()

Morfolojik işlemler, resimlerin piksel ve kanal verileri üzerindeki bir takım temel işlemleri ifade etmektedir. Bu işlemleri yaparken binary resimler üzerinde çalışırız. Tüm morfolojik işlemlerde yaptığımız temel şey girdi olarak aldığımız resmi, bir kernel(çerkirdek) ile işlemektir. Erosion, dilation, opening, closing gibi birçok morfolojik işlem vardır. Şimdi bunları tek tek inceleyelim:

1. Erosion

Erosion, aşınmak ve aşındırmak gibi anlamlara gelir. Resim üzerinde ön plandaki şekli aşındırmak için kullanılan yöntemdir. Bildiğimiz toprak erozyonundan farklı değildir. Bu yöntemi bir resme uyguladığımızda ön plandaki şekil aşınır ve zayıflar. Şimdi kodlara göz atalım:

Öncelikle kütüphanelerimizi ve resmimizi ekleyelim.

import cv2
import numpy as np

img = cv2.imread('sample.png')

Daha öncede bahsettiğimiz üzere resmi işlemek için bir kernel oluşturacağız ve cv2.erode() ile bunu resme uygulayacağız.

kernel = np.ones((5,5),np.uint8)
erosion = cv2.erode(img,kernel,iterations = 3)

cv2.imshow("Erosion", erosion)

cv2.waitKey(0)
cv2.destroyAllWindows()
Kaynak Resim
iterations = 3
iterations = 5

2. Dilation

Sözcük anlamı genişleme, genleşmedir. Az önce öğrendiğiniz Erosion işleminin tam tersidir diyebilir. Benzer şekilde burada da bir kernel matrisine ihtiyacımız var.

import cv2
import numpy as np

img = cv2.imread('j.png',0)
kernel = np.ones((5,5),np.uint8)

Yeni bir fonksiyon kullancağız: cv2.dilate()

dilation = cv2.dilate(img,kernel,iterations = 1)
cv2.imshow("dilation image", dilation)

cv2.waitKey(0)
cv2.destroyAllWindows()
Kaynak Resim
iterations = 3
iterations = 5

3. Opening

Resim üzerindeki gürütüleri kladırmak için faydalı bir yöntemdir. Algoritma öncekilerle aynıdır.

Öncelikle kütüphane ve resmi projemize yükleyelim, ayrıca bir de kernel’a ihtiyacımız var.

import cv2
import numpy as np

img = cv2.imread('j.png',0)
kernel = np.ones((7,7),np.uint8)

İlgili kernel dizisini resme uygulayıp çıktılara bakalım.

opening = cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel)

cv2.imshow("Opening", opening)

cv2.waitKey(0)
cv2.destroyAllWindows()

4. Closing

Teknik olarak opening işleminin tam tersidir. Bu yöntemle nesnelerin dışındaki değil içindeki gürültüleri temizleriz. Öncelikle kütüphane ve resmi projemize yükleyelim, ayrıca bir de kernel’a ihtiyacımız var.

import cv2
import numpy as np

img = cv2.imread('sample1.png)
kernel = np.ones((7,7),np.uint8)

İlgili kernel dizisini resme uygulayıp çıktılara bakalım.

closing = cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel)

cv2.imshow("Closing", closing)

cv2.waitKey(0)
cv2.destroyAllWindows()
Kaynak Resim
İşlenmiş Resim