Segmentasi Gambar merupakan langkah awal dalam pengolahan citra digital. Banyak sekali metode yang dikembangkan segmentasi gambar seperti metode statistik biasa ataupun menggunakan teknik thresholding.
Apa itu segmentasi gambar?
Contents
Adalah teknik untuk memisahkan antara foreground dengan background, misalkan pada gambar berikut dengan foreground yang diinginkan berupa gambar kucing saja
Teknik segmentasi gambar
Segmentasi gambar adalah pekerjaan yang sangat rumit dan merupakan topik khusus dalam computer vision, ada banyak teknik yang dikembangkan yaitu
- thresholding static yaitu dengan cara menentukan nilai ambang batas secara manual
- thresholding dinamis yaitu dengan mencari nilai thresholding T menggunakan teknik Otsu
keduanya digunakan dalam mode grayscale, bisa baca lebih lanjut di https://softscients.com/2020/04/03/buku-pengolahan-citra-digital-dengan-matlab-segmentasi/#gsc.tab=0
Jenis Segmentasi gambar
Sebenarnya segmentasi gambar itu sangat luas sekali, karena terbagi menjadi
- semantic segmentation
- instance segmentation
Bisa kalian lihat perbedaanya sebagai berikut
Rumitnya segmentasi gambar
teknik segmentasi gambar akan semakin rumit jika gambar tersebut mempunyai pencahayaan tidak rata bahkan mempunyai variasi warna – true color untuk itu banyak dikembangkan segmentasi gambar melalui teknik dibawah ini
- clustering warna, cara mudahnya menggunakan Kmeans Clustering – https://softscients.com/2021/01/17/clustering-color/#gsc.tab=0
- atau menggunakan teknik color palletting yaitu mengurangi variasi warna menjadi warna solid – https://softscients.com/2021/04/21/segmentasi-warna-berdasarkan-color-palette/#gsc.tab=0
- menggunakan teknik fuzzy c means clustering yang didahului dengan operasi morfologi https://softscients.com/2020/04/03/retina-blood-vessel-segmentation/#gsc.tab=0
- teknik watershed bila objek tersebut saling dempet satu sama lain – https://softscients.com/2020/03/30/penerapan-watershed/
Solusi segmentasi gambar
Begitu sulitnya segmentasi gambar maka ada 2 cara bisa dilakukan yaitu
- menggunakan lingkungan terkontrol yang merupakan cara termudah seperti membuat studio box – https://softscients.com/2020/05/19/membuat-studio-mini-untuk-capture-object/#gsc.tab=0 melalui teknik ini, maka cukup dengan thresholding seperti biasa saja hasilnya akan sangat bagus
- gunakan background yang seragam usahakan menggunakan warna dop-kusam untuk menyerap cahaya sehingga tidak dipantulkan!
- menggunakan algoritma yang robust seperti
- Grab cut
- Deep Machine Learning seperti Unet Model – https://softscients.com/2021/07/10/implementasi-deep-machine-learning-untuk-segmentasi-gambar/#gsc.tab=0
untuk point 2 diatas membutuhkan pemahaman matematika yang baik serta paham dengan image processing, solusi untuk deep machine learning bisa kalian gunakan PyTorch, Tensorflow atau Java . Sedangkan untuk image processing kalian butuh library khusus seperti OpenCV
Hasil Segmentasi Gambar
Tentu dengan hasil segmentasi gambar yang baik maka akan akan terpisah foreground dan background, Perhatikan gambar berikut – https://softscients.com/2020/05/30/leaf-shape-based-plant-species-recognition/#gsc.tab=0 –
Ada 2 gambar yaitu kiri dan kanan
- gambar kiri adalah gambar asli
- gambar kanan adalah gambar hasil segmentasi, biasanya disebut dengan masking image yaitu terdiri dari 2 warna saja hitam dan putih
- putih adalah ROI – region of interest
- hitam adalah background
Area ROI yang akan dihitung pixel nya sedangkan warna background nya diabaikan! pada contoh dibawah ini, metode thresholding tidak akan berhasil dengan baik! karena distribusi pixel yang beragam! Kalian butuh teknik khusus, cara paling mudah yaitu algoritma grab cut
Berikut proses segmentasi menggunakan grabcut (dibagian paling kanan sengaja diberi warna merah untuk memastikan bahwa pixel yang dihitung adalah bagian daun saja)
Pengaruh Segmentasi Gambar pada hasil ciri fitur
Segmentasi gambar bertujuan untuk memisahkan antara foreground dan background. Kegunaan tersebut untuk meningkatkan akurasi perhitungan yang fokus pada ROI – region of interest saja.
Saya ambil contoh dari https://www.researchgate.net/figure/Sample-of-dataset-images-used-as-a-Healthy-Golden-Delicious-b-Defected-Golden-Delicious-c_fig3_341876547
Ataupun dari https://www.kaggle.com/moltean/fruits, kita lihat hasilnya antara perhitungan mean Pixel RGB dengan tanpa ROI dan ROI. Perhatikan gambar dibawah ini mempunyai ukuran yaitu 170 x 197 = 33490
Hitung nilai Pixel
Kita akan hitung mean pixel nya yaitu dengan
- menghitung seluruh gambar tanpa melihat background –> TANPA ROI
- hanya menghitung objek ROI yaitu buah apel saja dan mengabaikan nilai pixel background –> dengan ROI
Tentu hasil TANPA ROI berbeda dengan yang menggunakan ROI, gambar diatas saya perlihatkan proses dibalik layar yaitu mask_image digunakan untuk menandakan pixel yang harus dihitung dan yang tidak. Area hitam tidak akan dihitung!
- jumlah pixel tanpa ROI: 33490
- jumlah pixel dengan ROI: 13316
dengan ROI (karena objeknya kecil) maka TOTAL PIXEL nya pun lebih sedikit daripada yang TANPA ROI
Kesimpulan Hasil
Mengingat perbedaan yang jauh hasil antara TANPA ROI dan ROI, maka kalian harus hati-hati dalam mengolah gambar terutama untuk proses segmentasi gambar. Sebagai referensinya, saya menggunakan bahasa java dan openCV untuk melakukan proses diatas.
Proses Segmentasi
Ada banyak sekali paper yang membahas mengenai segmentasi – https://link.springer.com/article/10.1007/s40595-014-0028-3. Namun rata2 banyak yang gagal! alias tidak sempurna
Tapi dengan teknik yang tepat, maka hasil segmentasi bisa lebih baik
Berikut teknik yang saya gunakan menghasikan segmentasi yang baik
Referensi
https://www.ijert.org/research/Fruit-Recognition-using-Image-Processing-IJERTCONV7IS08102.pdf