Skip to main content

4. Segmentasi.html

Segmentasi Image Processing

Hola gaess, pada section kali ini kita akan mempelajari materi segmentasi image processing. Kata segmentasi sendiri berarti proses membagi atau memisahkan suatu objek menjadi bagian-bagian yang lebih kecil atau segmen. Naah pada image processing sendiri, kata segmentasi memiliki arti pemrosesan gambar dengan membagi atau mempartisi gambar menjadi beberapa bagian yang saling terpisah dan terdefinisi dengan jelas.

Naah segmentasi pada image processing bertujuan untuk mengidentifikasi objek, tepi, atau daerah yang berbeda di dalam gambar sehingga dapat mengambil informasi yang diinginkan dari gambar. Dalam pengaplikasiannya, segmentasi sendiri memiliki tujuan utama yaitu untuk deteksi objek dan klasifikasi gambar.

Secara sekilas pengertian dari segmentasi sendiri memiliki arti yang sama sob.. dengan morfologi citra yaitu memanipulasi suatu citra agar ditemukan suatu objek didalamnya. Akan tetapi ada perbedaan mendasar dari keduanya. Morfologi berfokus pada transformasi piksel sehingga dapat mengurangi atau menambahkan piksel di area objek, sedangkan segmentasi mendeteksi dan langsung memisahkan objek di dalam citra dari objek latar belakangnya. Kemudian morfologi juga memiliki tujuan utama untuk mengurangi noise pada suatu citra sedangkan segmentasi bertujuan untuk mendeteksi objek pada suatu citra.

Segmentasi yang bertujuan untuk mendeteksi objek dalam citra memiliki beberapa metode yang dilakukan sehingga suatu objek tertentu dapat dipisahkan dengan citra latar belakangnya. Naah kemudian dapat dilanjutkan dengan proses klasifikasi gambar atau objek yang telah ditemukan tadi diberikan label atau kelas sehingga objek yang memiliki fitur yang mirip dapat diidentifikasi menjadi 1 kelas yang sama. Berikut contoh segmentasi yang dilakukan pada di daerah jalan raya perkotaan :

Pada segmentasi tersebut dideteksi beberapa objek seperti manusia, mobil, gedung dan jalan raya itu sendiri yang dipisahkan dari citra latar belakangnya.

Jenis Segmentasi Image Processing[1] 

Segmentasi pada Image processing memiliki beberapa jenis yang didasarkan pada kemampuan pemisahan objeknya. Jenis-jenis segmentasi ini juga sering digunakan pada teknologi deep learning. Berikut penjabaran dari jenis-jenis segmentasi tersebut :

1.      Semantic Segmentation

Semantic segmentation atau segmentasi semantik adalah teknik segmentasi yang melibatkan proses deteksi objek dalam citra dan mengelompokkannya berdasarkan kategori yang ditentukan. Segmentasi ini hendak menyatukan piksel-piksel objek yang identik ke dalam kategori yang sama menjadi satu segmen tanpa membedakan tiap-tiap individu. Sehingga seperti pada gambar dibawah ini, objek manusia terseleksi sebagai 1 kelas yang sama.

Objek berbentuk manusia dipisahkan dari latar belakangnya sehingga diberikan 1 kelas yang sama.

2.      Instance Segmentation

Pada segmentasi ini beberapa objek dari kelas yang sama diperlakukan sebagai instance individu yang berbeda. Misalnya, metode segmentasi instance ini dapat dimanfaatkan untuk mengidentifikasi objek manusia seperti pada gambar dibawah ini :

Naah pada hasil dari instance segmentasi ini, kelas manusia dapat terseleksi dari citra lainnya akan tetapi masing-masing individu dari manusia itu diberikan sub kelas atau id yang berbeda.

3.      Panoptic Segmentation

Segmentasi panopatik merupakan segmentasi gabungan dari semantik dan instance. Segmentasi ini membedakan objek yang berbeda serta mengidentifikasinya secara terpisah dari setiap jenis atau kategori objek. Segmentasi panopatik memberikan dua label untuk masing-masing piksel gambar yakni label dari fitur semantik dan ID instance sehingga panopatik segmentasi akan memberikan klasifikasi objek yang menyeluruh pada setiap objek didalam 1 citra dan membedakanya dengan pemberian ID atau label. Contoh pengaplikasian segmentasi panoptic pada citra berikut ini :

Pada citra tersebut, seluruh objek dalam citra dipisahkan menjadi beberapa kelas yang berbeda dan apabila pada 1 kelas memiliki banyak objek yang sama maka akan diberikan ID yang berbeda sehingga akan dipisahkan kembali objek berbentuk manusia.

Metode Segmentasi Image Processing

Selain jenis-jenis nya, segmentasi juga memiliki metode-metode tersendiri agar proses pemisahannya memiliki hasil yang lebih baik. Metode segmentasi ini didasarkan pada tujuan dilakukannya segmentasi dan keadaan objek pada citra tersebut. Metode segmentasi sendiri memiliki banyak sekali jenisnya akan tetapi pada modul ini hanya akan dijabarkan 5 saja, yang mudah dimengerti dan banyak digunakan oleh developer. Berikut ini adalah 5 metode segmentasi tersebut :

1.      Thresholding

Thresholding adalah suatu metode segmentasi citra dimana prosesnya didasarkan pada perbedaan derajat keabuan dari citra. Derajat keabuan memiliki range nilai antara 0 255. Mekanisme kerja dari metode thresholding dibutuhkan suatu nilai batas yang disebut nilai threshold yang digunakan sebagai batas pemisah dari objek 1 dan objek 2.

Nilai intensitas citra apabila memiliki nilai lebih dari nilai threshold maka akan diubah menjadi putih (1) sedangkan nilai intensitas citra yang kurang dari nilai threshold akan diubah menjadi hitam (0) sehingga keluaran dari proses thresholding adalah berupa citra biner. Berikut ini contoh pengaplikasian dari metode thresholding pada citra bayi :

import cv2

image = cv2.imread('gambar.jpg', 0)

ret, thresholded = cv2.threshold(image, 140, 255, cv2.THRESH_BINARY)
cv2.imshow('Thresholded Image', thresholded)
cv2.waitKey(0)
cv2.destroyAllWindows()


 

Citra original : Citra output :

 

2.      Edge Detection

Edge detection atau yang memiliki arti deteksi tepi digunakan untuk mengidentifikasi garis batas dari suatu objek yang terdapat pada citra. Tepian ini dapat dipandang sebagai lokasi piksel dimana terdapat nilai perbedaan intensitas citra secara ekstrem sehingga semua garis tepi pada semua objek akan terdeteksi. Deteksi tepi ini dapat dipraktikan pada pemrograman python OpenCV yaitu salah satunya menggunakan metode Canny.

import cv2

image = cv2.imread('gambar.jpg', 0)  # Ubah ke grayscale

edges = cv2.Canny(image, 100, 200)  # Ubah nilai ambang sesuai kebutuhan

cv2.imshow('Citra Asli', image)
cv2.imshow('Deteksi Tepi', edges)
cv2.waitKey(0)
cv2.destroyAllWindows()

 

 

Citra awal : Citra output :

3.      Watershed[2] 

Metode watershed merupakan salah satu metode dalam segmentasi citra yang membagi citra menjadi region yang berbeda dengan menggambarkan citra sebagai relief topografi. Watershed biasa digunakan untuk memisahkan objek yang saling berhimpitan. Konsep dari cara kerja watershed adalah dengan menemukan garis pemisah antara objek berbeda dalam citra berdasarkan perubahan intensitasnya. Berikut proses dari metode segmentasi watershed :

 


 

Hasil akhir proses segmentasi watershed

Naah pada proses tersebut, terdapat langkah-langkah untuk mendapatkan 2 objek dengan garis batas pada watershed yaitu sebagai berikut :

       Citra diubah atau ditransformasikan secara euclied distance nya

       Pada citra ditemukan sebuah titik puncak dari masing-masing objek

       Dengan berdasarkan pada titik puncak, objek tersebut direverse sehingga akan ditemukan titik rendahnya

       Naah dari citra titik rendah tersebut, maka dapat dideteksi 2 objek yang berbeda sehingga selanjutnya dapat dibuat garis batas diantara kedua objek tersebut

 

4.      Based on HSV

Pada metode ini, kita akan memisahkan citra berdasarkan warnanya. Naah pada segmentasi ini citra akan mengidentifikasi objek didalamnya dengan memperhatikan tingkat Hue Saturation dan Valuenya (HSV) sehingga akan terseleksi piksel dengan nilai HSV yang sama. Metode ini biasanya diawali dengan mengkonversi ruang warna citra yang semula ruang warna RGB menjadi ruang warna HSV. Selanjutnya akan ditentukan nilai minimal dan maksimal dari masing-masing parameter HSV nya. Dan hasilnya, objek pada citra yang memiliki nilai HSV direntang tersebut akan terseleksi dari objek selain dari rentang tadi. Untuk lebih mudah memahaminya maka sobat dapat melihat aplikasi dari segmentasi based on HSV pada program OpenCV berikut ini :

import cv2
import numpy as np

def empty(a):
    pass

cv2.namedWindow("TrackBar")
cv2.resizeWindow("TrackBar", 640, 240)
cv2.createTrackbar("Hue Min","TrackBar",179,179,empty)
cv2.createTrackbar("Hue Max","TrackBar",179,179,empty)
cv2.createTrackbar("Sat Min","TrackBar",33,255,empty)
cv2.createTrackbar("Sat Max","TrackBar",255,255,empty)
cv2.createTrackbar("Val Min","TrackBar",0,255,empty)
cv2.createTrackbar("Val Max","TrackBar",255,255,empty)

while True:
    img = cv2.imread("gambar.jpg")
    imgN = cv2.resize(img,(1080,720))
    imgHSV = cv2.cvtColor(imgN,cv2.COLOR_BGR2HSV)

    h_min = cv2.getTrackbarPos("Hue Min", "TrackBar")
    h_max = cv2.getTrackbarPos("Hue Max", "TrackBar")
    s_min = cv2.getTrackbarPos("Sat Min", "TrackBar")
    s_max = cv2.getTrackbarPos("Sat Max", "TrackBar")
    v_min = cv2.getTrackbarPos("Val Min", "TrackBar")
    v_max = cv2.getTrackbarPos("Val Max", "TrackBar")
    
    lower = np.array([h_min, s_min, v_min])
    upper = np.array([h_max, s_max, v_max])
    mask = cv2.inRange(imgHSV, lower, upper)
    imgResult = cv2.bitwise_and(imgN, imgN, mask=mask)

    cv2.imshow("Result",imgResult)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

 

 

 

    lower = np.array([h_min, s_min, v_min])
    upper = np.array([h_max, s_max, v_max])
    mask = cv2.inRange(imgHSV, lower, upper)
    imgResult = cv2.bitwise_and(imgN, imgN, mask=mask)

    cv2.imshow("Result",imgResult)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
Citra hasil segmentasi :

Citra awal :

Trackbar

 

 

 

 

 

Naah proses diatas adalah proses segmentasi pada citra buah apel dengan tujuan agar dapat mendeteksi keberadaan apel pada citra tersebut. Proses tersebut dilakukan secara manual dengan menggunakan trackbar agar didapatkan nilai HSV minimal dan maksimal dari warna merah buah apel sehingga didapatkan hasil berupa citra segmentasi buah apel.

 

Okey, sekarang sudah mencapai akhir dari materi segmentasi image processing. Pada materi ini sobat sudah mempelajari konsep-konsep dari proses segmentasi suatu citra yaitu antara lain

       Pengertian segmentasi yaitu pemrosesan gambar dengan membagi atau mempartisi gambar menjadi beberapa bagian yang saling terpisah dan terdefinisi dengan jelas

       Tujuan dari segmentasi yaitu deteksi dan klasifikasi objek

       Jenis-jenis dari segmentasi yaitu ada semantik, instance dan panopatic segmentasi

       Metode segmentasi yang antara lain adalah thresholding, watershed, edge detection. Dan based on HSV.

Dengan begitu, materi pada modul kali ini telah berakhir. Semoga ilmunya dapat bermanfaat ya, semangat !

 


tolong setiap jenis dikasih codingannya ya

dikasih codinganya. step by step ya

Last modified: Monday, 7 August 2023, 10:11 AM