Morfologi merupakan teknik pengolahan cita berdasarkan bentuk segmen citra. Yang bertujuan untuk memperbaiki hasil segmentasi. Teknik morfologi biasanya digunakan pada citra biner atau untuk beberapa kasus juga bisa diterapkan pada citra keabuan (grayscale). Silahkan baca tulisan saya sebelumnya tentang Mengubah Gambar Menjadi Binary Image di OpenCV.
Ditulisan ini saya akan menjelaskan tentang teknik yang sering digunakan dalam operasi morfologi, yaitu : Dilasi, Erosi, Penutupan (Closing) dan Pembukaan (Opening) serta penerapan Operasi Morfologi dengan bahasa pemrograman Python dan Library OpenCV.
Dilasi (Dilation)
Dilasi adalah teknik untuk memperbesar segmen objek (citra biner) dengan menambah lapisan disekeliling objek. Atau dengan menjadi titik latar (0) yang bertetangga dengan titik objek (1) menjadi titik objek (1).import cv2
import numpy as np
from matplotlib import pyplot as plt
img = cv2.imread('morp.jpg',0)
ret, thresh = cv2.threshold(img, 127, 225, cv2.THRESH_BINARY)
kernel = np.ones((5,5),np.uint8)
dilasi = cv2.dilate(thresh,kernel,iterations = 1)
plt.subplot(131),plt.imshow(img,cmap = 'gray')
plt.title('Citra Awal'), plt.xticks([]), plt.yticks([])
plt.subplot(132),plt.imshow(thresh,cmap = 'gray')
plt.title('Citra Biner'), plt.xticks([]), plt.yticks([])
plt.subplot(133),plt.imshow(dilasi,cmap = 'gray')
plt.title('Hasil Dilasi'), plt.xticks([]), plt.yticks([])
plt.show()
Erosi (Erosion)
Erosi atau pengikisan adalah kebalikan dari dilasi yaitu teknik yang bertujuan untuk memperkecil atau mengikis tepi objek. Atau dengan menjadi titik objek (1) yang bertetangga dengan titik latar (0) menjadi titik latar (0).import cv2
import numpy as np
from matplotlib import pyplot as plt
img = cv2.imread('morp.jpg',0)
ret, thresh = cv2.threshold(img, 127, 225, cv2.THRESH_BINARY)
kernel = np.ones((5,5),np.uint8)
erosi = cv2.erode(thresh,kernel,iterations = 1)
plt.subplot(131),plt.imshow(img,cmap = 'gray')
plt.title('Citra Awal'), plt.xticks([]), plt.yticks([])
plt.subplot(132),plt.imshow(thresh,cmap = 'gray')
plt.title('Citra Biner'), plt.xticks([]), plt.yticks([])
plt.subplot(133),plt.imshow(erosi,cmap = 'gray')
plt.title('Hasil Dilasi'), plt.xticks([]), plt.yticks([])
plt.show()
Opening (Pembukaan)
Opening adalah proses erosi yang diikuti dengan dilasi.Dimulai dengan melakukan erosi pada citra kemudian hasil tersebut kembali dilakukan erosi. Opening biasanya digunakan untuk menghilangkan objek-objek kecil dan kurus serta dapat membuat tepi citra lebih smooth (untuk citra berukuran besar).import cv2
import numpy as np
from matplotlib import pyplot as plt
img = cv2.imread('morp.jpg',0)
ret, thresh = cv2.threshold(img, 127, 225, cv2.THRESH_BINARY)
kernel = np.ones((5,5),np.uint8)
erosi = cv2.morphologyEx(thresh,cv2.MORPH_OPEN, kernel)
plt.subplot(131),plt.imshow(img,cmap = 'gray')
plt.title('Citra Awal'), plt.xticks([]), plt.yticks([])
plt.subplot(132),plt.imshow(thresh,cmap = 'gray')
plt.title('Citra Biner'), plt.xticks([]), plt.yticks([])
plt.subplot(133),plt.imshow(erosi,cmap = 'gray')
plt.title('Hasil Dilasi'), plt.xticks([]), plt.yticks([])
plt.show()
Closing (Penutupan)
Closing merupakan kebalikan dari opening. Dimana citra terlebih dahulu dilakukan dilasi yang kemudian dilanjutkan dengan erosi. Closing bertujuan untuk mengisi lubang kecil pada objek, menggabungkan objek yang berdekatanimport cv2
import numpy as np
from matplotlib import pyplot as plt
img = cv2.imread('morp.jpg',0)
ret, thresh = cv2.threshold(img, 127, 225, cv2.THRESH_BINARY)
kernel = np.ones((5,5),np.uint8)
erosi = cv2.morphologyEx(thresh,cv2.MORPH_CLOSE, kernel)
plt.subplot(131),plt.imshow(img,cmap = 'gray')
plt.title('Citra Awal'), plt.xticks([]), plt.yticks([])
plt.subplot(132),plt.imshow(thresh,cmap = 'gray')
plt.title('Citra Biner'), plt.xticks([]), plt.yticks([])
plt.subplot(133),plt.imshow(erosi,cmap = 'gray')
plt.title('Hasil Dilasi'), plt.xticks([]), plt.yticks([])
plt.show()
Itulah dasar dari Operasi Morfologi pada Pengolahan Citra dengan menggunakan Python dan Libary OpenCV. Untuk memulai menggunakan OpenCV silahkan baca tulisan saya tentang Mengenal OpenCV (Open Source Computer Vision Library, dan jangan lupa Subscribe devTrik.com untuk mendapatkan Tips dan Trik OpenCV terbaru.









Posting Komentar