You are on page 1of 40

PETUNJUK PRAKTIKUM

COMPUTER VISION

Edisi ke 1
Maret 2013

Disusun oleh :
Murinto, S.Si., M. Kom.

Laboratorium Komputer Dasar


Program Studi Teknik Informatika
Fakultas Teknologi Industri
Universitas Ahmad Dahlan

Petunjuk Praktikum Computer Vision 1


KATA PENGANTAR

Puji Syukur kehadirat Allah SWT atas segala rahmat dan hidayahnya yang
tiada terkira kepada kita semua sebagai umat-Nya, sholawat dan salam tak lupa
selalu terucap pada junjungan kita Nabi Muhammad SAW, karena keteladanan
dan akhlaknya dan setiap gerak langkahnya kita dapat menjadi umat terbaik di sisi
Allah SWT.
Pembuatan Modul Praktikum Computer Vision ini tentunya tidak luput
dari banyak hambatan, namun demikian Atas kuasa Allah SWT lewat orang-orang
disekitar kita, modul ini dapat terwujud. Maka lewat kesempatan ini penulis
mengucapkan banyak terima kasih pada temen-temen dosen di Teknik
Informatika atas saran, serta diskusi-diskusinya. Dalam Modul Praktikum
Computer Vision ini dibahas mengenai : Pengenalan Menu Editor Matlab GUI,
Model Warna RGB, Threshold, Transformasi Matriks Affine, Canny Edge
Detection, Filtering, Fingerprint Enhancement dan Kalibrasi Camera
(OpenCV).
Dalam Penulisan petunjuk praktikum ini tentunya banyak kekurangan-
kekurangannya. Maka dari itu banyak harapan dari kami kritik dan saran yang
membangun, untuk lebih menyempurnakannya.

Penulis

Petunjuk Praktikum Computer Vision 2


DAFTAR ISI

Halaman
Kata Pengantar..ii
Daftar Isiiii

Praktikum 1. Pengenalan Menu Editor GUI Matlab untuk CV ..1.1


Praktikum 2. Model Warna RGB.2-1
Praktikum 3. Threshold.........3-1
Praktikum 4. Transformasi Matriks Affine-1..4-1
Praktikum 5. Transformasi Matriks Affine-2..5.1
Praktikum 6. Filtering............................................................6.1
Praktikum 7. Canny Deteksi Edge....7.1
Praktikum 8. Fingerprint Enhancement-1...8.1
Praktikum 9. Fingerprint Enhancement-1...9.1
Praktikum 10. Kalibrasi Kamera (OpenCV).10.1

Petunjuk Praktikum Computer Vision 3


PENGENALAN MENU EDITOR GUI MATLAB
UNTUK COMPUTER VISION

Pertemuan ke : I
Alokasi Waktu : 1.5 Jam
Kompetensi Dasar :

1.Mengetahui perintah-perintah MATLAB untuk image processing khususnya


yang berhubungan dengan Mata kuliah Computer Vision.
2.Mengetahui tentang fasilitas fasilitas yang ada pada Image Processing
Toolbox untuk kemudian menerapkannya pada image processing.
3.Membuat dan mendesain GUI di Matlab dengan Menu editor

A. PETUNJUK PRAKTIKUM
1. Buka Matlab dengan cara double clik didekstop icon MatlabMATLAB R12.lnk

2. Memilih direktori kerja.


- Buatlah sebuah direktori dengan identitas anda di D:
- Kemudian klik pada menu File, pilih Set Path maka akan muncul
window seperti ini :

Gambar 1. Set Path File Work

- Tekan tombol Add Folder


- Pada window Browse For Folder, arahkan direktorinya ke direktori
tempat anda membuatnya. Kemudian klik OK.
- Lalu tekan Save. Maka akan muncul Full Path dari direktori yang
telah ada set.

Petunjuk Praktikum Computer Vision 4


- Kemudian pada window utama Maltlab, pada toolbar terdapat kolom
Curent Directory, arahkan ke direktori yang telah kita buat tadi.
- Setelah masuk maka kita telah berada didirektori kerja kita, karena
default Matlab adalah C:\MATLAB6\work.

3. Mendesain GUI dengan Menu Editor

Desain GUI dalam Matlab bisa dibuka dengan cara :


 Dari Command Window dapat langsung diketikkan kata guide
atau
 Pilih dari menu File kemudian New dan pilih GUI.

Maka akan muncul window seperti dibawah ini (dengan penambahan


keterangan) :

Gambar 2. Layout Awal GUI Matlab

Pada praktikum mata kuliah Computer Vision ini akan dikenalkan tentang
GUI dalam Matlab dengan membuat user interface memakai Menu Editor.
Misalkan ingin membuat suatu user interfacec dengan menu-menu
adalah: Menu utama berupa File dan Proses. Di sini File terdiri dari sub
menu : Open, Save, dan Exit, sedang menu utama Proses tidak terdapat
sub menu apapun didalamnya. Diinginkan pada saat melakukan proses
Open , ditampilkan dalam suatu Axes, kemudian hasilnya disimpan dalam
folder/tempat manapun yang diinginkan. Adapun langkah-langkahnya
adalah sebagai berikut :

1. Dari Menu layout awal klik Menu editor, sehingga muncul gambar
seperti dibawah ini :

Petunjuk Praktikum Computer Vision 5


Gambar 3. Layout Menu Editor

2. Dari Menu Editor kemudian klik Menu Bar (Create a new Menu), sehingga
muncul gambar seperti ini :

Gambar 4. Layout Sub Menu Editor

dengan cara yang sama untuk Menu Proses (isikan label : Proses dan tag :
label_proses).

3. Sorot File lalu klik New Menu Item (sebanyak sub menu yang akan
dibuat : dalam hal ini Open , Save dan Exit), lalu isikan masing-masing
label dan tag-nya. (Open label :open dan tag :file_open, Savelabel
:save dan tag: file_save, Exitlabel : exit dan tag : file_exit)

Petunjuk Praktikum Computer Vision 6


Gambar 5. Layout Keseleruhan Menu

4. Kemudian pada layout area GUI , tambahkan satu Axes untuk tempat
menampilkan citra yang akan di-open,serta static text (string: Tampilan
Citra Awal dan tag : Showaxes)

Gambar 6. Layout Rancangan Proses Open

5. Langkah terakhir adalah Save hasil GUI tersebut dan lakukan Run (F5).
Adapun hasilnya adalah sebagai berikut :

Gambar 7. Hasil Running File Menu.fig

Petunjuk Praktikum Computer Vision 7


Hasil Akhir diatas belum bisa melakukan koneksi antara satu dengan yang
lainnya untuk itu perlu dilakukan pengkodean untuk masing-masing sub menu
tersebut :

 Open Citra
function file_open_Callback(hObject, eventdata, handles)
global gg gc;
h=guidata(gcbo);
gg=gg+2;
h.image_filename=1;
h.image_pathname=1;
[filename, pathname] = uigetfile( ...
{'*.bmp;*.tif;*.jpg;*.pcx;*.png;*.hdf;*.xwd;*.ras;*.pbm;*.pg
m;*.ppm;*.pnm', 'All MATLAB SUPPORTED IMAGE Files
(*.bmp,*.tif,*.jpg,*.pcx,*.png,*.hdf,*.xwd,*.ras,*.pbm,.pgm,
*.ppm,*.pnm)'} ... ,'Pick a file');% load image file
if filename~=0
gg=1;
h.gg=1;
h.image_filename=filename; % Image file name
h.image_pathname=pathname; % Image path name
set(h.Showaxes,'visible','on');
axes(h.axes1);
image_1=imread([pathname filename]); % Panggil image
imshow(image_1);% Tampilkan Image
h.image_1=image_1;
end

 Save Citra
(Berikut ini adalah function untuk menyimpan hasil suatu proses) 
karena dalam Praktikum 1 ini, belum melakukan proses maka anggap saja
ini adalah perintah-perintah yang akan kita pakai pada Praktikum-
praktikum berikutnya.
function file_save_Callback(hObject, eventdata, handles)
global gg gc;
h=guidata(gcbo);
h.message_text='';
h.image_filename=1;
h.image_pathname=1;
set(h.message_text,'String','');
if gc~=0
dot='.'; pathname=h.image_pathname;
[filename, pathname] = uiputfile('*.*', 'Tampilan citra awal');
if filename~=0
try_again=find(filename==dot);
if ~isempty(try_again)
image_ex=filename(try_again+1:end);
valid_ex=['BMP'; 'TIF'; 'JPG'; 'PCX'; 'PNG'; 'HDF';
'XWD'; 'RAS'; 'PBM'; 'PGM'; 'PPM'; 'PNM';];
p=['\<' image_ex '\>'];
g=regexpi(valid_ex,p);
b=cell2mat(g); % Convert sel ke matriks
if b~=0 & length(image_ex)==3
CMap=colormap(h.axes1);

Petunjuk Praktikum Computer Vision 8


h.savedimage_filename=filename;
h.savedimage_pathname=pathname;
imwrite(h.image_2,CMap,[pathname filename]);
savedto=['Image Saved to: ' pathname filename];
set(h.message_text,'String',savedto);
else
set(h.message_text,'String','Invalid file extension: Image
NOT saved, use one of these extensions, BMP TIF JPG PCX PNG
HDF XWD RAS PBM PGM PPM PNM');
end
else
set(h.message_text,'String','Empty file extension: Image NOT
saved, use one of these extensions, BMP TIF JPG PCX PNG HDF
XWD RAS PBM PGM PPM PNM');
end
end
end

 Exit
function tutup_citra_Callback(hObject, eventdata, handles)
close;

Setelah dilakukan pengkodean maka hasilnya akan nampak seperti berikut:

Gambar 8. Hasil Akhir Proses Open

B. TUGAS PRAKTIKUM
Kerjakan langkah-langkah yang sudah diberikan diatas untuk
mendapatkan hasil seperti pada Gambar. 8. Anda dapat menggunakan Praktikum
1 ini sebagai dasar untuk Praktikum-praktikum berikutnya.

Nilai Yogyakarta, .
Paraf asisten

<>

Petunjuk Praktikum Computer Vision 9


MODEL WARNA RGB

Pertemuan ke : II
Alokasi Waktu : 1.5 Jam
Kompetensi Dasar :

Setelah melakukan praktikum diharapkan mahasiswa dapat :


1.Mengetahui perintah-perintah MATLAB untuk pemrosesan citra berdasar
warnanya.
2.Membuat dan mendesain GUI di Matlab dengan untuk proses warna
berdasar pada RGB (Red, Green,Blue).

A. PETUNJUK PRAKTIKUM

Dalam Praktikum 2 dan Praktikum 3 ini akan ditampilkan suatu Citra


dengan menampilkannya dalam 4 macam skala (scale) yaitu : True Color, Red,
Green, Blue dan Operasi Threshold Citra Tersebut. Tampilan akhirnya adalah
sebagai berikut :

Gambar 2.1. Proses Threshold Image

Dimana Tampilan Layout awalnya adalah sebagai berikut :

Petunjuk Praktikum Computer Vision 10


Gambar 2.2. Layout Awal GUI Proses Threshold Image

Pada Praktikum 2 ini hanya akan dibuat Suatu User Interface untuk
menampilkan suatu Load Image, serta Menampilkan Image tersebut dalam Model
Skala Warna Full Color, Red, Green dan Blue. Adapun function code nya
adalah sebagai berikut :

1. Input Image dan Load Image tersebut

function varargout = pushbutton_LoadFile_Callback(h, eventdata,


handles, varargin)
%potongan untuk Callback uicontrol handles.pushbutton_LoadFile.
global loaded_image;
global image_filename;
global selected_scale;
global axes1_image;
set(handles.text_messages,'string','');
filename = get(handles.edit_Filename,'string');
if (strcmp(filename,image_filename) == 0)
reply = questdlg('Yakin ini File yang dimaksud?','Loading
File...','Yes','No','No');
if (strcmp(reply,'Yes') == 1)
try %Checks the properties of the file
info = imfinfo(filename);
switch info.ColorType
case 'truecolor'
errormessage = '';

set(handles.listbox_DisplayScale,'HandleVisibility','off','Visible','on')
;
set(handles.text3,'Visible','on');
selected_scale = 1;
case 'grayscale'
errormessage = 'Ini adalah GRAYSCALE image. Program hanya menerima
TRUECOLOR ';

Petunjuk Praktikum Computer Vision 11


set(handles.listbox_DisplayScale,'HandleVisibility','off','Visible','off'
);
set(handles.text3,'Visible','off');
selected_scale = 5;
case 'indexed'
errormessage = 'Ini adalah INDEX image. Program hanya
menerima TRUECOLOR';
otherwise
errormessage = 'Tidak dikenal Model Skala Warna';
end
catch
errormessage = 'Ini bukan File Image';
end
if isempty(errormessage)
try
loaded_image = imread(filename);
axes(handles.axes1)

set(handles.axes1,'HandleVisibility','on','Visible','on','Units','pixels'
);
warning off;
imshow(loaded_image);
warning on;
set(handles.axes1,'HandleVisibility','off');
axes1_image = loaded_image;
image_filename = filename;
catch
errormessage = 'Error Pembacaan dan tampilan image file';
end
end

if ~isempty(errormessage)
set(handles.text_messages,'string',errormessage);
end
end
end

2. Menampilkan Model Skala Warna

function varargout = listbox_DisplayScale_Callback(h, eventdata, handles,


varargin)
% potongan Callback of the uicontrol handles.listbox_DisplayScale.
global loaded_image;
global selected_scale;
global axes1_image;

set(handles.text_messages,'string','');
val = get(handles.listbox_DisplayScale,'Value');
axes(handles.axes1);
set(handles.axes1,'HandleVisibility','on','Visible','on','Units','pixels'
);
errormessage = '';
try
switch val
case 1 %Full colour
axes1_image = loaded_image;
selected_scale = 1;
set(handles.text4,'string','Full colour');
case 2 %Red scale
axes1_image = loaded_image(:,:,1);

Petunjuk Praktikum Computer Vision 12


selected_scale = 2;
set(handles.text4,'string','Red scale');
case 3 %Green scale
axes1_image = loaded_image(:,:,2);
selected_scale = 3;
set(handles.text4,'string','Green scale');
case 4 %Blue scale
axes1_image = loaded_image(:,:,3);
selected_scale = 4;
set(handles.text4,'string','Blue scale');
otherwise
errormessage = 'Invalid selection';
end
if isempty(errormessage)
set(handles.text_messages,'string','Displaying Axes1 image');
warning off;
imshow(axes1_image);
warning on;
set(handles.text_messages,'string','');
end
catch
errormessage = 'Error viewing selected scale';
end
set(handles.axes1,'HandleVisibility','off');
if ~isempty(errormessage)
set(handles.text_messages,'string',errormessage);
end

3. Exit
function file_exit_Callback(hObject, eventdata, handles)
close;

D. TUGAS PRAKTIKUM
Kerjakan langkah-langkah yang ada dalam Petunjuk Praktikum diatas.
Ubahlah Layout-nya memakai Menu Editor(Seperti pada PRAKTIKUM 1).
Selanjutnya Hasil Praktikum 2 akan dipakai untuk melengkapi Praktikum 3.

Nilai Yogyakarta, .
Paraf asisten

<>

Petunjuk Praktikum Computer Vision 13


THRESHOLD
Pertemuan ke : III
Alokasi Waktu : 1.5 Jam
Kompetensi Dasar :

1.Mengetahui perintah-perintah MATLAB untuk pemrosesan citra berdasar


warnanya.
2.Membuat dan mendesain GUI di Matlab dengan untuk proses warna
berdasar pada RGB (Red, Green,Blue).
3. Membuat dan mendesain GUI di Matlab dengan untuk proses Threshold

A. PETUNJUK PRAKTIKUM
Praktikum 5 merupakan kelanjutan dari Praktikum 4, yakni setelah kita
bisa me-load suatu image dan mengubah tampilannya ke dalam 4 macam skala
warna : Full Color, Red, Green dan Blue, maka langkah berikutnya adalah
melakukan operasi threshold. Layout awal dan Hasil Tampilan akhirnya seperti
pada Praktikum 4. Code yan gperlu ditambahkan adalah :

1. Code Inisialisasi
Code ini ditambahkan pada akhir dari function berikut :
function varargout = threshold(varargin)
...................
...............
if nargout > 0
varargout{1} = fig;
end

%Tambahkan Code disini


global global_max_value;
global global_min_value;
global_max_value = 255;
global_min_value = 0;

slider_step(1) = 1/255;
slider_step(2) = 10/255;
set(handles.slider_Max,'sliderstep',slider_step,'max',255,'min',0,'V
alue',global_max_value);
set(handles.slider_Min,'sliderstep',slider_step,'max',255,'min',0,'V
alue',global_min_value);
set(handles.edit_Max,'string',global_max_value);
set(handles.edit_Min,'string',global_min_value);

set(handles.listbox_DisplayScale,'HandleVisibility','off','Visible',
'off');
set(handles.text3,'Visible','off');
set(handles.axes1,'Visible','off');
set(handles.axes2,'Visible','off');
global loaded_image;

Petunjuk Praktikum Computer Vision 14


global image_filename;
global selected_scale;
global axes1_image;
global axes2_image;
global selected_scale;
loaded_image =[];
image_filename ='';
axes1_image = [];
axes2_image = [];
selected_scale = 1;

2. Function Slider
function varargout = slider_Max_Callback(h, eventdata, handles, varargin)
global global_max_value;
global global_min_value;
set(handles.text_messages,'string','');
max_value = round(get(handles.slider_Max,'Value'));
if (max_value >= global_min_value)
global_max_value = max_value;
set(handles.edit_Max,'string',global_max_value);
end
set(handles.slider_Max,'Value',global_max_value);
display_threshold(h, eventdata, handles, varargin);

function varargout = slider_Min_Callback(h, eventdata, handles, varargin)


global global_max_value;
global global_min_value;
set(handles.text_messages,'string','');
min_value = round(get(handles.slider_Min,'Value'));
if (min_value <= global_max_value)
global_min_value = min_value;
set(handles.edit_Min,'string',global_min_value);
end
set(handles.slider_Min,'Value',global_min_value);
display_threshold(h, eventdata, handles, varargin);

function varargout = edit_Max_Callback(h, eventdata, handles, varargin)


global global_max_value;
global global_min_value;
set(handles.text_messages,'string','');
max_value = str2double(get(handles.edit_Max,'string'));
if((max_value<=255)&(max_value >= global_min_value)&(max_value~= NaN))
global_max_value = round(max_value);
set(handles.slider_Max,'Value',global_max_value);
end
set(handles.edit_Max,'string',global_max_value);
display_threshold(h, eventdata, handles, varargin);

function varargout = edit_Min_Callback(h, eventdata, handles, varargin)


global global_max_value;
global global_min_value;
set(handles.text_messages,'string','');
min_value = str2double(get(handles.edit_Min,'string'));
if ((min_value >= 0) & (min_value <= global_max_value) & (min_value
~= NaN))
global_min_value = round(min_value);
set(handles.slider_Min,'Value',global_min_value);
end
set(handles.edit_Min,'string',global_min_value);
display_threshold(h, eventdata, handles, varargin);

Petunjuk Praktikum Computer Vision 15


2. FunctionThreshold
function display_threshold(h, eventdata, handles, varargin)
global global_max_value;
global global_min_value;
global axes1_image;
global axes2_image;
global selected_scale;

set(handles.text_messages,'string','');
axes(handles.axes2);
set(handles.axes2,'HandleVisibility','on','Visible','on','Units','pixels'
);
if (selected_scale ~= 1)
set(handles.text_messages,'string','Finding thresholding regions');
axes2_image =
threshold_grayscale_image(axes1_image,global_min_value,global_max_value);
message = strcat('Thresholded image between
',num2str(global_min_value),' and ',...
num2str(global_max_value));
set(handles.text5,'string',message);
try
set(handles.text_messages,'string','Displaying Axes2 image');
warning off;
imshow(axes2_image);
warning on;
set(handles.text_messages,'string','');
catch
set(handles.text_messages,'string','Error displaying Axes2');
end
end
set(handles.axes2,'HandleVisibility','off');

% --------------------------------------------------------------------
function varargout = pushbutton_Overlap_Callback(h, eventdata, handles,
varargin)
global axes1_image;
global axes2_image;
global selected_scale;
set(handles.text_messages,'string','');
%if (~isempty(axes1_image) & ~isempty(axes2_image) & (selected_scale ~=
1))
if (~isempty(axes1_image) & ~isempty(axes2_image))
figure;
clf;
set(handles.text_messages,'string','Displaying images');
if (selected_scale == 1)
overlap_image(:,:,1) = uint8(double(axes1_image(:,:,1)) .*
double(axes2_image));
overlap_image(:,:,2) = uint8(double(axes1_image(:,:,2)) .*
double(axes2_image));
overlap_image(:,:,3) = uint8(double(axes1_image(:,:,3)) .*
double(axes2_image));
else
overlap_image = uint8(double(axes2_image) .*
double(axes1_image));
end

try
warning off;
imshow(overlap_image);
warning on;
set(handles.text_messages,'string','');

Petunjuk Praktikum Computer Vision 16


catch
set(handles.text_messages,'string','Error displaying Overlaping
images');
end
end

% --------------------------------------------------------------------
function varargout = pushbutton_save_Callback(h, eventdata, handles,
varargin)
global axes2_image;
if ~isempty(axes2_image)
% save_as_file = strcat(get(handles.edit_Save_As,'string'),'.tif');
save_as_file = get(handles.edit_Save_As,'string');
message = strcat('Are You Sure That You Want To Save As :
',save_as_file);
reply = questdlg(message,'Saving File...','Yes','No','No');
if (strcmp(reply,'Yes') == 1)
set(handles.text_messages,'string','Starting to save thresholded
image');
try
imwrite(axes2_image,save_as_file);
set(handles.text_messages,'string','');
msgbox('Save Completed','','none');
catch
set(handles.text_messages,'string',strcat('Error saving into
',save_as_file));
end
end
end

D. TUGAS PRAKTIKUM
Kerjakan langkah-langkah yang ada dalam Petunjuk Praktikum diatas.
Ubahlah Layout-nya memakai Menu Editor(Seperti pada PRAKTIKUM 1).
Manfaatkan Hasil Praktikum 2 dan kemudian lengkapi dengan Code yang ada
pada Petunjuk Praktikum 3.

Nilai Yogyakarta, .
Paraf asisten

<>

Petunjuk Praktikum Computer Vision 17


TRANSFORMASI MATRIKS AFFINE -1

Pertemuan ke : IV
Alokasi Waktu : 1.5 Jam
Kompetensi Dasar :
Setelah melakukan praktikum diharapkan mahasiswa dapat :
1. Mengetahui tentang transformasi matriks affine dan menerapkannya untuk
melakukan transformasi geometrik affine untuk gambar 2-Dimensi.
2. Membuat suatu User Interface dengan MATLAB GUI untuk pemrosesan
transformasi suatu citra dengan transformasi matriks Affine.

A. PETUNJUK PRAKTIKUM

Function program Transformasi Affine ini terdiri dari :


1. Masukkan Citra : Memanggil citra tertentu yang akan ditransformasikan.
2. Transformasi Affine : Menghitung matriks transformasi dari parameter-
parameter transformasi yang diinputkan secara spesifik oleh user, dan
kemudian dijadikan parameter untuk memanggil citra.
3. Simpan citra : Menyimpan citra hasil transformasi

Parameter-paramater di inputkan secara spesifik oleh user dengan meng-edit


nilai rotasi, skala (x dan y). Affine matriks dan transformasi dihitung dengan
menggunakan Matlab Image Processing Toolbox.

Hasil yang nantinya akan didapatkan adalah sebagi berikut :

Adapun function yang ada dalam program tersebut adalah :

1. Memasukkan citra
function Load_image_Callback(hObject, eventdata, handles)

Petunjuk Praktikum Computer Vision 18


global gg gc;
h=guidata(gcbo);
set(h.message_text,'String',''); % Hapus pesan
gg=gg+2;
h.image_filename=1;
h.image_pathname=1;
% panggil file citra dan nama path
[filename, pathname] = uigetfile( ...
{'*.bmp;*.tif;*.jpg;*.pcx;*.png;*.hdf;*.xwd;*.ras;*.pbm;*.pg
m;*.ppm;*.pnm', 'All MATLAB SUPPORTED IMAGE Files
(*.bmp,*.tif,*.jpg,*.pcx,*.png,*.hdf,*.xwd,*.ras,*.pbm,.pgm,
*.ppm,*.pnm)'} ...,'Pick a file');
if filename~=0
gg=1;
h.gg=1;
h.image_filename=filename; % nama file citra
h.image_pathname=pathname; % nama file citra
set(h.Showaxes,'visible','off');
axes(h.axes1);
set(h.figure1_title,'Visible','on');
image_1=imread([pathname filename]); % panggil citra
imshow(image_1); % tampilkan citra yang dipanggil
h.image_1=image_1;
set(h.axes2,'Visible','off');
axes(h.axes2);
cla;
set(h.figure2_title,'Visible','off');
gc=0;
h.axis12=0;
guidata(gcbo,h);
end

2. Transformasi Affine : Menghitung matriks transformasi dari parameter-


parameter transformasi yang diinputkan secara spesifik oleh user, dan kemudian
dijadikan parameter untuk memanggil citra.
function Transform_Callback(hObject, eventdata, handles)
global gg gc;gc=0;
h=guidata(gcbo);
if gg~=2
h=guidata(gcbo);
image_1=h.image_1; % Dapatkan citra 1
hb(1)=num_check(h.rot); % Rotasi
hb(2)=num_check(h.xscale); % Skala dalam sumbu-x
hb(3)=num_check(h.yscale); % Skala dalam sumbu-y
hb(4)=num_check(h.xshear); % Shear
hb(5)=num_check(h.yshear);
hc=sum(hb);
switch hc
case 0
a=str2num(get(h.xscale,'String'));
b=str2num(get(h.xshear,'String'));
c=str2num(get(h.yshear,'String'));
d=str2num(get(h.yscale,'String'));
th=str2num(get(h.rot,'String')); %2*pi/10;
ch=get(h.deg,'Value');
switch ch

Petunjuk Praktikum Computer Vision 19


case 0
th=th;
otherwise
th=th*pi/180;;
end
k=1;
TT=k*[cos(th) -sin(th); sin(th) cos(th)]*[a b; c d];
TTT=[ 1 0 0; 0 1 0; 0 0 1];
TTT(1:2,1:2)=TT;
set(h.message_text,'String','Lagi proses transformasi...tunggu ');
tform=maketform('affine',TTT);
[image_2] = imtransform(image_1,tform);
h.image_2=image_2;
axes(h.axes2);
set(h.figure2_title,'Visible','on');
imshow(image_2,[]);
set(h.message_text,'String','Done');
set(h.Showaxes,'Visible','on');
guidata(gcbo,h);
otherwise
set(h.message_text,'String','Invalid value: Masukkan hanya
bilangan real');
end
end

3. Simpan citra : Menyimpan citra hasil transformasi


function Save_image_Callback(hObject, eventdata, handles)
global gg gc;h=guidata(gcbo);
set(h.message_text,'String','');
if gc~=0
dot='.';pathname=h.image_pathname;
[filename, pathname]=uiputfile('*.*','Simpan hasil Transformasi');
if filename~=0
cobalagi=find(filename==dot);
if ~isempty(cobalagi)
image_ex=filename(cobalagi+1:end);
valid_ex=['BMP'; 'TIF'; 'JPG'; 'PCX'; 'PNG'; 'HDF'; 'XWD'; 'RAS';
'PBM'; 'PGM'; 'PPM'; 'PNM';];
p=['\<' image_ex '\>'];
g=regexpi(valid_ex,p);
b=cell2mat(g);
if b~=0 & length(image_ex)==3
CMap=colormap(h.axes1);
h.savedimage_filename=filename;
h.savedimage_pathname=pathname;
imwrite(h.image_2,CMap,[pathname filename]);
savedto=['Simpan citra ke : ' pathname filename];
set(h.message_text,'String',savedto);
else
set(h.message_text,'String','Invalid file extension:
citra tidak disimpan, gunakan salah satu ekstensi berikut, BMP
TIF JPG PCX PNG HDF XWD RAS PBM PGM PPM PNM');
end
else

Petunjuk Praktikum Computer Vision 20


set(h.message_text,'String','Empty file extension: citra
tidak disimpan, gunakan salah satu ekstensi berikut, BMP TIF JPG
PCX PNG HDF XWD RAS PBM PGM PPM PNM');
end

end
end

B. TUGAS PRAKTIKUM
Sekarang Anda kerjakan langkah-langkah dalam petunjuk praktikum
diatas untuk menghasilkan suatu transformasi citra dengan menggunakan
transformasi Affine. Adapun lay out awalnya dan Menu Editornya adalah sebagai
berikut (Dikerjakan untuk Praktikum 4 dan Praktikum 5):

NB. Code Transformasi Parameter bisa dilihat pada Praktikum 5.


Nilai Yogyakarta, .
Paraf asisten

<>

Petunjuk Praktikum Computer Vision 21


TRANSFORMASI MATRIKS AFFINE -2

Pertemuan ke : V
Alokasi Waktu : 1.5 Jam
Kompetensi Dasar :

Setelah melakukan praktikum diharapkan mahasiswa dapat :


1. Mengetahui tentang transformasi matriks affine dan menerapkannya untuk
melakukan transformasi geometrik affine untuk gambar 2-Dimensi.
2. Membuat suatu User Interface dengan MATLAB GUI untuk pemrosesan
transformasi suatu citra dengan transformasi matriks Affine.

C. PETUNJUK PRAKTIKUM

Dalam Praktikum 4 Code Function program Transformasi Affine ini


terdiri dari :Masukkan Citra,Proses Transformasi Affine,Simpan citra sudah
diberikan maka dalam Praktikum 5 yang merupakan kelanjutan dari Praktikum
4 akan diberikan Code dari Parameter Tranformasi yang meliputi :

1. Rotasi, terdiri dari Parameter Sudutnya dalam bentuk derajat dan


Radian.
2. Cek Parameter Transform

Adapun function yang ada dalam program tersebut adalah :

1. Rotasi
 function deg_Callback(hObject, eventdata, handles)
h=guidata(gcbo);
%set(h.rad,'Value',0);
ch=get(hObject,'Value');
switch ch
case 0
set(h.rad,'Value',1)
case 1
set(h.rad,'Value',0)
end
guidata(gcbo,h);
 function rad_Callback(hObject, eventdata, handles)
h=guidata(gcbo);
%set(h.rad,'Value',0);
ch=get(hObject,'Value');
switch ch
case 0
set(h.deg,'Value',1)
case 1
set(h.deg,'Value',0)
end

Petunjuk Praktikum Computer Vision 22


guidata(gcbo,h);

2. Cek Parameter Transform


function hb=num_check(ha);
% function ini cek validasi parameter transform yang dimasukan
% ha handle yang akan dicek
% hb suatu flag, 1 range benar, 0 range salah.
h=guidata(gcbo);
ba=get(ha,'String');
bb=str2num(ba);
hb=0;
if isempty(bb) | ba=='i' | ba=='j'
axes(h.axes2);
cla;
set(h.message_text,'String','Invalid value: masukkan bil.ral saja');
switch ha
case h.xscale
set(ha,'String','1');
case h.yscale
set(ha,'String','1');
otherwise
set(ha,'String','0');
end
hb=1;
%break
end
%hb=ha;
%guidata(gcbo,h);

D. TUGAS PRAKTIKUM

Sekarang Anda kerjakan langkah-langkah dalam petunjuk praktikum


diatas (sebagai kelanjutan dari Praktikum 4). Modifikasi Rotasi (Derajat atau
Radian), Nilai Skala terhadap Image aslinya, serta nilai Shear. Amati Hasilnya
dan Anda bisa lihat perbedaan.

Petunjuk Praktikum Computer Vision 23


NB. Code lainnya bisa dilihat pada Praktikum 4

Nilai Yogyakarta, .
Paraf asisten

<>

Petunjuk Praktikum Computer Vision 24


FILTERING

Pertemuan ke : VI
Alokasi Waktu : 1.5 Jam
Kompetensi Dasar :
Setelah melakukan praktikum mahasiwa diharapkan dapat :
1. Menampilkan suatu image file pada GUI dengan Menu Editor
2. Mampu menampilkan suatu hasil operasi filtering citra dengan GUI
Matlab.

A. PETUNJUK PRAKTIKUM
Untuk mengimplementasikan proses filtering dengan lowpass filter dan
highpass filter pada suatu citra adalah sebagai berikut :
 Meload citra asli yang akan dilihat histogram citranya (format BMP)
 Menampilkannya dalam suatu axes
 Melakukan operasi lowpass atau highpass filtering
 Menampilkan hasil citra tersebut pada axes tertentu
Adapun contoh tampilan Filtering dengan menggunakan Matlab GUI
adalah sebagi berikut :

Petunjuk Praktikum Computer Vision 25


Berikut ini diberikan code dari operasi filtering :

function apply_button_Callback(hObject, eventdata, handles)


image_file=get(handles.nameEdit,'String');
im_original=image_read(char(image_file)); % filename
set(handles.Or_image,'XTickLabel',' ','YTickLabel',' ');
method_number = get(handles.method_selection,'Value'); % selected method
t = get(handles.cutoffEdit,'String');
F_cut = str2num (t);
if F_cut <= 0
msgbox ('Silakan input cut off frequency yang bernilai <=0');
return
end;

% For gaussian blur and USM-Filter method


switch method_number
case { 1 } %Ideal Filter
[im_filtered, H] = ideal_low(im_original, F_cut);
case { 2 }
[im_filtered, H] = ideal_high(im_original, F_cut);
end;
set(handles.Or_image,'HandleVisibility','ON')
axes(handles.Or_image);
imagesc(im_original);
colormap(gray(256));
axis equal;
axis tight;
axis off;
set(handles.Or_image,'HandleVisibility','OFF')
set(handles.filtered_image,'HandleVisibility','ON') ;
axes(handles.filtered_image);
imagesc(im_filtered) % to plot filtered image
colormap(gray(256));
axis equal;
axis tight;
axis off;
set(handles.filtered_image,'HandleVisibility','OFF')
set(handles.difference_image,'HandleVisibility','ON');

% --- Executes during object creation, after setting all properties.


function method_selection_CreateFcn(hObject, eventdata, handles)
if ispc
set(hObject,'BackgroundColor','white');
else

set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundCol
or'));
end

%Baca semua jenis image file


function im_original=image_read(image_file)
lg=length(image_file);
if strcmpi(image_file(lg-2:lg),'mat')|strcmpi(image_file(lg-2:lg),'dat')
im_original=load(image_file);
else
im_original=imread(char(image_file));
end;

im_original = double(im_original);
t=size(im_original,3);
if t==3
imt=floor((im(:,:,1)+im(:,:,2)+im(:,:,3))/3);

Petunjuk Praktikum Computer Vision 26


clear im_original;
im_original=imt;
clear imt;
end;
t=size(im_original,3);
if t~=1
display('Salah dalam pembukaan image file!');
end;

% Ideal High pass filter


function [out, H] = ideal_high(im, fc)
imf = fftshift(fft2(im));
[co,ro]=size(im);
H = ideal_filter(co,ro,fc);
H = 1-H;
outf=imf.*H;
out=abs(ifft2(outf));

% Ideal Low pass filter


function [out, H] = ideal_low(im, fc)
imf = fftshift(fft2(im));
[co,ro]=size(im);
H = ideal_filter(co,ro,fc);
outf=imf.*H;
out=abs(ifft2(outf));

%Ideal filter
function H = ideal_filter(co,ro,fc)
cx = round(co/2); % find the center of the image
cy = round (ro/2);
H=zeros(co,ro);
if fc > cx & fc > cy
H = ones(co,ro);
return;
end;
for i = 1 : co
for j = 1 : ro
if (i-cx).^2 + (j-cy).^2 <= fc .^2
H(i,j)=1;
end;
end;
end;

B.TUGAS PRAKTIKUM

Kerjakan langkah-langkah dalam operasi filtering diatas. Kemudian Anda


coba untuk membuat tampilan User Interfacenya dengan Menggunakan Menu
Editor dan tambahkan coding matlab di dalamnya. Anda diperkenankan untuk
mendefinisikan variabel sendiri. Asalkan betul!!. Silakan berkreasi Sendiri.

Nilai Yogyakarta, .
Paraf asisten

<>

Petunjuk Praktikum Computer Vision 27


CANNY DETEKSI EDGE

Pertemuan ke : VII
Alokasi Waktu : 1.5 Jam
Kompetensi Dasar :
Setelah melakukan praktikum mahasiwa diharapkan dapat :
3. Menampilkan suatu image file pada GUI dengan Menu Editor
4. Mampu menampilkan suatu hasil operasi edge detection citra dengan
menggunakan Operator Canny menggunakan GUI Matlab.

A. PETUNJUK PRAKTIKUM

Langkah-langkah untuk melakukan deteksi edge dengan menggunakan


operator Canny adalah sebagai berikut :

1. Load Image yang akan diproses.


2. Temukan Edge dengan menggunakan Canny Operator (Threshold 0.1 dan
0.2, dengan Sigma ditentukan sebesar 1).
3. Tunjukkan hasil Image Proses tersebut
4. Save Image hasil Canny Deteksi

Berikut ini diberikan function dari Canny Deteksi Edge :


% Menggunakan: [gradient or] = canny(im, sigma)
% Arguments:im - image untuk diproses
% sigma - standard deviasi Gaussian smoothing filter
% Kembalian(returns): gradient kekuatan edge image(gradient
%amplitudo)
% or orientasi image (dalam derajat 0-180, positif
berlawanan dengan araha jarum jam.

function [gradient, or] = canny(im, sigma)


[rows, cols] = size(im);
im = double(im);
hsize = [6*sigma+1, 6*sigma+1]; %ukuran filter
gaussian = fspecial('gaussian',hsize,sigma);
im = filter2(gaussian,im);%image smooth
h = [im(:,2:cols) zeros(rows,1)]-[zeros(rows,1;
im(:,1:cols-1)];
v = [ im(2:rows,:); zeros(1,cols) ] - [ zeros(1,cols); im(1:rows-
1,:)];

Petunjuk Praktikum Computer Vision 28


d1=[im(2:rows,2:cols) zeros(rows-1,1); zeros(1,cols) ] - ...
[ zeros(1,cols); zeros(rows-1,1) im(1:rows-
1,1:cols-1) ];
d2 = [ zeros(1,cols); im(1:rows-1,2:cols) zeros(rows-1,1); ] - ...[
zeros(rows-1,1) im(2:rows,1:cols-1); zeros(1,cols) ];
X = h + (d1 + d2)/2.0;
Y = v + (d1 - d2)/2.0;
gradient = sqrt(X.*X + Y.*Y); % Amplitudo Gradien

or = atan2(-Y, X); % Sudut -pi sampai + pi.


neg = or<0; % peta(map)sudut 0-pi.
or = or.*~neg + (or+pi).*neg;
or = or*180/pi; % Konvers ke derajat

B. TUGAS PRAKTIKUM

Kerjakan langkah-langkah yang sudah diberikan diatas untuk mendapatkan hasil


akhir berupa image yang diproses dengan menggunakan Canny Deteksi Edge
Anda dapat menggunakan Praktikum sebelumnya untuk membuat modfikasinya,
sehingga didapatlkan operasinya dalam bentuk yang lebih menarik (Menggunakan
Matlab GUI), tanpa atau dengan Menu Editor.

Nilai Yogyakarta, .
Paraf asisten

<>

Petunjuk Praktikum Computer Vision 29


FINGERPRINT ENHANCEMENT-1

Pertemuan ke : VIII
Alokasi Waktu : 1.5 Jam
Kompetensi Dasar :
Setelah melakukan praktikum mahasiwa diharapkan dapat :
1. Menampilkan suatu image file pada GUI dengan Menu Editor
2. Mampu menampilkan suatu hasil fingerprint enhancement.

A. PETUNJUK PRAKTIKUM

Dalam fingerpint enhancement, daerah bukit (Ridge Region) dalam


suatu image diidentifikasi dan dinormalisasi, orientasi ridge ditentukan, serta
frekuensi lokal ridge dihitung, dan kemudian kontekstual filter dengan pendekatan
orientasi dan frekuensi diterapkan.
Adapun langkah-langkah untuk melakukan fingerprint enhancement
adalah sebagai berikut :
5. Load Image yang akan diproses.
6. Identifikasi ridge region dan normalisasi image (menggunakan function
ridgesegment) dengan blkze=16 dan thresh=0.1.
7. Tentukan orientasi ridge (menggunakan function ridgeorient)
8. Tentukan orientasi ridge (menggunakan function ridgefreq)
9. Terapkan filter untuk enhance pola ridge
10. Binarisasi, ridge/valley dengan threshold =0
11. Tunjukkan hasil Binary image dengan mask bernilai satu dan reliabilitas
orientasinya lebih besar dari 0.5.
12. Tunjukkan hasil akhir imagenya
13. Save Image hasil fingerprint enhancement

Secara garis besar contoh pencariannya dalam MATLAB dengan


menggunakan M-file adalah sebagai berikut:
im = imread('finger.png');
% Identifikasi ridge region and normalise image
blksze = 16; thresh = 0.1;

Petunjuk Praktikum Computer Vision 30


[normim, mask] = ridgesegment(im, blksze, thresh);
show(normim,1);

% Determine orientasi ridge


[orientim, reliability] = ridgeorient(normim, 1, 5, 5);
plotridgeorient(orientim, 20, im, 2)
show(reliability,6)
%Tentukan nilai-nilai frekuensi ridge sepanjang image
blksze = 36;
[freq, medfreq] = ridgefreq(normim, mask, orientim, blksze, 5, 5, 15);
show(freq,3)

% Jika ditemukan nilai median frequency gunakan persamaan frekueensi


% fingerprint memberikan hasil yang memuaskan
freq = medfreq.*mask;

% Terapkan filter untuk enhance pola ridge (ridge pattern)


newim = ridgefilter(normim, orientim, freq, 0.5, 0.5, 1);
show(newim,4);
% Binarisasi, ridge/valley dengan threshold = 0
binim = newim > 0;
show(binim,5);
% Display binary image untuk nilai-nilai mask adalah satu dan
% orientation reliability lebih besar dari 0.5
show(binim.*mask.*(reliability>0.5), 7)

Adapun hasil akhirnya adalah sebagi berikut :

binary image dengan Mask image asli

Berikut ini akan diberikan function-function-nya. Dalam Praktikum 8


ini akan diberikan function ridgesegment dan ridgeorient, function ridgefrec.
ridgefilter, bisa anda lihat pada Praktikum 9.

%RIDGESEGMENT-Normalises fingerprint image dan segmentasi ridge


%region
%Gunakan:[normim, mask, maskind] = ridgesegment(im, blksze, thresh)
% Argumen: im - Fingerprint image untuk disegmentasi.
% blksze ukuran size untuk menetukan standar
% deviasi (coba dengan nilai 16).

Petunjuk Praktikum Computer Vision 31


% thresh - Threshold dari standar deviasi untuk menentukan
jika suatu blok adalah suatu ridge region (coba nilainya 0.1 - 0.2)
% Returns: normim - Image dimana ridge region di renormalisasi yang
mempunyai mean nol, standard deviasi satu(distribusi normal).
% mask - Mask indicating ridge-like regions of the image,
% 0 for non ridge regions, 1 for ridge regions.
% maskind - Vector of indices of locations within the mask.

function [normim, mask, maskind] = ridgesegment(im, blksze,


thresh)
im = normalise(im,0,1);
fun = inline('std(x(:))*ones(size(x))');
stddevim = blkproc(im, [blksze blksze], fun);
mask = stddevim > thresh;
maskind = find(mask);
im = im - mean(im(maskind));
normim = im/std(im(maskind));

% RIDGEORIENT - Estimates lokal orientasi ridge dalam fingerprint

% Usage: [orientim, reliability] = ridgeorientation(im,gradientsigma,...


blocksigma, ... orientsmoothsigma)

% Arguments: im - input image.


% gradientsigma - Sigma derivative Gaussian digunakan
% untuk menghitung image gradient
% blocksigma - Sigma pembobotan Gaussian digunakan
% sbg jumlah gradien momen
% orientsmoothsigma - Sigma Gaussian digunakan untuk smooth
% final orientasi vector field.

% Return: orientim - orientasi image dalam radian.


% reliability - Mengukur reliabilitas orientasi.
%nilainya diantara 0 dan 1
% [orientim, reliability] = ridgeorient(im, 1, 3, 3);

function [orientim, reliability] = ...


ridgeorient(im, gradientsigma, blocksigma, orientsmoothsigma)
[rows,cols] = size(im);
% Hitung image gradien.
sze = fix(6*gradientsigma);
if ~mod(sze,2); sze = sze+1; end
% Generate Gaussian filter.
f = fspecial('gaussian', sze, gradientsigma);
[fx,fy] = gradient(f); % Gradient Gausian.
Gx = filter2(fx, im); % Gradien image dalam x
Gy = filter2(fy, im); % ... dan y

% Estimasi lokal ridge orientasi pada tiap titik dengan menemukan


% principal axis dari variasi dalam image gradients.
Gxx = Gx.^2; % Covariansi data untuk image gradien
Gxy = Gx.*Gy;
Gyy = Gy.^2;

% Now smooth the covariance data to perform a weighted summation of


the
% data.
sze = fix(6*blocksigma); if ~mod(sze,2); sze = sze+1; end
f = fspecial('gaussian', sze, blocksigma);
Gxx = filter2(f, Gxx);
Gxy = 2*filter2(f, Gxy);

Petunjuk Praktikum Computer Vision 32


Gyy = filter2(f, Gyy);

% Analytic solution of principal direction


denom = sqrt(Gxy.^2 + (Gxx - Gyy).^2) + eps;
sin2theta = Gxy./denom;
cos2theta = (Gxx-Gyy)./denom;
sze = fix(6*orientsmoothsigma); if ~mod(sze,2); sze = sze+1; end
f = fspecial('gaussian', sze, orientsmoothsigma);
cos2theta = filter2(f, cos2theta);
sin2theta = filter2(f, sin2theta);
orientim = pi/2 + atan2(sin2theta,cos2theta)/2;
Imin = (Gyy+Gxx)/2 - (Gxx-Gyy).*cos2theta/2 - Gxy.*sin2theta/2;
Imax = Gyy+Gxx - Imin;
reliability = 1 - Imin./(Imax+.001);

reliability = reliability.*(denom>.001);

% RIDGEFREQ Menghitung suatu frekuensi ridgesuatu image


% Usage:
% [freqim, medianfreq] = ridgefreq(im, mask, orientim, blksze, windsze,
...minWaveLength, maxWaveLength)

function [freq, medianfreq] = ridgefreq(im, mask, orient, blksze,


windsze, ...minWaveLength, maxWaveLength)

[rows, cols] = size(im);


freq = zeros(size(im));
for r = 1:blksze:rows-blksze
for c = 1:blksze:cols-blksze
blkim = im(r:r+blksze-1, c:c+blksze-1);
blkor = orient(r:r+blksze-1, c:c+blksze-1);
freq(r:r+blksze-1,c:c+blksze-1) = ...
freqest(blkim, blkor, windsze, minWaveLength, maxWaveLength);
end
end

% Mask non ridge region


freq = freq.*mask;

% median frekuensiuntuk valid region image


medianfreq = median(freq(find(freq>0)));

B. TUGAS PRAKTIKUM

Sekarang Anda kerjakan langkah-langkah dalam petunjuk praktikum


diatas untuk menghasilkan suatu fingerprint enhancement.Usahakan untuk
menggunakan MATLAB GUI dengan menggunakan atau tanpa Menu
Editor.(Dikerjakan untuk Praktikum 8 dan Praktikum 9):
Nilai Yogyakarta, .
Paraf asisten

<>

Petunjuk Praktikum Computer Vision 33


FINGERPRINT ENHANCEMENT-2
Pertemuan ke : IX
Alokasi Waktu : 1.5 Jam
Kompetensi Dasar :
Setelah melakukan praktikum mahasiwa diharapkan dapat :
1. Menampilkan suatu image file pada GUI dengan Menu Editor
2. Mampu menampilkan suatu hasil fingerprint enhancement.

A. PETUNJUK PRAKTIKUM

Praktikum 9 merupakan kelanjutan Praktikum 8. Dalam fingerprint


enhancement, daerah bukit (Ridge Region) dalam suatu image diidentifikasi dan
dinormalisasi, orientasi ridge ditentukan, serta frekuensi lokal ridge dihitung, dan
kemudian kontekstual filter dengan pendekatan orientasi dan frekuensi diterapkan.
Adapun langkah-langkah untuk melakukan fingerprint enhancement
adalah sebagai berikut :
1. Load Image yang akan diproses.
2. Identifikasi ridge region dan normalisasi image (menggunakan function
ridgesegment) dengan blkze=16 dan thresh=0.1.
3. Tentukan orientasi ridge (menggunakan function ridgeorient)
4. Tentukan orientasi ridge (menggunakan function ridgefreq)
5. Terapkan filter untuk enhance pola ridge
6. Binarisasi, ridge/valley dengan threshold =0
7. Tunjukkan hasil Binary image dengan mask bernilai satu dan reliabilitas
orientasinya lebih besar dari 0.5.
8. Tunjukkan hasil akhir imagenya
9. Save Image hasil fingerprint enhancement

Dalam Praktikum 8 sudah diberikan function-funtion untuk memproses


fingerprint enhancement, tetapi belum kesemuanya. Dalam Praktikum 9 ini akan
diberikan function-function lainnya agar proses tersebut dalam dijalankan.

Petunjuk Praktikum Computer Vision 34


Berikut ini akan diberikan function-functionnya :

% RIDGEFILTER - enhances fingerprint image via oriented filters

function newim = ridgefilter(im, orient, freq, kx, ky, showfilter)


if nargin == 5
showfilter = 0;
end
angleInc = 3;
im = double(im);
[rows, cols] = size(im);
newim = zeros(rows,cols);

[validr,validc] = find(freq > 0);


ind = sub2ind([rows,cols], validr, validc);
freq(ind) = round(freq(ind)*100)/100;
unfreq = unique(freq(ind));

% Generate tabel
freqindex = ones(100,1);
for k = 1:length(unfreq)
freqindex(round(unfreq(k)*100)) = k;
end

filter = cell(length(unfreq),180/angleInc);
sze = zeros(length(unfreq),1);

for k = 1:length(unfreq)
sigmax = 1/unfreq(k)*kx;
sigmay = 1/unfreq(k)*ky;

sze(k) = round(3*max(sigmax,sigmay));
[x,y] = meshgrid(-sze(k):sze(k));
reffilter = exp(-(x.^2/sigmax^2 + y.^2/sigmay^2)/2)...
.*cos(2*pi*unfreq(k)*x);

for o = 1:180/angleInc
filter{k,o} = imrotate(reffilter,-(o*angleInc+90),'bilinear','crop');
end
end

if showfilter
figure(7), imshow(filter{1,end},[]); title('filter');
end

maxsze = sze(1);
finalind = find(validr>maxsze & validr<rows-maxsze & ...
validc>maxsze & validc<cols-maxsze);
maxorientindex = round(180/angleInc);
orientindex = round(orient/pi*180/angleInc);
i=find(orientindex < 1);
orientindex(i) = orientindex(i)+maxorientindex;
i = find(orientindex > maxorientindex);
orientindex(i) = orientindex(i)-maxorientindex;

% filtering
for k = 1:length(finalind)
r = validr(finalind(k));
c = validc(finalind(k));
% cari filter yan gberkorespondensi dengan freq(r,c)

Petunjuk Praktikum Computer Vision 35


filterindex = freqindex(round(freq(r,c)*100));

s = sze(filterindex);
newim(r,c)=sum(sum(im(r-s:r+s,
c-s:c+s).*filter{filterindex,orientindex(r,c)}));
end

B. TUGAS PRAKTIKUM

Sekarang Anda kerjakan langkah-langkah dalam petunjuk praktikum


diatas untuk menghasilkan suatu fingerprint enhancement. Usahakan untuk
menggunakan MATLAB GUI dengan menggunakan atau tanpa Menu
Editor.(Manfaatkan Praktikum 8 untuk mengerjakan Praktikum 9)

Nilai Yogyakarta, .
Paraf asisten

<>

Petunjuk Praktikum Computer Vision 36


KALIBRASI CAMERA
(OpenCV)

Pertemuan ke : X
Alokasi Waktu : 1.5 Jam
Kompetensi Dasar :
Setelah melakukan praktikum mahasiwa diharapkan dapat :
1. Menerapkan Sofware OpenCV Kalibrasi Kamera untuk memproyeksikan
posisi suatu image
2. Mengenal tentang OpenCV yang ada pada bidang Computer Vision.

A. PETUNJUK PRAKTIKUM

OpenCV merupakan suatu kumpulan tools/library dalam Computer


Vison yang sifatnya adalah Open Source. Harapan dikenalkannya Open CV
adalah agar pengikut atau pengguna mata kuliah Computer Vison dapat
memanfaatkan tools/library yang ada dan kemudian bisa memanfaatkan dan
memberikan konstribusi untuk pengembangan environment pemrograman
Computer Vision yang bersifat open dan bermanfaat bagi orang banyak. Beberapa
contoh menliput area Human-Computer Interaction (HCI),Object Identification,
Segmentation and Recognition, Face Recognition, Gesture Recognition,Motion
Tracking, Ego Motion, Motion Understanding; Structure From Motion (SFM),
dan Mobile Robotics. Berikut ini contoh dari tampilan tools tersebut :

Petunjuk Praktikum Computer Vision 37


Library Area

Chapter Contents

Creation, allocation, destruction of images. Fast pixel


Image functions
access macros.

Data Structures Static types and dynamic storage.

Finding, displaying, manipulation, and simplification of


Contour Processing
image contours.

Geometry Line and ellipse fitting. Convex hull. Contour analysis.

1st & 2nd Image Derivatives. Lines: Canny,


Features
Hough. Corners: Finding, tracking.

In region of interest: Count, Mean, STD, Min, Max, Norm,


Image Statistics
Moments, Hu Moments.

Image Pyramids Power of 2. Color/texture segmentation.

Morphology Erode, dilate, open, close. Gradient, top-hat, black-hat.

Background Accumulate images and squared images. Running


Differencing averages.

Distance Transform Distance Transform

Thresholding Binary, inverse binary, truncated, to zero, to zero inverse.

Flood Fill 4 and 8 connected

Intrinsic and extrinsic, Rodrigues, un-distortion, Finding


Camera Calibration
checkerboard calibration pattern

View Morphing 8 point algorithm, Epipolar alignment of images

Overlaying silhouettes: motion history image, gradient and


Motion Templates
weighted global motion.

CAMSHIFT Mean shift algorithm and variant

Active Contours Snakes

Optical Flow HS, L-K, BM and L-K in pyramid.

Estimators Kalman and Condensation.

POSIT 6DOF model based estimate from 1 2D view.

Histogram Manipulation, comparison, backprojection. Earth Mover's


(recognition) Distance (EMD).

Stereo based: Finding hand, hand mask. Image


Gesture Recognition
homography, bounding box.

Matrix Math: SVD, inverse, cross-product, Mahalanobis,


Matrix
eigen values and vectors. Perspective projection.

Petunjuk Praktikum Computer Vision 38


Calc Cov Matrix, Calc Eigen objects, decomp. coeffs.
Eigen Objects
Decomposition and projection.

Create, destroy, observation vectors, DCT, Viterbi


embedded HMMs
Segmentation, training and test.

Drawing Primatives Line, rectangle, circle, ellipse, polygon. Text on images.

System Functions Load optimized code. Get processor info.

Abs difference. Template matching. Pixel order<->Plane


order. Convert Scale. Sampling lines. Bi-linear interpolation.
Utility
ArcTan, sqrt, inv-sqrt, reciprocal. CartToPolar, Exp, Log.
Random numbs. Set image. K-Means.

Kalibrasi Camera Toolbox untuk Matlab (Camera Calibration Toolbox


for Matlab) oleh Christopher Mei, merupakan salah satu contoh OpenCV yang
ditulis dalam Matlab. OpenCV bisa didapatkan pada www.intel.com. Adapun
tampilannya bisa dilihat pada gambar dibawah ini :

Source OpenCV ini bisa Anda dapatkan pada saat Praktikum 10.

B. TUGAS PRAKTIKUM

Dalam Praktikum 10 ini gunakan OpenCV Kalibrasi Kamera yang telah


Anda kenal dan lakukan ujicobalah dengan beberapa Image, lalu apa yang dapat
Anda simpulkan tentang OpenCV tersebut.

Nilai Yogyakarta, .
Paraf asisten

<>

Petunjuk Praktikum Computer Vision 39


DAFTAR PUSTAKA

Hong, L., Wan, Y., and Jain, 1998, A. K. Fingerprint image enhancement:
Algorithm and performance evaluation, IEEE Transactions on Pattern
Analysis and Machine Intelligence 20, 8, pp 777-789.

Peter Kovesi, 2001, Computer Vision,.School of Computer Science & Software


Engineering,The University of Western Australia

www.intel.com/OpenCV

www.mathworks.com

Petunjuk Praktikum Computer Vision 40

You might also like