MATLAB atau MATrix LABoratory merupakan suatu bahasa program komputer dan sekaligus bahasa pemrograman komputer generasi ke-empat yang dikembangkan oleh Grup MathWorks untuk keperluan bidang komputasi numeris dan manipulasi matriks. Awalnya, program ini merupakan interface untuk koleksi rutin-rutin numerik dari proyek LINPACK dan EISPACK dikembangkan menggunkan bahasa FORTRAN namun sekarang merupakan produk komersial dari perusahaan Mathworks, Inc. yang dalam perkembangan selanjutnya dikembangkan menggunakan bahasa C++ dan assembler (utamanya untuk fungsi-fungsi dasar MATLAB). Dalam perkembangannya, MATLAB mampu mengintegrasikan beberapa software matriks sebelumnya dalam satu software untuk komputasi matriks. Tidak hanya itu, MATLAB juga mampu melakukan komputasi simbolik yang biasa dilakukan oleh MAPLE.
MATLAB dapat digunakan untuk menyelesaikan beberapa masalah seperti :
■Matematika dan Komputasi.
■Pengembangan dan Algoritma.
■Pemrograman Modeling, Simulasi, dan Pembuatan Prototipe.
■Analisa Data, Eksplorasi dan Visualisasi.
■Analisa Numerik dan Statistik.
■Pengembangan Aplikasi Teknik.
■Akuisi Data.
■Perluasan pemakaian, seperti Graphical User Interface (GUI).
Sistem MATLAB terdiri atas Lima Bagian Utama :
■Development Environment.
■The MATLAB Mathematical Function Library.
■The MATLAB language.
■Graphics.
■The MATLAB Application Program Interface (API).
MATLAB dapat digunakan untuk menyelesaikan beberapa masalah seperti :
■Matematika dan Komputasi.
■Pengembangan dan Algoritma.
■Pemrograman Modeling, Simulasi, dan Pembuatan Prototipe.
■Analisa Data, Eksplorasi dan Visualisasi.
■Analisa Numerik dan Statistik.
■Pengembangan Aplikasi Teknik.
■Akuisi Data.
■Perluasan pemakaian, seperti Graphical User Interface (GUI).
Sistem MATLAB terdiri atas Lima Bagian Utama :
■Development Environment.
■The MATLAB Mathematical Function Library.
■The MATLAB language.
■Graphics.
■The MATLAB Application Program Interface (API).
Menampilkan Image sebagai matriks pada Matlab
Citra digital merupakan suatu larik dua dimensi atau suatu matriks yang elemen-elemennya menyatakan tingkat keabuan dari elemen gambar. Jadi informasi yang terkandung bersifat diskret. Citra digital tidak selalu merupakan hasil langsung data rekaman suatu sistem. Kadang-kadang hasil rekaman data bersifat kontinu seperti gambar pada monitor televisi, foto sinar-X, dan lain sebagainya. Dengan demikian untuk mendapatkan suatu citra digital diperlukan suatu proses konversi, sehingga citra tersebut selanjutnya dapat diproses dengan komputer.
Berikut cara menampilkan sebuah citra atau image sebagai matriks menggunakan Matlab. Sebagai contoh menggunakan sebuah gambar dengan format jpg.
Image yang digunakan berukuran 130 x 119 yang berarti image tersebut terdiri dari 130 kolom dan 119 baris pixel. Jadi total keseluruhan image tersebut terdiri dari 15470 pixel, dan tiap pixel tersebut merupakan perpaduan dari 3 warna utama yaitu: Red, Green, Blue yang lebih dikenal dengan istilah RGB.
Untuk menampilkan image tersebut sebagai matriks pada matlab tidaklah sulit, berikut adalah sintaks yang digunakan untuk menampilkan image tersebut sebagai matriks.
>> c=imread(‘kucing.jpg’,'jpg’);
>> asci=uint8(c)
Fungsi imread() digunakan untuk membaca image yang ada pada komputer kita, image kucing itu pun harus sudah ada pada folder work didalam matlab.
C:\Program Files\MATLAB71\work
Fungsi uint8() digunakan untuk mengubah string menjadi bilangan integer.
Berikut cara menampilkan sebuah citra atau image sebagai matriks menggunakan Matlab. Sebagai contoh menggunakan sebuah gambar dengan format jpg.
Image yang digunakan berukuran 130 x 119 yang berarti image tersebut terdiri dari 130 kolom dan 119 baris pixel. Jadi total keseluruhan image tersebut terdiri dari 15470 pixel, dan tiap pixel tersebut merupakan perpaduan dari 3 warna utama yaitu: Red, Green, Blue yang lebih dikenal dengan istilah RGB.
Untuk menampilkan image tersebut sebagai matriks pada matlab tidaklah sulit, berikut adalah sintaks yang digunakan untuk menampilkan image tersebut sebagai matriks.
>> c=imread(‘kucing.jpg’,'jpg’);
>> asci=uint8(c)
Fungsi imread() digunakan untuk membaca image yang ada pada komputer kita, image kucing itu pun harus sudah ada pada folder work didalam matlab.
C:\Program Files\MATLAB71\work
Fungsi uint8() digunakan untuk mengubah string menjadi bilangan integer.
asci(:,:,1) Menandakan bahwa matriks yang ditampilkan adalah komposisi warna lapis pertama atau Red, dan seterusnya diikuti matriks lapis kedua dan ketiga.
Histogram
Matriks Green
Perataan Histogram
gambar=imread(‘gambarkoe.jpg’); %--------membaca file gambar
red=gambar(:,:,1); %memanggil matriks gambar yang hanya berisi piksel warna merah
green=gambar(:,:,2);% memanggil matriks gambar yang hanya berisi piksel warna merah
blue=gambar(:,:,3); %memanggil matriks gambar yang hanya berisi piksel warna merah
merahgray2=0.3*red+0.5*green+0.2*blue ;
imhist(red)
imhist(green)
imhist(blue)
imhist(gray)
red=gambar(:,:,1); %memanggil matriks gambar yang hanya berisi piksel warna merah
green=gambar(:,:,2);% memanggil matriks gambar yang hanya berisi piksel warna merah
blue=gambar(:,:,3); %memanggil matriks gambar yang hanya berisi piksel warna merah
merahgray2=0.3*red+0.5*green+0.2*blue ;
imhist(red)
imhist(green)
imhist(blue)
imhist(gray)
Rgb2gray Histogram
[nama_file1,nama_path1]=
uigetfile(... {’*.bmp;*.jpg
’,’File Citra
(*.bmp,*.jpg)’;
’*.bmp’,’ File Bitmap
(*.bmp)’; ... ’*.jpg’,’Filejpeg (*.jpg)’; ’*.*’,’
Semua File (*.*)’},...’Buka File Citra
Host/Asli’); if ˜isequal(nama_file1,0)
handles.citra1=imread
(fullfile(nama_path1,nama_file1));
x=rgb2gray(handles.citra1);
guidata(hObject,handles); hold on;
axes(handles.sb_citra_asli);
imshow(x); hold on;
axes(handles.sb_hist_asli);
imhist(x);
else
return; end set(handles.text9,’string’ ,nama_file1);
set(handles.text10,’string’ ,size(handles.citra1,1));
set(handles.text12,’string’ ,size(handles.citra1,2));
x=rgb2gray(handles.citra1);
handles.citra2=histeq(x);
guidata(hObject,handles);
hold on;
axes(handles.sb_citra_perataan);
imshow(handles.citra2); hold on;
axes(handles.sb_hist_perataan);
imhist(handles.citra2);
return; end set(handles.text9,’string’ ,nama_file1);
set(handles.text10,’string’ ,size(handles.citra1,1));
set(handles.text12,’string’ ,size(handles.citra1,2));
x=rgb2gray(handles.citra1);
handles.citra2=histeq(x);
guidata(hObject,handles);
hold on;
axes(handles.sb_citra_perataan);
imshow(handles.citra2); hold on;
axes(handles.sb_hist_perataan);
imhist(handles.citra2);
RGB Histogram
uigetfile(...
{’*.bmp;*.jpg’,’File Citra
(*.bmp,*.jpg)’;
’*.bmp’,’File Bitmap
(*.bmp)’; ... ’*.jpg’,’File
jpeg (*.jpg)’;
’*.*’,’Semua File (*.*)’},...
’Buka File Citra
Host/Asli’);
if ˜isequal(nama_file1, 0)
handles.citra1=imread(fullfile(nama_path1,nama_file1));
[x,map]=rgb2ind(handles.citra1,256);
guidata(hObject,handles);
hold on; axes(handles.sb_citra_asli);
imshow(handles.citra1);
R=handles.citra1(:,:,1);
hold on;
axes(handles.sb_hist_red);
imhist(R); G=handles.citra1(:,:,2);
hold on;
axes(handles.sb_hist_green);
imhist(G);
B=handles.citra1(:,:,3);
hold on; axes(handles.sb_hist_blue);
imhist(B);
else return; end
set(handles.text10,’string’
,nama_file1);
set(handles.text12,’string’,size(handles.citra1,1));
set(handles.text14,’string’,size(handles.citra1,2));
Tepi adalah perubahan nilai intensitas derajat keabuan yang mendadak (besar) dalam jarak yang singkat. Perbedaan intensitas inilah yang memperlihatkan rincian pada gambar. Tepi dapat diorientasikan dengan suatu arah, dan arah ini berbeda-beda, tergantung pada perubahan intensitas.
Deteksi tepi merupakan langkah pertama untuk melingkupi informasi di dalam citra. Tepi mencirikan batas-batas objek dan karena itu tepi berguna untuk proses segmentasi dan identifikasi objek di dalam citra. Tujuan operasi deteksi tepi adalah untuk meningkatkan penampakan garis batas suatu daerah atau objek di dalam citra.
Teknik Deteksi Tepi cukup banyak tapi disini kita hanya akan membandingkan dua teknik saja yaitu operator Sobel dan operator Prewitt.
Operator Sobel
Tinjauan pengaturan pixel disekitar pixel (x,y);
Operator Sobel adalah magnitudo dari dari gradien yang dihitung dengan
yang dalam hal ini, turunan parsial dihitung dengan
dengan konstanta c = 2. Dalam bentuk mask, sx dan sy dapat dinyatakan sebagai
Arah tepi dihitung dengan persamaan :
Operator Prewitt
Persamaan gradien pada operator Prewitt sama seperti operator Sobel, tetapi menggunakan nilai c = 1 :
Setelah kita mengetahui secara teori perbedaan operator Sobel dan Prewitt terletak pada nilai c, dimana sobel menggunakan c=2 dan prewitt menggunakan c=1. Jika kita implementasikan menggunakan MATLAB maka perintah yang digunakan yaitu sebagai berikut :
X=imread(‘kubahmas.jpg’);
Y=rgb2gray(X);
P=edge(Y,’prewitt’);
S=edge(Y,’sobel’);
figure,imshow(P);
figure,imshow(S);
Untuk melihat hasilnya kita menggunakan perintah figure,imhsow(P/S), dimana P untuk Prewitt dan S untuk Sobel. Maka hasilnya seperti berikut:
{’*.bmp;*.jpg’,’File Citra
(*.bmp,*.jpg)’;
’*.bmp’,’File Bitmap
(*.bmp)’; ... ’*.jpg’,’File
jpeg (*.jpg)’;
’*.*’,’Semua File (*.*)’},...
’Buka File Citra
Host/Asli’);
if ˜isequal(nama_file1, 0)
handles.citra1=imread(fullfile(nama_path1,nama_file1));
[x,map]=rgb2ind(handles.citra1,256);
guidata(hObject,handles);
hold on; axes(handles.sb_citra_asli);
imshow(handles.citra1);
R=handles.citra1(:,:,1);
hold on;
axes(handles.sb_hist_red);
imhist(R); G=handles.citra1(:,:,2);
hold on;
axes(handles.sb_hist_green);
imhist(G);
B=handles.citra1(:,:,3);
hold on; axes(handles.sb_hist_blue);
imhist(B);
else return; end
set(handles.text10,’string’
,nama_file1);
set(handles.text12,’string’,size(handles.citra1,1));
set(handles.text14,’string’,size(handles.citra1,2));
Perbandingan Deteksi Tepi dengan Operator Sobel dan Prewitt
Deteksi TepiTepi adalah perubahan nilai intensitas derajat keabuan yang mendadak (besar) dalam jarak yang singkat. Perbedaan intensitas inilah yang memperlihatkan rincian pada gambar. Tepi dapat diorientasikan dengan suatu arah, dan arah ini berbeda-beda, tergantung pada perubahan intensitas.
Deteksi tepi merupakan langkah pertama untuk melingkupi informasi di dalam citra. Tepi mencirikan batas-batas objek dan karena itu tepi berguna untuk proses segmentasi dan identifikasi objek di dalam citra. Tujuan operasi deteksi tepi adalah untuk meningkatkan penampakan garis batas suatu daerah atau objek di dalam citra.
Teknik Deteksi Tepi cukup banyak tapi disini kita hanya akan membandingkan dua teknik saja yaitu operator Sobel dan operator Prewitt.
Operator Sobel
Tinjauan pengaturan pixel disekitar pixel (x,y);
Operator Sobel adalah magnitudo dari dari gradien yang dihitung dengan
yang dalam hal ini, turunan parsial dihitung dengan
dengan konstanta c = 2. Dalam bentuk mask, sx dan sy dapat dinyatakan sebagai
Arah tepi dihitung dengan persamaan :
Operator Prewitt
Persamaan gradien pada operator Prewitt sama seperti operator Sobel, tetapi menggunakan nilai c = 1 :
Setelah kita mengetahui secara teori perbedaan operator Sobel dan Prewitt terletak pada nilai c, dimana sobel menggunakan c=2 dan prewitt menggunakan c=1. Jika kita implementasikan menggunakan MATLAB maka perintah yang digunakan yaitu sebagai berikut :
X=imread(‘kubahmas.jpg’);
Y=rgb2gray(X);
P=edge(Y,’prewitt’);
S=edge(Y,’sobel’);
figure,imshow(P);
figure,imshow(S);
Untuk melihat hasilnya kita menggunakan perintah figure,imhsow(P/S), dimana P untuk Prewitt dan S untuk Sobel. Maka hasilnya seperti berikut:
Kemudian ketikkan listing program di bawah ini pada program matlab :
I=imread(‘water lilies.jpg’);
gray=rgb2gray(I);
BW1 = edge (gray,’prewitt’);
BW2 = edge (gray,’sobel’);
figure, imshow(BW1);
figure, imshow(BW2);
Imread berfungsi untuk membaca gambar dan variabel I adalah variabel untuk menyimpan file gambar ‘water lilies’ . BW1 adalah variabel untuk menyimpan gambar yang telah diproses menggunakan deteksi tepi operator ‘prewitt’ dan BW2 adalah variabel untuk menyimpan gambar yang telah diproses menggunakan deteksi tepi operator ’sobel’. Untuk menampilkan hasil pemrosesan menggunakan perintah ‘figure, imshow(var)’.
Hasil dari kedua deteksi tepi tersebut adalah :