Vous êtes sur la page 1sur 17

MODUL PRAKTIKUM

Dasar-Dasar Pengolahan Citra Digital menggunakan GUI MATLAB

Histogram Citra

Adi Pamungkas
https://pemrogramanmatlab.wordpress.com/

I.

Tujuan
1. Mengetahui pengertian citra digital beserta elemen pembentuk citra
2. Memahami konsep citra sebagai matriks
3. Memahami histogram citra

II.

Teori Dasar

2.1 Citra Digital


Picture element (pixel) dapat diartikan sebagai elemen pembentuk citra
dalam bidang dua dimensi yang memiliki koordinat
. Koordinat
sedangkan amplitudo

dan amplitudo

merupakan letak/posisi piksel dalam citra,


merupakan nilai intensitas citra. Salah satu

jenis citra adalah citra grayscale. Representasi citra grayscale ditunjukkan


pada Gambar 1.

Gambar 1. Penggambaran piksel dalam citra grayscale

Citra pada Gambar 1 termasuk dalam kelas grayscale 8-bit yang artinya
derajat warna antara hitam dan putih dibagi sebanyak

derajat

keabuan (0-255). Kelas tersebut merepresentasikan intensitas warna


hitam sempurna dengan nilai 0 dan putih sempurna dengan nilai 255.
Pada gambar tersebut, piksel dengan koordinat (1,1) memiliki nilai

intensitas 122, piksel dengan koordinat (2,1) memiliki nilai intensitas 92,
dst. Oleh sebab itu, citra dapat pula dinyatakan sebagai matriks.

Pada citra berwarna, misalnya citra RGB truecolor 24-bit, tersusun atas
tiga buah matriks yang berasal dari komponen warna red, green, dan
blue. Representasi citra RGB truecolor 24-bit ditunjukkan pada Gambar 2.

Gambar 2. Penggambaran piksel dalam citra truecolor

Setiap piksel pada citra RGB truecolor 24-bit memiliki tiga nilai intensitas
yaitu Red (R), Green (G), dan Blue (B). Ketiga nilai intensitas tersebut
dapat dikonversi menjadi satu nilai intensitas saja sehingga citra yang
terbentuk adalah citra grayscale. Persamaan yang digunakan untuk
mengkonversi citra RGB truecolor 24-bit menjadi citra grayscale 8-bit
adalah
0.2989 * R + 0.5870 * G + 0.1140 * B
Citra hasil konversi RGB menjadi grayscale ditunjukkan pada Gambar 3.

Gambar 3. Citra hasil konversi RGB menjadi grayscale

2.2

Histogram Citra
Histogram citra merupakan diagram yang menggambarkan distribusi
frekuensi nilai intensitas piksel dalam suatu citra. Sumbu horizontal
merupakan nilai intensitas piksel sedangkan sumbu vertical merupakan
frekuensi/jumlah piksel. Histogram dari sebuah citra ditunjukkan pada
Gambar 4.

Gambar 4. Citra dan Histogramnya

Citra yang terang, histogramnya akan cenderung menumpuk di sebelah


kanan, dan citra yang gelap, histogramnya akan menumpuk di sebelah
kiri.

III.

Petunjuk Praktikum

1. Bukalah Program Matlab sehingga muncul desktop Matlab seperti pada


gambar di bawah ini

2. Untuk menampilkan GUI Matlab, Klik New >> Graphical User Interface atau
ketik guide pada Command Window

3. Untuk membuat GUI baru, klik OK

Sehingga akan muncul tampilan seperti gambar di bawah ini

4. Untuk menampilkan nama pada komponen palette, klik File >> Preferences

kemudian centang Show names in component palette lalu klik OK

Sehingga tampilan GUI akan seperti pada gambar di bawah ini

4. Buatlah 1 buah static text, 1 push button, 4 radio button, 1 button group,
dan 2 axes

5. Untuk mengubah isi properti suatu komponen, klik kanan komponen yang
ingin diubah propertinya lalu pilih Property Inspector, atau double click
komponen tersebut. Ubahlah isi properti setiap komponen sesuai dengan
tabel di bawah ini

No.
1.

Nama Komponen
Static Text

2.

Push Button

3.

Radio Button

4.

Radio Button

5.

Radio Button

6.

Radio Button

7.

Button Group

8.

Axes

8.

Axes

Property
String
FontSize
String
Tag
FontSize
String
Tag
FontSize
String
Tag
FontSize
String
Tag
FontSize
String
Tag
FontSize
Title
FontSize
Tag
Xtick
Ytick
Ztick
Tag
Xtick
Ytick
Ztick

Isi Property
Citra & Histogram
12
Buka Citra
pushbutton1
12
Kanal Merah
radiobutton1
12
Kanal Hijau
radiobutton2
12
Kanal Biru
radiobutton3
12
Grayscale
radiobutton4
12
Histogram
12
axes1
<kosongkan>
<kosongkan>
<kosongkan>
axes2
<kosongkan>
<kosongkan>
<kosongkan>

Setelah isi properti masing-masing komponen diubah, maka tampilan GUI akan
seperti pada gambar di bawah ini

6. Klik tombol Run Figure

, simpan dengan nama Histogram

7. Listing programnya adalah sebagai berikut:


function varargout = Histogram(varargin)
% HISTOGRAM MATLAB code for Histogram.fig
%
HISTOGRAM, by itself, creates a new HISTOGRAM or raises the
existing
%
singleton*.
%
%
H = HISTOGRAM returns the handle to a new HISTOGRAM or the
handle to
%
the existing singleton*.
%
%
HISTOGRAM('CALLBACK',hObject,eventData,handles,...) calls
the local
%
function named CALLBACK in HISTOGRAM.M with the given input
arguments.
%
%
HISTOGRAM('Property','Value',...) creates a new HISTOGRAM
or raises the
%
existing singleton*. Starting from the left, property
value pairs are
%
applied to the GUI before Histogram_OpeningFcn gets called.
An
%
unrecognized property name or invalid value makes property
application
%
stop. All inputs are passed to Histogram_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 Histogram
% Last Modified by GUIDE v2.5 14-Aug-2013 00:42:54
% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name',
mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @Histogram_OpeningFcn, ...
'gui_OutputFcn', @Histogram_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 Histogram is made visible.


function Histogram_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 Histogram (see VARARGIN)
% Choose default command line output for Histogram
handles.output = hObject;
% Update handles structure
guidata(hObject, handles);
movegui(hObject,'center');
% UIWAIT makes Histogram wait for user response (see UIRESUME)
% uiwait(handles.figure1);

% --- Outputs from this function are returned to the command line.
function varargout = Histogram_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)
[nama_file,nama_path] =
uigetfile({'*.jpg';'*.bmp';'*.png';'*.tif'},...
'Buka Citra');
if ~isequal(nama_file,0)
handles.data1 = imread(fullfile(nama_path,nama_file));
guidata(hObject,handles);
axes(handles.axes1)
imshow(handles.data1);
title('Citra Asli');
else
return
end

% --- Executes on button press in radiobutton1.


function radiobutton1_Callback(hObject, eventdata, handles)
% hObject
handle to radiobutton1 (see GCBO)
% eventdata reserved - to be defined in a future version of
MATLAB
% handles
structure with handles and user data (see GUIDATA)
% Hint: get(hObject,'Value') returns toggle state of radiobutton1
set(handles.radiobutton2,'value',0);
set(handles.radiobutton3,'value',0);
set(handles.radiobutton4,'value',0);
citra = handles.data1;
IR = citra(:,:,1);
IG = citra(:,:,2);
IB = citra(:,:,3);
axes(handles.axes1)
imshow(cat(3,IR,IG.*0,IB.*0));
title('Kanal Merah');
axes(handles.axes2)
imhist(IR);
title('Histogram Kanal Merah');

% --- Executes on button press in radiobutton2.


function radiobutton2_Callback(hObject, eventdata, handles)
% hObject
handle to radiobutton2 (see GCBO)
% eventdata reserved - to be defined in a future version of
MATLAB
% handles
structure with handles and user data (see GUIDATA)
% Hint: get(hObject,'Value') returns toggle state of radiobutton2
set(handles.radiobutton1,'value',0);
set(handles.radiobutton3,'value',0);
set(handles.radiobutton4,'value',0);
citra = handles.data1;
IR = citra(:,:,1);
IG = citra(:,:,2);
IB = citra(:,:,3);
axes(handles.axes1)
imshow(cat(3,IR.*0,IG,IB.*0));
title('Kanal Hijau');
axes(handles.axes2)
imhist(IG);
title('Histogram Kanal Hijau');

% --- Executes on button press in radiobutton3.


function radiobutton3_Callback(hObject, eventdata, handles)
% hObject
handle to radiobutton3 (see GCBO)
% eventdata reserved - to be defined in a future version of
MATLAB
% handles
structure with handles and user data (see GUIDATA)
% Hint: get(hObject,'Value') returns toggle state of radiobutton3

set(handles.radiobutton1,'value',0);
set(handles.radiobutton2,'value',0);
set(handles.radiobutton4,'value',0);
citra = handles.data1;
IR = citra(:,:,1);
IG = citra(:,:,2);
IB = citra(:,:,3);
axes(handles.axes1)
imshow(cat(3,IR.*0,IG.*0,IB));
title('Kanal Biru');
axes(handles.axes2)
imhist(IB);
title('Histogram Kanal Biru');

% --- Executes on button press in radiobutton4.


function radiobutton4_Callback(hObject, eventdata, handles)
% hObject
handle to radiobutton4 (see GCBO)
% eventdata reserved - to be defined in a future version of
MATLAB
% handles
structure with handles and user data (see GUIDATA)
% Hint: get(hObject,'Value') returns toggle state of radiobutton4
set(handles.radiobutton1,'value',0);
set(handles.radiobutton2,'value',0);
set(handles.radiobutton3,'value',0);
citra = handles.data1;
gray = rgb2gray(citra);
axes(handles.axes1)
imshow(gray);
title('Grayscale');
axes(handles.axes2)
imhist(gray);
title('Histogram Grayscale');

8. Ketika program dijalankan, maka hasil tampilannya sebagai berikut

Modul dan Source Code dalam modul ini dapat diunduh


pada https://pemrogramanmatlab.wordpress.com/

Vous aimerez peut-être aussi