Morfologi merupakan teknik pengolahan citra 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).

Operasi Morfologi – Dilasi
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
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() |

Hasil Dilasi dengan Python OpenCV
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).

Operasi Morfologi – Erosi
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
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() |

Hasil Erosi dengan Python OpenCV
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).

Operasi Morfologi – Opening
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
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() |

Hasil Opening dengan Python OpenCV
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 berdekatan

Operasi Morfologi – Closing
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
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_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() |

Hasil Closing dengan Python OpenCV
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.
Incoming Terms
- Operasi Morfologi
- Morfologi Citra
- Dilasi
- Operasi Morfologi Citra
- Dilasi Erosi
