Anda di halaman 1dari 25

Bab 1

Pendahuluan

1.1 Latar Belakang


Seiring dengan perkembangan zaman, teknologi yang menggunakan komputer
berkembang dengan pesat. Hampir setiap individu di dunia memerlukan komputer sebagai alat
bantu untuk menyelesaikan masalahnya. Hampir semua sistem analog digantikan dengan
sistem komputerisasi. Keunggulannya adalah sistem komputerisasi lebih mudah dalam
pengontrolan. Dalam hal ini misalnya pengontrolan di dalam mengidentifikasi suatu objek dan
warna. Komputer diusahakan untuk dapat bekerja mendekati proses kerja otak manusia.
Kemampuan inilah yang akan kami tiru dengan menggunakan mesin (komputer). Komputer
menerima masukan yang berupa citra objek yang kemudian citra tersebut akan diproses,
diidentifikasi dan diberikan keluaran berupa deskripsi objek di dalam citra.

1.2 Tujuan
Tujuan dilakukannya percobaan ini yaitu untuk mempermudah dalam
mengidentifikasi suatu objek dan warna pada citra digital.
Bab 2

Pembahasan

2.1 Dasar Teori

2.1.1 RGB (Red Green Blue)


RGB sering digunakan didalam sebagian besar aplikasi komputer karena dengan ruang
warna ini, tidak diperlukan transformasi untuk menampilkan informasi di layar monitor.
Alasan diatas juga menyebabkan RGB banyak dimanfaatkan sebagai ruang warna dasar bagi
sebagian besar aplikasi. Model warna RGB adalah model warna berdasarkan konsep
penambahan kuat cahaya primer yaitu Red, Green dan Blue. Dalam suatu ruang yang sama
sekali tidak ada cahaya, maka ruangan tersebut adalah gelap total. Tidak ada signal gelombang
cahaya yang diserap oleh mata kita atau RGB (0,0,0). Apabila ditambahkan cahaya merah pada
ruangan tersebut, maka ruangan akan berubah warna menjadi merah misalnya RGB (255,0,0),
semua benda dalam ruangan tersebut hanya dapat terlihat berwarna merah. Demikian juga
apabila cahaya diganti dengan hijau atau biru.

Warna RGB (Sumber http://en.wikipedia.org/wiki/RGB_color_model)

Apabila diberikan 2 macam cahaya primer dalam ruangan tersebut seperti (merah dan hijau),
atau (merah dan biru) atau (hijau dan biru), maka ruangan akan berubah warna masing-masing
menjadi kuning, atau magenta atau cyan. Warna-warna yang dibentuk oleh kombinasi dua
macam cahaya tersebut disebut warna sekunder. Warna Tersier adalah warna yang hanya dapat
terlihat apabila ada tiga cahaya primer, jadi apabila dinon-aktifkan salah satu cahaya, maka
benda tersebut berubah warna. Contoh warna tersier seperti abu-abu,putih.

Pada perhitungan dalam program-program komputer model warna direpresentasi dengan nilai
komponennya, seperti dalam RGB (r, g, b) masing-masing nilai antara 0 hingga 255 sesuai
dengan urusan masing-masing yaitu pertama Red, kedua Green dan ketigha adalah nilai Blue
dengan demikian masing-masing komponen ada 256 tingkat. Apabila dikombinasikan maka
ada 256 x 256 x 256 atau 16.777.216 kombinasi warna RGB yang dapat dibentuk.
Konfigurasi Warna RGB (Sumber http://en.wikipedia.org/wiki/RGB_color_model)

Dalam mendesign web warna RGB kerapkali direpresentasikan dengan Hex Triplet atau kombinasi 2
pasang bilangan hexadecimal, seperti #FF5D25 artinya Red = FF atau 15*16 + 15 = 255, Green = 5D
atau 5*16 + 13 = 93 dan Blue = 25 atau 2*16 + 5 = 37. Jadi RGB (255,93,37)

2.1.2 HSV

Model warna HSV mendefinisikan warna dalam terminologi Hue, Saturation dan Value. Hue
menyatakan warna sebenarnya, seperti merah, violet, dan kuning. Hue digunakan untuk
membedakan warna-warna dan menentukan kemerahan (redness), kehijauan (greeness), dsb,
dari cahaya. Hue berasosiasi dengan panjang gelombang cahaya. Saturation menyatakan
tingkat kemurnian suatu warna, yaitu mengindikasikan seberapa banyak warna putih diberikan
pada warna. Value adalah atribut yang menyatakan banyaknya cahaya yang diterima oleh mata
tanpa memperdulikan warna.
2.1.3 Konversi citra RGB ke HSV

Proses deteksi warna diawali dengan mengkonversi ruang warna citra RGB (Red, Green,
Blue) menjadi HSV (Hue, Saturation, Value). Selanjutnya proses klasifikasi warna dilakukan
berdasarkan pengelompokan nilai Hue.

HSV merupakan kependekan dari Hue, Saturation, dan Value. Dimana karakteristik pokok
dari warna tersebut adalah:

1. Hue: menyatakan warna sebenarnya, seperti merah, violet, dan kuning dan digunakan
menentukan kemerahan (redness), kehijauan (greeness), dsb.

2. Saturation: kadang disebut chroma, adalah kemurnian atau kekuatan warna.

3. Value : kecerahan dari warna. Nilainya berkisar antara 0-100 %. Apabila nilainya 0
maka warnanya akan menjadi hitam, semakin besar nilai maka semakin cerah dan muncul
variasi-variasi baru dari warna tersebut.

RGB merupakan kependekan dari Red, Green, Blue. Warna – warna yang dibentuk oleh
model warna merupakan hasil campuran dari warna-warna primer merah, hijau, dan biru
berdasarkan komposisi tertentu.

Ada sebuah metode untuk mengkonversi HSV ke RGB dan sebaliknya yang dibuat oleh
Travis sebagai berikut:

Pertama-tama cari nila maksimum dan minimum dari ketiga komponen RGB.

1. Satruation (S) :

S=(max-min)/max

2. Value (V) :

V= max

3. Hue (H) : Pertama-tama hitung R’, G’, dan B’

R'=max-R / max-min

G'=max-G / max-min

B'=max-B / max-min

Jika Satruation, S=0, maka hue tidak terdefinisi (tidak memiliki hue berarti monochrome).
kemungkinan lain:

· if (R = max and G = min) -> H = 5 + B’

· else if (R = max and G ≠ min) -> H = 1 − G’


· else if (G = max and B = min) -> H = R’ + 1

· else if (G = max and B ≠ min) -> H = 3 – B’

· else if (R = max) -> H = 3 + G’

· otherwise -> H = 5 – R’

Hue (H) lalu dikonversi menjadi derajat/degrees dengan cara mengalikan dengan 60 sehingga
menghasilkan HSV dengan S dan V antara ) dan 1 dan H antara 0-360

1. Ekstraksi Ciri Bentuk

Untuk membedakan bentuk objek satu dengan objek lainnya, dapat menggunakan parameter
yang disebut dengan ‘eccentricity’. Eccentricity merupakan nilai perbandingan antara jarak
foci ellips minor dengan foci ellips mayor suatu objek. Eccentricity memiliki rentang nilai
antara 0 hingga 1. Objek yang berbentuk memanjang/mendekati bentuk garis lurus, nilai
eccentricitynya mendekati angka 1, sedangkan objek yang berbentuk bulat/lingkaran, nilai
eccentricitynya mendekati angka 0. Penghitungan eccentricity diilustrasikan pada gambar di
bawah ini:

Parameter lainnya yang dapat digunakan untuk membedakan bentuk suatu objek
yaitu ‘metric’. Metric merupakan nilai perbandingan antara luas dan keliling objek. Metric
memiliki rentang nilai antara 0 hingga 1. Objek yang berbentuk memanjang/mendekati bentuk
garis lurus, nilai metricnya mendekati angka 0, sedangkan objek yang berbentuk
bulat/lingkaran, nilai metricnya mendekati angka 1. Penghitungan metric diilustrasikan pada
gambar di bawah ini:
2. Ekstraksi Ciri Warna
Untuk membedakan suatu objek dengan warna tertentu dapat menggunakan nilai hue yang
merupakan representasi dari cahaya tampak (merah, jingga, kuning, hijau, biru, ungu). Nilai hue
dapat dikombinasikan dengan nilai saturation dan value yang merupakan tingkat kecerahan suatu
warna. Untuk mendapatkan ketiga nilai tersebut, perlu dilakukan konversi ruang warna citra yang
semula RGB (Red, Green, Blue) menjadi HSV (Hue, Saturation, Value) melalui persamaan berikut:
R‘ = R/255
G‘ = G/255
B‘ = B/255
Cmax = max(R‘, G‘, B‘)
Cmin = min(R‘, G‘, B‘)
Δ = Cmax – Cmin
Perhitungan nilai Hue:

Perhitungan nilai Saturation:

Perhitungan nilai Value:


V = Cmax

sehingga ruang warna citra yang semula berbentuk kubus berubah bentuk menjadi kerucut

a.rgb colorspace b.hsv colorspace


2.2 Program yang digunakan

function varargout = Color_and_Shape_Detection(varargin)


% COLOR_AND_SHAPE_DETECTION MATLAB code for Color_and_Shape_Detection.fig
% COLOR_AND_SHAPE_DETECTION, by itself, creates a new
COLOR_AND_SHAPE_DETECTION or raises the existing
% singleton*.
%
% H = COLOR_AND_SHAPE_DETECTION returns the handle to a new
COLOR_AND_SHAPE_DETECTION or the handle to
% the existing singleton*.
%
% COLOR_AND_SHAPE_DETECTION('CALLBACK',hObject,eventData,handles,...) calls the
local
% function named CALLBACK in COLOR_AND_SHAPE_DETECTION.M with the given input
arguments.
%
% COLOR_AND_SHAPE_DETECTION('Property','Value',...) creates a new
COLOR_AND_SHAPE_DETECTION or raises the
% existing singleton*. Starting from the left, property value pairs are
% applied to the GUI before Color_and_Shape_Detection_OpeningFcn gets called. An
% unrecognized property name or invalid value makes property application
% stop. All inputs are passed to Color_and_Shape_Detection_OpeningFcn via varargin.
%
% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one
% instance to run (singleton)".
%
% See also: GUIDE, GUIDATA, GUIHANDLES

% Edit the above text to modify the response to help Color_and_Shape_Detection

% Last Modified by GUIDE v2.5 02-Jul-2016 01:44:03

% Begin initialization code - DO NOT EDIT


gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @Color_and_Shape_Detection_OpeningFcn, ...
'gui_OutputFcn', @Color_and_Shape_Detection_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 Color_and_Shape_Detection is made visible.
function Color_and_Shape_Detection_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% varargin command line arguments to Color_and_Shape_Detection (see VARARGIN)

% Choose default command line output for Color_and_Shape_Detection


handles.output = hObject;

% Update handles structure


guidata(hObject, handles);
movegui(hObject,'center');

% UIWAIT makes Color_and_Shape_Detection wait for user response (see UIRESUME)


% uiwait(handles.figure1);

% --- Outputs from this function are returned to the command line.
function varargout = Color_and_Shape_Detection_OutputFcn(hObject, eventdata, handles)
% varargout cell array for returning output args (see VARARGOUT);
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Get default command line output from handles structure


varargout{1} = handles.output;

% --- Executes on button press in pushbutton1.


function pushbutton1_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
[filename,pathname] = uigetfile('*.jpg');

if ~isequal(filename,0)
Img = imread(fullfile(pathname,filename));
axes(handles.axes1)
imshow(Img)
title('Original Image');

% Color Detection
[m,n,~] = size(Img);
hsv = rgb2hsv(Img);

H = hsv(:,:,1);

for y = 1:m
for x = 1:n
h = H(y,x);

% Ubah warna
if h < 11/255 % merah
h = 0;
elseif h < 32/255 % jingga
h = 21/255;
elseif h < 54/255 % kuning
h = 43/255;
elseif h < 116/255 % hijau
h = 85/255;
elseif h < 141/255 % cyan
h = 128/255;
elseif h < 185/255 % biru
h = 170/255;
elseif h < 202/255 % ungu
h = 191/255;
elseif h < 223/255 % magenta
h = 213/255;
elseif h < 244/255 % merah muda
h = 234/255;
else
h = 0; % merah
end

% Ubah komponen H
H(y,x) = h;
end
end

% Shape Detection
gray = rgb2gray(Img);
threshold = .8;
bw = ~im2bw(gray,threshold);
bw = imfill(bw,'holes');

[B,L] = bwboundaries(bw,'noholes');
stats = regionprops(L,'All');

class = zeros(12,1);

for k = 1:length(B)
boundary = B{k};
delta_sq = diff(boundary).^2;
perimeter = sum(sqrt(sum(delta_sq,2)));
area = stats(k).Area;
eccentricity = stats(k).Eccentricity;
metric = 4*pi*area/perimeter^2;

if metric<0.56
class(k,1) = 1;
elseif metric<0.89
if eccentricity>0.04 && eccentricity <0.05
class(k,1) = 2;
else
class(k,1) = 3;
end
else
class(k,1) = 4;
end

end

handles.Img = Img;
handles.H = H;
handles.class = class;
handles.bw = bw;
guidata(hObject, handles)

else
return
end

% --- Executes on button press in pushbutton2.


function pushbutton2_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton2 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
Img = handles.Img;
H = handles.H;

H_aksen = H==0/255;
H_aksen = logical(H_aksen);

R = Img(:,:,1);
G = Img(:,:,2);
B = Img(:,:,3);

R(~H_aksen) = 255;
G(~H_aksen) = 255;
B(~H_aksen) = 255;

RGB = cat(3,R,G,B);

axes(handles.axes2)
imshow(RGB);
title('Color Detection -> Red')

% --- Executes on button press in pushbutton3.


function pushbutton3_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton3 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
Img = handles.Img;
H = handles.H;

H_aksen = H==21/255;
H_aksen = logical(H_aksen);

R = Img(:,:,1);
G = Img(:,:,2);
B = Img(:,:,3);

R(~H_aksen) = 255;
G(~H_aksen) = 255;
B(~H_aksen) = 255;

RGB = cat(3,R,G,B);

axes(handles.axes2)
imshow(RGB);
title('Color Detection -> Orange')

% --- Executes on button press in pushbutton4.


function pushbutton4_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton4 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
Img = handles.Img;
H = handles.H;

H_aksen = H==85/255;
H_aksen = logical(H_aksen);

R = Img(:,:,1);
G = Img(:,:,2);
B = Img(:,:,3);

R(~H_aksen) = 255;
G(~H_aksen) = 255;
B(~H_aksen) = 255;

RGB = cat(3,R,G,B);

axes(handles.axes2)
imshow(RGB);
title('Color Detection -> Green')

% --- Executes on button press in pushbutton5.


function pushbutton5_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton5 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
Img = handles.Img;
H = handles.H;

H_aksen = H==170/255;
H_aksen = logical(H_aksen);

R = Img(:,:,1);
G = Img(:,:,2);
B = Img(:,:,3);

R(~H_aksen) = 255;
G(~H_aksen) = 255;
B(~H_aksen) = 255;
RGB = cat(3,R,G,B);

axes(handles.axes2)
imshow(RGB);
title('Color Detection -> Blue')

% --- Executes on button press in pushbutton6.


function pushbutton6_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton6 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
Img = handles.Img;
H = handles.H;

H_aksen = H==213/255;
H_aksen = logical(H_aksen);

R = Img(:,:,1);
G = Img(:,:,2);
B = Img(:,:,3);

R(~H_aksen) = 255;
G(~H_aksen) = 255;
B(~H_aksen) = 255;

RGB = cat(3,R,G,B);

axes(handles.axes2)
imshow(RGB);
title('Color Detection -> Purple')

% --- Executes on button press in pushbutton7.


function pushbutton7_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton7 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
Img = handles.Img;
H = handles.H;

H_aksen = H==43/255;
H_aksen = logical(H_aksen);

R = Img(:,:,1);
G = Img(:,:,2);
B = Img(:,:,3);

R(~H_aksen) = 255;
G(~H_aksen) = 255;
B(~H_aksen) = 255;

RGB = cat(3,R,G,B);

axes(handles.axes2)
imshow(RGB);
title('Color Detection -> Yellow')

% --- Executes on button press in pushbutton8.


function pushbutton8_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton8 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
Img = handles.Img;
bw = handles.bw;
class = handles.class;

bw2 = false(size(bw));
n = find(class==1);
for x = 1:numel(n)
cc = bwconncomp(bw, 4);
bw2(cc.PixelIdxList{n(x)}) = true;
end

R = Img(:,:,1);
G = Img(:,:,2);
B = Img(:,:,3);

R(~bw2) = 255;
G(~bw2) = 255;
B(~bw2) = 255;

RGB = cat(3,R,G,B);

axes(handles.axes2)
imshow(RGB);
title('Shape Detection -> Polygon')

% --- Executes on button press in pushbutton9.


function pushbutton9_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton9 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
Img = handles.Img;
bw = handles.bw;
class = handles.class;

bw2 = false(size(bw));
n = find(class==2);
for x = 1:numel(n)
cc = bwconncomp(bw, 4);
bw2(cc.PixelIdxList{n(x)}) = true;
end

R = Img(:,:,1);
G = Img(:,:,2);
B = Img(:,:,3);
R(~bw2) = 255;
G(~bw2) = 255;
B(~bw2) = 255;

RGB = cat(3,R,G,B);

axes(handles.axes2)
imshow(RGB);
title('Shape Detection -> Triangle')

% --- Executes on button press in pushbutton10.


function pushbutton10_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton10 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
Img = handles.Img;
bw = handles.bw;
class = handles.class;

bw2 = false(size(bw));
n = find(class==3);
for x = 1:numel(n)
cc = bwconncomp(bw, 4);
bw2(cc.PixelIdxList{n(x)}) = true;
end

R = Img(:,:,1);
G = Img(:,:,2);
B = Img(:,:,3);

R(~bw2) = 255;
G(~bw2) = 255;
B(~bw2) = 255;

RGB = cat(3,R,G,B);

axes(handles.axes2)
imshow(RGB);
title('Shape Detection -> Square')

% --- Executes on button press in pushbutton11.


function pushbutton11_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton11 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
Img = handles.Img;
bw = handles.bw;
class = handles.class;

bw2 = false(size(bw));
n = find(class==4);
for x = 1:numel(n)
cc = bwconncomp(bw, 4);
bw2(cc.PixelIdxList{n(x)}) = true;
end

R = Img(:,:,1);
G = Img(:,:,2);
B = Img(:,:,3);

R(~bw2) = 255;
G(~bw2) = 255;
B(~bw2) = 255;

RGB = cat(3,R,G,B);

axes(handles.axes2)
imshow(RGB);
title('Shape Detection -> Circle')

% --- Executes on button press in pushbutton12.


function pushbutton12_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton12 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
axes(handles.axes1)
cla reset
set(gca,'XTick',[])
set(gca,'YTick',[])

axes(handles.axes2)
cla reset
set(gca,'XTick',[])
set(gca,'YTick',[])
2.3 Running Program

1. Membuka tampilan GUI awal

2. Membaca citra asli


3. Mendeteksi obyek dengan warna merah

4. Mendeteksi obyek dengan warna orange/jingga


5. Mendeteksi obyek dengan warna hijau

6. Mendeteksi obyek dengan warna biru


7. Mendeteksi obyek dengan warna ungu

8. Mendeteksi obyek dengan warna kuning


9. Mendeteksi obyek dengan bentuk polygon (segi banyak)

10. Mendeteksi obyek dengan bentuk segi-tiga


11. Mendeteksi obyek dengan bentuk kotak

12. Mendeteksi obyek dengan bentuk lingkaran


2.4 Analisa
Bab 3

Penutup

3.1 Kesimpulan
Berdasarkan pengujian yang telah dilakukan dapatkan kesimpulan sebagai berikut :

1. Proses deteksi warna diawali dengan mengkonversi ruang warna citra RGB (Red, Green, Blue)
menjadi HSV (Hue, Saturation, Value). Selanjutnya proses klasifikasi warna dilakukan
berdasarkan pengelompokan nilai Hue.
2. Proses deteksi bentuk diawali dengan mengkonversi ruang warna citra RGB menjadi grayscale.
Setelah itu dilakukan thresholding sehingga diperoleh citra biner. Kemudian dilakukan ekstraksi
ciri morfologi dari citra biner berdasarkan parameter eccentricity dan metric. Proses klasifikasi
citra dilakukan berbasis aturan (rule based) sederhana.
Referensi

1. https://pemrogramanmatlab.com/2016/07/02/pengolahan-citra-digital-untuk-
mendeteksi-warna-dan-bentuk-obyek/#more-3670
2. http://teknotugasku.blogspot.co.id/2016/11/pengolahan-citra-digital-untuk.html
LAPORAN PROYEK AKHIR SEMESTER
PENGOLAHAN SINYAL MULTIMEDIA

“Pengolahan Citra Digital untuk Mendeteksi Warna dan


Bentuk Obyek”

Disusun Oleh :

JULYANNOOR AGUNG PRAKASA

3 TET A

1520301037

Anda mungkin juga menyukai