Segmentasi Citra Grayscale dengan Metode K-Means Clustering
K-means clustering merupakan salah satu algoritma yang dapat mempartisi data menjadi beberapa region kluster. Proses partisi data didasarkan pada jarak terdekat antara data dengan centroid masing-masing kluster. Berikut ini merupakan salah satu contoh aplikasi pemrograman matlab mengenai segmentasi citra grayscale dengan metode k-means clustering. File citra yang digunakan adalah ‘cat.jpg’ di mana objek yang ingin disegmentasi adalah berupa hewan kucing, sedangkan background adalah berupa rumput.
Langkah-langkah segmentasi citra adalah sebagai berikut:
1. Membaca citra rgb asli
2. Mengkonversi citra RGB menjadi citra grayscale menggunakan persamaan
Grayscale = 0.2989 * R + 0.5870 * G + 0.1140 * B
3. Melakukan segmentasi citra grayscale dengan metode k-means clustering. Algoritma k-means digunakan untuk mempartisi dua region kluster
Pada citra hasil segmentasi di atas, kluster 1 direpresentasikan oleh region berwarna biru, sedangkan kluster 2 direpresentasikan oleh region berwarna kuning
4. Memilih region kluster yang memiliki luas paling kecil. Hal tersebut dilakukan agar diperoleh region object yaitu hewan kucing
5. Melakukan filtering menggunakan median filter untuk menyempurnakan hasil segmentasi
6. Melakukan operasi morfologi berupa area opening dengan tujuan untuk menghilangkan noise
7. Citra biner hasil operasi morfologi kemudian dijadikan sebagai masking untuk memvisualisasikan bounding box pada citra rgb asli
File source code lengkap beserta citra pada pemrograman di atas dapat diperoleh melalui halaman berikut ini: Source Code
Sedangkan tampilan source code nya adalah
clc; clear; close all; Img = imread('cat.jpg'); grayImage = rgb2gray(Img); subplot(2, 2, 1); imshow(Img, []); title('Original Image'); subplot(2, 2, 2); imshow(grayImage, []); title('Grayscale Image'); numberOfClasses = 2; indexes = kmeans(grayImage, numberOfClasses); classImage = reshape(indexes, size(grayImage)); h = subplot(2, 2, 3); imshow(classImage, []); title('Classified Image'); colormap(h,parula); class = zeros(size(grayImage)); area = zeros(numberOfClasses,1); for n = 1:numberOfClasses class(:,:,n) = classImage==n; area(n) = sum(sum(class(:,:,n))); end [~,min_area] = min(area); object = classImage==min_area; bw = medfilt(object,[5 5]); bw = bwareaopen(bw,5000); s = regionprops(bw,'BoundingBox'); bbox = cat(1, s.BoundingBox); RGB = insertShape(Img, 'FilledRectangle', bbox, 'Color', 'yellow', 'Opacity', 0.3); RGB = insertObjectAnnotation(RGB,'rectangle',bbox,'Object','TextBoxOpacity',0.9,'FontSize',18); subplot(2, 2, 4); imshow(RGB,[]); title('Detected Object');
Penerapan algoritma k-means clustering untuk segmentasi citra grayscale dapat dilihat pada video tutorial berikut ini:

Posted on December 26, 2016, in Pengolahan Citra and tagged algoritma k-means clustering, algoritma kmeans klustering matlab, citra adalah, citra grayscale adalah, citra rgb adalah, contoh koding kmeans klustering, contoh koding matlab sederhana, contoh koding segmentasi citra, contoh program kmeans klustering sederhana, contoh program matlab sederhana, contoh program segmentasi citra, deteksi objek menggunakan matlab, k-means clustering menggunakan matlab, kmeans adalah, kmeans klustering adalah, kmeans klustering matlab, pengolahan citra adalah, pengolahan citra di matlab, Pengolahan Citra Digital, pengolahan citra grayscale, segmentasi citra, segmentasi citra adalah, segmentasi citra dengan matlab, tutorial pengaolahan citra. Bookmark the permalink. 28 Comments.
assalamuallaikum mas
maaf, kira2 ini salah di mananya ya mas
??? Error: File: segmentasi2.m Line: 33 Column: 3
Expression or statement is incorrect–possibly unbalanced (, {, or
[.
trimakasih mas
error pas di code ini mas
[~,min_area] = min(area);
assalamualaikum bang adi mohon pencerahannya mungkin ada contoh program kmeans klastering yg pengelompokkannya berdasarkan nilai rgb…terimakasih…
waalaikumsalam zainul
pada prinsipnya, koding algoritma kmeans untuk citra grayscale maupun rgb sama saja
yang membedakan hanya ukuran matriks masukannya, jika pada citra grayscale masukan kmeans adalah matriks yang berukuran n x 1, maka pada citra rgb masukan kmeans adalah matriks yang berukuran n x 3, di mana n adalah banyaknya piksel yang menyusun citra tsb
materi mengenai hal tsb bisa dilihat pada halaman berikut
https://pemrogramanmatlab.com/2016/10/29/segmentasi-citra-dengan-metode-multi-thresholding-dan-k-means-clustering/
dan
https://pemrogramanmatlab.com/2016/11/01/ekstraksi-ciri-citra-rgb/
Sehabis divisualisasikan dengan bounding box bagaimana cara croping imagenya semisal imagenya yg terditeksi lebih dari 1?.. terimakasih
cara koding untuk hal tersebut bisa dilihat pada halaman berikut ini
https://pemrogramanmatlab.com/2013/11/05/deteksi-wajah-face-detection-menggunakan-algoritma-viola-jones/
Assalamualaikum Ka. saya mau nanya apakah benar langkah saya ini, jika saya akan membuat file .mat dalam untuk tujuan menyimpan database citra yang akan digunakan untuk mencocokan citra yang akan diinput saat proses identifikasi ?
Waalaikumsalam Wr. Wb.
untuk database dalam sistem identifikasi, citra dapat disimpan dalam format .mat
tetapi pada umumnya yg disimpan dalam database berformat .mat adalah ciri yg diekstrak dari citra training
jadi bukan seluruh nilai intensitas piksel citranya yg disimpan tetapi hanya ciri nya saja yg diekstrak
mengenai ekstraksi ciri, azkya bisa membaca materinya pada halaman berikut ini
https://pemrogramanmatlab.com/pengolahan-citra-digital/ekstraksi-ciri-citra-digital/
wah iya Ka saya sudah baca dan saya juga udah liat contohnya program yang citra daun. saya jd pengen minta saran nih ka untuk tugas akhir saya sedang bikin program finger vein dan untuk identifikasinya kalau bikin net.mat kaya dicitra daun gmn ya Ka ? tp saya liat citra daun terbilang dikit baris kodenya, sedangkan program fingervein yg sedang saya buat itu lebih dari satu file .m nya……. bisakah dibikin file .mat atau memungkinkan bikin perbadingan folder pathname gitu memang bs ka untuk matching image nya? mohon sarannya Ka.
untuk saran saya, lebih baik koding ekstraksi ciri dijadikan satu dalam satu mfile sehingga ciri yg diekstrak bisa disimpan dalam satu file .mat
dibandingkan dg menjalankan beberapa mfile kemudian menggabungkan ciri-ciri yg terpisah ke dalam satu file .mat
Siap.. Terima kasih banyak atas jawaban dan sarannya Ka Adi.
sama sama azkya
sukses utk penelitiannya
ada gak ya contoh program penerapan menggunakan kalman filter ?
kalman filter dapat diterapkan dalam proses tracking objek dalam suatu video
kalau penerapannya mudah kalman filter atau background subtraction dalam deteksi objek ?
Kalman filter merupakan algoritma untuk tracking, sedangkan background subtraction merupakan algoritma untuk segmentasi
selamat pagi, mau tanya apa itu function parula? apa itu function sendiri? trims
Selamat pagi anggaelectro
Parula merupakan salah satu peta warna (colormap) dalam citra grayscale (pseudocolor)
kalau mau dibikin GUI, gimana ya caranya?
trimakasih 😀
asslamuallaikum bang, saya ini eror di bbox, apakah jika berbeda versi matlab akan berpengaruh pada codingnya? terimakasih
wassalamuallaikum
Waalaikumsalam
Source code di atas tidak bisa dijalankan jika hanya dicopypaste saja
Source code lengkap bisa diperoleh melalui tokopedia sehingga bisa langsung dirunning dan dikembangkan
siang kak saya mau bertanya, kalau metode yg cocok untuk segmentasi citra telapak tangan kira2 apa ya ? makasih kak
Siang
Bisa dicoba terlebih dahulu menggunakan metode thresholding atau deteksi tepi
selamat malam bang, saya mau nanya.. cara menghilangkan background dahak pada citra tbc agar yg tersisa hanya bakterinya itu gimana ya?
makasih bang.
Selamat malam
Bisa mencoba mengimplementasikan metode segmentasi di atas
mau tanya apakah bisa dilakukan proses morfologi setelah k-means?kalau boleh tau gimana caranya ya?
Maaf Pak Mau Tanya
Persamaan Grayscale = 0.2989 * R + 0.5870 * G + 0.1140 * B itu dapat dari mana Ya Pak
terima Kasih
Tidak harus menggunakan persamaan tsb
Bisa menggunakan persamaan lainnya