Segmentasi Citra Manual vs Otomatis

Admin
0
Segmentasi citra merupakan salah satu hal yang paling umum dilkauka dalam image processing. Pada kesempatan ini saya akan membagikan cara melakukan segmentasi citra secara otomatis dan manual pada platform MATLAB.

1. Segmentasi Manual
Pada dasarnya, segmentasi manual dilakukan dengan melakukan proses threshold menggunakan suatu nilai batas. Sebagai bahan ujicoba, saya gunakan citra yang udah ada di MATLAB itu sendiri, rice.png. Berikut codenya :

im = imread('rice.png');
figure(1)
imagesc(im) ; colormap gray

Setelah di running, hasil seperti berikut akan muncul :

Citra masukan : grain.jpg

Citra ini berformat uint8, artinya sebarab bilai pixel hitam ke putih berkisar dari 0 - 255. Sebagai contoh, jika saya ingin memisahkan butiran padi pada gambar diatas, maka saya harus menyediakan nilai ambang batas "Th" . Pada kasus ini saya hanya menganggap pixel yang nilainya lebih besar daripada Th sebagai pixel si- beras. Coba code berikut:

Th       = 150 ;
imTh     = im> Th ;
figure(2)
imagesc(imTh) ; colormap gray

Variabel imTh adalah citra hasil segmentasi beras menggunakan nilai ambang Th sebesar 150. Lihat hasilnya :

Citra tersegmentasi : (Th = 150)

Keliatan kan, si beras mulai terpiah dari background nya. Tentunya, kalian juga bisa memvariasikan nilai Th untuk mendapatkan hasil terbaik. Berikut adalah hasil lainnya menggunakan nilai Th yang lebih tinggi.

Citra tersegmentasi : (Th = 170)

Semakin tinggi nilai Th yang digunakan, semakin sedikit pula pixel yang tersegmentasi, karena tadinya kita menggunakan operator ">".

2. Segmentasi Otomatis
Nah, ada cara lain untuk melakukan proses segmentasi ini yaitu secara otomatis. Dalam pembahasan kali ini, saya akan merujuk pada metode yang sangat umum yaitu Otsu. Penjelasan singkat mengenai metode ini dapat kalian baca disini. Tapi pada tulisan ini saya hanya menunjukkan cara penggunaannya di MATAB.

Intinya, ,etode Otsu membantu kita dalam mencari nilai ambang Th, yang mana nantinya akan digunakan untuk melakukan proses segmentasi. Berikut contoh code-nya :

T           = graythresh(im);
imThOtsu    = imbinarize(im,T);
figure(3)
imagesc(imThOtsu) ; colormap gray

Fungsi graythresh akan mencari nilai batas optimum, lalu  nilai ini akan digunakan untuk mensegmentasi pixel yang diinginkan menggunakan perintah imbinarize. Haislnya adalah seperti berikut :

                                        Citra tersegmentasi : Metode otomatis

Keliatan kan, hasilnya lebih baik meskipun tanpa menggunakan nilai  Th secara manual.

Oke terakhir, kalau diperhatikan semua code yang ada diatas hanya mampu memisahakn pixel menjadi 2 bagian yaitu hitam dan putih (1 0). Sedangkan, pada kasus tertentu, bisa saja lebih dari 2 jenis pixel harus dipisahkan. Tenang, metode Otsu juga punya solusi untuk ini. Berikut contohnya :

N           = 2 ;
T           = multithresh(im,N);
imMultiOtsu = imquantize(im,T) ;
figure (4)
imagesc(imMultiOtsu) ; colorbar

Variabel N adalah jumlah kelas pixel yang akan disegmentasi, yang mana pada citra tersegmentasi, jumlah kelasnya menjadi N + 1. Berikut hasilnya :

Segmentasi multi-class : 3 kelas

Dari hasil diatas, terlihat bahwa pixel masukan dikategorikan menjadi 3 kelas dengan warna masig-masing adalah kuning, hijau, dan biru.  

Oke, kita selesai. Untuk mempermudah, berikut saya rangkum semua code yang telah digunakan di atas. 

clc
clear
close all

im = imread('rice.png');
figure(1)
imagesc(im) ; colormap gray

Th          = 150 ;
imTh        = im> Th ;
figure(2)
imagesc(imTh) ; colormap gray


figure(3)
T           = graythresh(im);
imThOtsu    = imbinarize(im,T);
imagesc(imThOtsu) ; colormap gray

N           = 2 ;
T           = multithresh(im,N);
imMultiOtsu = imquantize(im,T) ;
figure (4)
imagesc(imMultiOtsu) ; colorbar

Semog bermanfaat. Jangan lupa kasih masukan, request tutorial juga boleh.  

Ngomong-ngomong, kalian juga bisa liat koeksi video Youtube saya  (disini). Semuanya tentang penggunaan MATLAB.

Salam.









Post a Comment

0Comments
* Please Don't Spam Here. All the Comments are Reviewed by Admin.
Post a Comment (0)

Disclaimer : Content provided on this page is for general informational purposes only. We make no representation or warranty of any kind, express or implied, regarding the accuracy, adequacy, validity, reliability, availability or completeness of any information.

#buttons=(Accept !) #days=(20)

Our website uses cookies to enhance your experience. Learn More
Accept !
To Top