SELAMAT DATANG

Sesungguhnya Orang Yang Diberikan Ilmu Pengetahuan Dinaikkan Beberapa Derajat

BISMILLAHI RAHMANI ROHIM

SELAMAT DATANG DI GUDANG INFO ILMU

Sabtu, 10 November 2012

Pengolahan Citra Image Dengan Matlab

Langkah-langkahnya adalah sebagai berikut:
1.  Buka Matlab anda.
2.  Klik File, New, GUI lalu klik "Blank GUI (Default)
     Letakkan gambar ikon seperti tampilan diatas secara berurutan:
     a.    Klik "panel" sebanyak 4 buah.
     b.    Klik "axes" didalam  masing-masing panel dan atur posisinya.
     c.    Letakkan tombol-tombol yang ada.
     d.    Buatlah text untuk "Title" atau keterangan lainnya.
     e.    Bila telah selesai, klik 2x tombol masing-masing yang ada dan ubah propertinya seperti gambar
            diatas atau sesuai keinginan anda.
     f.    Bila sudah, klik kanan tombol yang ada dimulai dari tombol dalam panel, kemudian klik "viev
           callback" lalu "callback"
     g.   Isikan "Skrip" program" pada kursor yang ditunjuk pada M-filenya

Untuk listing skrip lengkapnya sebagai berikut, cocokan pada tombol-tombol yang anda klik bila susunan skrip ini berbeda dengan model GUI yang anda buat, contoh:
     Bila anda mengklik tombol button1, maka periksa / cari  listing skrip yang didalam perintah
     % --- Executes on button press in pushbutton1, copy skrip yang tidak ada tanda "%"-nya


Listing skrip lengap untuk program model GUI diatas;
          
function varargout = Sharpening(varargin)
% SHARPENING M-file for Sharpening.fig
%      SHARPENING, by itself, creates a new SHARPENING or raises the existing

%      singleton*.
%
%      H = SHARPENING returns the handle to a new SHARPENING or the handle to
%      the existing singleton*.
%
%      SHARPENING('CALLBACK',hObject,eventData,handles,...) calls the local
%      function named CALLBACK in SHARPENING.M with the given input arguments.
%
%      SHARPENING('Property','Value',...) creates a new SHARPENING or raises the
%      existing singleton*.  Starting from the left, property value pairs are
%      applied to the GUI before Sharpening_OpeningFunction gets called.  An
%      unrecognized property name or invalid value makes property application
%      stop.  All inputs are passed to Sharpening_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 Sharpening

% Last Modified by GUIDE v2.5 08-Nov-2012 21:01:51

% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name',       mfilename, ...
                   'gui_Singleton',  gui_Singleton, ...
                   'gui_OpeningFcn', @Sharpening_OpeningFcn, ...
                   'gui_OutputFcn',  @Sharpening_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 Sharpening is made visible.
function Sharpening_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 Sharpening (see VARARGIN)

% Choose default command line output for Sharpening
handles.output = hObject;

% Update handles structure
guidata(hObject, handles);

% UIWAIT makes Sharpening wait for user response (see UIRESUME)
% uiwait(handles.figure1);

% --- Outputs from this function are returned to the command line.
function varargout = Sharpening_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)
proyek=guidata(gcbo);
[namafile,direktori]=uigetfile({'*.jpg';'*.bmp';'*.png';'*.tif';'*.*'},'Buka Gambar')
if isequal(namafile,0)
return;
end
eval(['cd ''' direktori ''';']);
I=imread(namafile);
set(proyek.figure1,'CurrentAxes',proyek.axes1);
set(imshow(I));
imshow(I), title('Citra Asli');
set(proyek.figure1,'Userdata',I);
set(proyek.axes1,'Userdata',I);

% --- 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)
proyek=guidata(gcbo);
I=get(proyek.axes1,'Userdata');
if isequal(I,[])
msgbox('Belum ada gambar!','Peringatan','warn');
else
PSF=fspecial('unsharp');
A=imfilter(I,PSF,'replicate');
set(proyek.figure1,'CurrentAxes',proyek.axes2);
set(imshow(A));
imshow(A), title('Citra dengan penajaman');
set(proyek.axes2,'Userdata',A);
end

% --- 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)
proyek=guidata(gcbo);
[namafile,direktori]=uiputfile({'*.jpg';'*.*'},'Simpan Citra');
I=get(proyek.axes2,'Userdata');
imwrite(I,strcat(direktori,namafile));


% --- 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)
selection=questdlg(['Apa  Anda  Yakin   ? ' ],['   Keluar ' ],'Ya','Tidak','Ya');
if strcmp(selection,'Tidak')
return;
end
delete(handles.figure1)

% --------------------------------------------------------------------
%function Untitled_1_Callback(hObject, eventdata, handles)
% hObject    handle to Untitled_1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% --- 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)
proyek=guidata(gcbo);
I=get(proyek.axes2,'Userdata');
if isequal(I,[])
msgbox('Belum ada gambar!','Peringatan','warn');
else
gaussianFilter = fspecial('gaussian');
A=imfilter(I, gaussianFilter, 'symmetric', 'conv');
set(proyek.figure1,'CurrentAxes',proyek.axes3);
set(imshow(A));
imshow(A), title('Citra dengan pengaburan');
set(proyek.axes3,'Userdata',A);
end


% --- 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)
proyek=guidata(gcbo);
I=get(proyek.axes3,'Userdata');
if isequal(I,[])
msgbox('Belum ada gambar!','Peringatan','warn');
else
gray = rgb2gray(I);
A = imnoise(gray, 'Gaussian', 0.02);
thresh = graythresh(A);
biner = im2bw(A, thresh);
set(proyek.figure1,'CurrentAxes',proyek.axes4);
set(imshow(A));
imshow(A), title('Citra dengan Noise Abu-abu');
set(proyek.axes4,'Userdata',A);
end



% --- 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)
cla(handles.axes4);
cla(handles.axes3);

cla(handles.axes2);
cla(handles.axes1);

Sharpening

Sharpening (Penajaman) yaitu memperjelas detil suatu citra(menambah kontras) dengan penjumlahan atas citra tepi dengan citra aslinya maka bagian tepi objek akan terlihat berbeda dengan latarnya, sehingga citra terkesan lebih tajam. Proses penajaman berhubungan dengan deteksi tepi perubahan warna yang dilemahkan untuk menciptakan efek tepi tajam. Menggunakan fspecial yang akan membuat filter untuk menajamkan (sharpening) gambar. Filter khususnya bernama 'unsharp'.
Proses Penajaman ini hanya menggunakan fungsi yang telah tersedia dari MATLAB, yaitu fungsi Filter Unsharp. Filter Unsharp ini merupakan “edge enchancemen filter” yang akan menyebabkan citra input akan menjadi lebih jelas dan tajam tepiannya. Filter Unsharp mempunyai rumusan sebagai berikut:
  
Bluring.
Blurring (Pengaburan) yaitu filter spasial low-pass yang melenyapkan detil halus dari suatu citra. Pengaburan dicapai melalui konvolusi dari seluruh koefisien mask bernilai sama. Blurring ini merupakan perataan nilai pixel-pixel tetangga, makin besar ukuran mask maka makin besar efek pengaburan yang dihasilkan. Pelembutan Citra (smoothing) mempunyai tujuan mengurangi noise pada suatu image. Noise-noise tersebut muncul sebagai akibat dari hasil pensamplingan yang tidak bagus. Pixel komponen yang mempunyai noise pada umumnya memiliki frekuensi yang tinggi. Kompoen citra yang berfrekuensi rendah akan diloloskan dan komponen yang mempunyai frekuensi tinggi akan ditahan. Filter smoothing dapat dibangun di Matlab dengan menggunakan fungsi fspecial (filter khusus), contohnya:
gaussianFilter = fspecial ('gaussian', [7, 7], 5)
dalam pemanggilan fungsi ini akan membangun matriks gaussian filter dengan 7 baris dan 7 kolom, dengan standar deviasi 5.
2.3       
             Smoothing & RGB To Gray.
Selain menggunakan fungsi blurring di atas, dapat pula menggunakan pengolahan gambar dengan metode pelembutan citra (smoothing). Pertama, gambar diconvert menjadi noise abu-abu agar terlihat perubahan gambarnya. Kemudian, dibuat pelembutannya sehingga gambar yang kasar menjadi lebih lembut dan terlihat lebih jelas. Fungsi uint8(x) digunakan untuk converts matrix x ke uint8 data type (0-255).



Aplikasi berorientasi Obj
Aplikasi GUI yang dibuat mengguanakan Matlab 7.1 telah menerapkan sistem berorietasi obyek. Penggunaan ini ditunjukkan dengan adanya struktur Handles. Semua hal yang muncul dalam figure Matlab merupakan sebuah Handles Graphics, karena setiap obyek dalam layar memiliki identifier yang unik, disebut handle, hal ini menjadikan untuk kembali dan memodifikasi obyek setiap saat[6]. Gambar 2 merupakan hirarki dari sistem berorientasi obyek dalam Handle Graphics dalam Matlab.

 Desain Algortihma
Algorithma yang digunakan adalah Desain Algorithma Aplikasi yang dikembangkan menggunakan Matlab 7.0 dengan membuat program dan menggunakan interface GUI (Graphical User Interface), sehingga aplikasi ini diharapkan mudah digunakan bagi user. Algoritma program aplikasi ini dikembangkan untuk melakukan proses
 Pengambilan Citra Digital
Pengambilan citra digital dilakukan dengan membuka jendela dialog untuk membuka file citra yang akan diproses, dalam Matlab digunakan perintah imshow untuk membaca sebuah file. Selain melakukan proses pengambilan file citra digital ini, juga sekaligus dilakukan pengubahan tipe citra, yang semula bertipe RGB dirubah menjadi tipe grayscale atau skala keabuan. Konversi tipe citra ini dimaksudkan untuk mempermudah analisis citra lebih lanjut, karena tipe citra skala keabuan memiliki kedalaman warna 8 bit yaitu dari 0 hingga 255 dan 16 bit yaitu dari 0 hingga 65535 sehingga dapat dilakukan pengolahan dengan ekualisasi histogram. Dalam aplikasi ini, setiap citra yang diambil dikonversi menjadi citra dengan skala keabuan 8 bit. Gambar 4 merupakan contoh tampilan GUI yang digunakan untuk membuka file citra digital Fungsi untuk melakukan pengambilan file citra digunakan perintah uigetfile yang akan menampilkan jendela pembuka file serta digunakan argumen untuk memfilter tipe file yatu Jpg, Png, bmp, Tif atau semua file. Berikut program yang terdapat dalam aplikasi GUI ketika penekanan tombol Ambil Citra dilakukan.
proyek=guidata(gcbo);
[namafile,direktori]=uigetfile({'*.jpg';'*.bmp';'*.png';'*.tif';'*.*'},'Buka Gambar')
if isequal(namafile,0)
return;
end
eval(['cd ''' direktori ''';']);
I=imread(namafile);
set(proyek.figure1,'CurrentAxes',proyek.axes1);
set(imshow(I));
imshow(I), title('Citra Asli');
set(proyek.figure1,'Userdata',I);
set(proyek.axes1,'Userdata',I);

Program di atas setelah mengambil file citra, maka citra digital tersebut akan ditampilkan dalam axes yaitu fungsi GUI MATLAB untuk menampilkan grafik maupun gambar. Perintah untuk menampilkan gambar adalah imshow (nama_citra). Citra yang digunakan merupakan citra dengan format berupa citra asli.
Pengubahan Ketajaman Citra (Sharpening)
Proses Penajaman Gambar (Sharpening), lalu  aktifkan button yang ke 2 (“Proses”) dan ketikkan script di bawah ini :
proyek=guidata(gcbo);
I=get(proyek.axes1,'Userdata');
if isequal(I,[])
msgbox('Belum ada gambar!','Peringatan','warn');
else
PSF=fspecial('unsharp');
A=imfilter(I,PSF,'replicate');
set(proyek.figure1,'CurrentAxes',proyek.axes2);
set(imshow(A));
imshow(A), title('Citra dengan penajaman');
set(proyek.axes2,'Userdata',A);
end

Script diatas berfungsi untuk pemrosesan Penajaman Gambar. Awalnya kita gunakan variable I untuk  mendeteksi gambar dari axes1 , namun jika gambar belum ada, maka akan dimunculkan alert atau message box. Jika gambar terdeteksi makan akan dilakukan penajaman dan hasil akan dimasukan ke dalam Axes2.
Proses Penajaman ini hanya menggunakan fungsi yang telah tersedia dari MATLAB, yaitu fungsi Filter Unsharp. Filter Unsharp ini merupakan “edge enchancemen filter” yang akan menyebabkan citra input akan menjadi lebih jelas dan tajam tepiannya. Filter Unsharp mempunyai rumusan sebagai berikut :

Pada program fungsi Filter Unsharp ini dilakukan dengan menggunakan fungsi imfilter dan fspesial  dengan parameter unsharp dan alpha, dengan sintaks sebagai berikut :
Filter = fspecial(‘unsharp’, alpha);
Citra_output = imfilter (citra_output, filter,’replicate’).
Yang akan akan melakukan penyaringan dengan filter peningkatan kontras unsharp dengan matriks 3x3. Fspesial akan membuat filter unsharp dari citra negatif hasil laplace dengan parameter alpha. Alpha akan mengendalikan bentuk dari hasil laplace filter tersebut dan harus berkisar di range 0.0 s/d 1.0. Harga default untuk alpha adalah 0.2.

Pengaburan  Citra (Bluring).
Pengaburan citra atau bluring adalah peningkatan noise pada citra asli yang dalam tugas ini adalah proses pengaburan pada citra yang sudah dilakukan sharpening sesuai dengan alur algorithma dalam tugas ini. Dalam proses pengaburan (bluring) ini digunakan filter Gaussian dengan perintah fspecial (‘Gaussian’) seperti pada script dibawah ini;
proyek=guidata(gcbo);
I=get(proyek.axes2,'Userdata');
if isequal(I,[])
msgbox('Belum ada gambar!','Peringatan','warn');
else
gaussianFilter = fspecial('gaussian');
A=imfilter(I, gaussianFilter, 'symmetric', 'conv');
set(proyek.figure1,'CurrentAxes',proyek.axes3);
set(imshow(A));
imshow(A), title('Citra dengan pengaburan');
set(proyek.axes3,'Userdata',A);
end

Pengubahan Citra Abu-abu (Gray Scale).
Adalah convert citra yang diblur ke skala abu-abu, dengan perintah gray = rgb2gray(I); dan A = imnoise(gray, 'Gaussian', 0.02); yang lengkapnya seperti skrip berikut ini;
proyek=guidata(gcbo);
I=get(proyek.axes3,'Userdata');
if isequal(I,[])
msgbox('Belum ada gambar!','Peringatan','warn');
else
gray = rgb2gray(I);
A = imnoise(gray, 'Gaussian', 0.02);
thresh = graythresh(A);
biner = im2bw(A, thresh);
set(proyek.figure1,'CurrentAxes',proyek.axes4);
set(imshow(A));
imshow(A), title('Citra dengan Noise Abu-abu');
set(proyek.axes4,'Userdata',A);
end



Penyimpanan Pemrosesan Citra.
Penyimpanan citra hasil proses dilakukan dengan menuliskan skrip seperti berikut ini;
proyek=guidata(gcbo);
[namafile,direktori]=uiputfile({'*.jpg';'*.*'},'Simpan Citra');
I=get(proyek.axes2,'Userdata');
imwrite(I,strcat(direktori,namafile));

Memproses Kembali.
Adalah merupakan fasilitas untuk memproses kembali citra gambar baik obyek yang sama atau obyek dari file yang berbeda dengan menghapus atau membersihkan semua tampilan gambar yang ada. Sripnya sebagai berikut:
cla(handles.axes4);
cla(handles.axes3);
cla(handles.axes2);
cla(handles.axes1);


 Keluar dari lembaran kerja.
Tombol ini digunakan untuk keluar dari lembar kerja secara menyeluruh dengan menampilkan kotak dialog pemberitahuan pada user untuk meyakini apa yang akan dilakukan itu perlu. Perintah skrip sebagai berikut ini;
selection=questdlg(['Apa  Anda  Yakin   ? ' ],['   Keluar ' ],'Ya','Tidak','Ya');
if strcmp(selection,'Tidak')
return;
end
delete(handles.figure1)




Selamat mencoba...moga berhasil.....

Wassalam,

Created by: Sumitro Rotu, 10/11/2012


Tidak ada komentar:

Apakah anda tertarik atau suka dengan blog ini ?