Iklan Header

projects.co.id

Program Segmentasi Citra Dengan Metode K-Means Clustering Menggunakan Matlab

Semangat pagi temen-temen, pada senin pagi yang cerah ini, kembali saya akan membagikan tutorial coding tentang segmentasi citra menggunakan matlab.

Kalau sebelumnya saya telah menjelaskan tentang segmentasi citra dengan metode thresholding, kali ini saya tetap akan menjelaskan tentang segmentasi citra, namun menggunakan metode K-Means Clustering.

Metode K-Means Clustering  sendiri digunakan untuk memisahkan antar region dalam citra berdasarkan pada perbedaan warna.

Citra asli yang semula dalam ruang warna RBG di konversi menjadi ruang warna L*a*b kemudian dilakukan klustering dengan menggunakan komponen a dan b.

Berikut langkah-langkah pemrograman segmentasi citra dengan metode K-Means Clustering menggunakan matlab.

:: Membaca dan menampilkan citra asli.

Img = imread('orange.jpg');
axes(handles.axes1);
imshow(Img);

Sehingga diperoleh tampilan sebagai berikut.

Program Segmentasi Citra Dengan Metode K-Means Clustering Menggunakan Matlab
:: Mengkonversi ruang warna citra yang semula berada pada ruang warna RBG menjadi ruang warna L*a*b

cform = makecform('srgb2lab');
lab = applycform(Img,cform);
axes(handles.axes2);
imshow(lab);

Hasil konversi ruang warna citra adalah sebagai berikut.
Program Segmentasi Citra Dengan Metode K-Means Clustering Menggunakan Matlab

:: Melakukan klustering dengan masukan berupa komponen a dan b dari citra L*a*b. Jumlah kluster yang digunakan adalah 3.

ab = double(lab(:,:,2:3));
nrows = size(ab,1);
ncols = size(ab,2);
ab = reshape(ab,nrows*ncols,2);

nColors = 3;
[cluster_idx, cluster_center] = kmeans(ab,nColors,'distance','sqEuclidean', ...
'Replicates',3);

pixel_labels = reshape(cluster_idx,nrows,ncols);
RGB = label2rgb(pixel_labels);
axes(handles.axes3);
imshow(RGB,[]), title('image labeled by cluster index');

Hasil segmentasi yang diperoleh adalah sebagai berikut.
Program Segmentasi Citra Dengan Metode K-Means Clustering Menggunakan Matlab

:: Menampilkan hasil segmentasi pada masing-masing kluster.

segmented_images = cell(1,3);
rgb_label = repmat(pixel_labels,[1 1 3]);

for k = 1:nColors
color = Img;
color(rgb_label ~= k) = 0;
segmented_images{k} = color;
figure,imshow(segmented_images{k}), title(strcat(['objects in cluster ',num2str(k)]));
end

Hasil yang diperoleh adalah sebagai berikut.
Program Segmentasi Citra Dengan Metode K-Means Clustering Menggunakan Matlab
Program Segmentasi Citra Dengan Metode K-Means Clustering Menggunakan Matlab
Program Segmentasi Citra Dengan Metode K-Means Clustering Menggunakan Matlab

Berikut code lengkap Program Segmentasi Citra Dengan Metode K-Means Clustering Menggunakan Matlab.

function varargout = KMeans(varargin)
% KMEANS M-file for KMeans.fig
% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @KMeans_OpeningFcn, ...
'gui_OutputFcn', @KMeans_OutputFcn, ...
'gui_LayoutFcn', [] , ...
'gui_Callback', []);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end

if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT

% --- Executes just before KMeans is made visible.
function KMeans_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% Choose default command line output for KMeans
handles.output = hObject;

% Update handles structure
guidata(hObject, handles);

% --- Outputs from this function are returned to the command line.
function varargout = KMeans_OutputFcn(hObject, eventdata, handles)
% varargout cell array for returning output args (see VARARGOUT);

% Get default command line output from handles structure
varargout{1} = handles.output;

% --- Executes on button press in KMeans.
function KMeans_Callback(hObject, eventdata, handles)
% hObject handle to KMeans (see GCBO)
Img = imread('orange.jpg');
axes(handles.axes1);
imshow(Img);

%Mengkonversi ruang warna citra yang semula berada pada ruang warna RGB menjadi ruang warna L*a*b
cform = makecform('srgb2lab');
lab = applycform(Img,cform);
axes(handles.axes2);
imshow(lab);

%Melakukan klustering dengan masukan berupa komponen a dan b dari citra
%L*a*b. Jumlah kluster yang digunakan adalah 3
ab = double(lab(:,:,2:3));
nrows = size(ab,1);
ncols = size(ab,2);
ab = reshape(ab,nrows*ncols,2);

nColors = 3;
[cluster_idx, cluster_center] = kmeans(ab,nColors,'distance','sqEuclidean', ...
'Replicates',3);

pixel_labels = reshape(cluster_idx,nrows,ncols);
RGB = label2rgb(pixel_labels);
axes(handles.axes3);
imshow(RGB,[]), title('image labeled by cluster index');
%Menampilkan hasil segmentasi pada masing-masing kluster
segmented_images = cell(1,3);
rgb_label = repmat(pixel_labels,[1 1 3]);

for k = 1:nColors
color = Img;
color(rgb_label ~= k) = 0;
segmented_images{k} = color;
figure,imshow(segmented_images{k}), title(strcat(['objects in cluster ',num2str(k)]));
end

% --- Executes on button press in Exit.
function Exit_Callback(hObject, eventdata, handles)
% hObject handle to Exit (see GCBO)
msgbox('Thanks for using Image Editor tool');
pause(1);
close();
close();

Berikut screenshoot hasil running program.
:: Tampilan awal
Program Segmentasi Citra Dengan Metode K-Means Clustering Menggunakan Matlab
:: K-Means
Program Segmentasi Citra Dengan Metode K-Means Clustering Menggunakan Matlab
Program Segmentasi Citra Dengan Metode K-Means Clustering Menggunakan Matlab
Program Segmentasi Citra Dengan Metode K-Means Clustering Menggunakan Matlab
Program Segmentasi Citra Dengan Metode K-Means Clustering Menggunakan Matlab

:: Exit
Program Segmentasi Citra Dengan Metode K-Means Clustering Menggunakan Matlab

Berlangganan update artikel terbaru via email:

0 Response to "Program Segmentasi Citra Dengan Metode K-Means Clustering Menggunakan Matlab"

Posting Komentar

Iklan Atas Artikel

Iklan Tengah Artikel 1

Iklan Tengah Artikel 2

Iklan Bawah Artikel