Penajaman Citra (Sharpening)


Untuk mata kuliah pengolahan citra ini, saya akan membahas pembuatan aplikasi sederhana tentang penajaman citra (Sharpening) dengan menggunakan matlab. Untuk pembuatannya, digunakan matlab versi 7.1.


• Sekilas Tentang Matlab
MATLAB merupakan suatu sistem interaktif yang memiliki elemen data dalam suatu array sehingga tidak lagi kita dipusingkan dengan masalah dimensi. Hal ini memungkinkan kita untuk memecahkan banyak masalah teknis yang terkait dengan komputasi, kususnya yang berhubungan dengan matrix dan formulasi vektor, yang mana masalah tersebut merupakan momok apabila kita harus menyelesaikannya dengan menggunakan bahasa level rendah seperti Pascall, C dan Basic.
• Sekilas Tentang Pengolahan Citra
Salah satu jenis pengolahan citra adalah perbaikan kualitas citra. Perbaikan Kualitas citra (image enhancement) adalah operasi yang bertujuan untuk memperbaiki kualitas citra dengan cara memanipulasi parameter-parameter citra. Dengan operasi ini ciri-ciri khusus yang terdapat pada citra lebih ditonjolkan.Yang termasuk dalam klasifikasi ini antara lain:
a. Perbaikan kontras gelap / terang (contrast enhncement).
b. Perbaikan tepian objek (edge enhancement)
c. Penajaman (sharpening)
d. Pemberian warna semu (pseudocoloring)
e. Penyaringan derau (noise filtering)
• Langkah-Langkah Pembuatan Program
Salah satu kelebihan dari Matlab adalah kemudahan dalam mengolah grafik. Misalnya, untuk mengolah suatu tampilan grafis agar lebih tajam (penajaman citra), cukup dengan mengikuti langkah berikut.
1. Buka program Matlab, hingga muncul tampilan awal seperti berikut :


2. Untuk membuat tampilannya, dibutuhkan file GUI. Pilih new - GUI



3. Akan muncul tampilan berikut :



4. Pilih tools axes dan button. Dibutuhkan 2 buah objek axes dan 3 buah objek button, kemudian dapat disusun seperti pada tampilan berikut :


5. Save file “.fig” tersebut, (pada project ini, saya menggunakan nama “terserah.fig”).

6. Untuk mengaktifkan button PILIH GAMBAR, klik kanan pada button tersebut, pilih menu view callbacks – callkback.



7. Menu callback yang telah dipilih, akan membawa ke dalam editor “file.m” dan menyorot ke fungsi button1 (pilih gambar). Setelah itu, dapat ditambahkan script berikut :


Script :
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));

set(proyek.figure1,'Userdata',I);
set(proyek.axes1,'Userdata',I);

8. Dengan cara yang sama, aktifkan button yang ke2(Proses) dengan menambahkan script berikut :
Script :
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));
set(proyek.axes2,'Userdata',A);
redo_Callback(hObject, eventdata, handles);
end

9. Dengan cara yang sama, aktifkan button yang ke3(Simpan) dengan menambahkan script berikut :
Script :
proyek=guidata(gcbo);
[namafile,direktori]=uiputfile({'*.jpg';'*.*'},'Simpan Citra');
I=get(proyek.axes2,'Userdata');
imwrite(I,strcat(direktori,namafile));

10. Save file “.m” tersebut, (pada project ini, saya menggunakan nama “terserah.m”).

11. Selesai, kemudian pilih icon “Run” atau dapat juga dengan menekan F5 pada keyboard.

12. Berikut adalah hasilnya :
Tampilan awal :


Klik button pilih gambar :


Tampilan gambar berhasil dipilih :


Klik button Proses. Berikut adalah tampilan gambar berhasil dipertajam :


Untuk menyimpan, klik button simpan.



Script Lengkap :
function varargout = terserah(varargin)
% TERSERAH M-file for terserah.fig
% TERSERAH, by itself, creates a new TERSERAH or raises the existing
% singleton*.
% H = TERSERAH returns the handle to a new TERSERAH or the handle to
% the existing singleton*.
% TERSERAH('CALLBACK',hObject,eventData,handles,...) calls the local
% function named CALLBACK in TERSERAH.M with the given input arguments.
% TERSERAH('Property','Value',...) creates a new TERSERAH or raises the existing singleton*. Starting from the left, property value pairs are
% applied to the GUI before terserah_OpeningFunction gets called. An
% unrecognized property name or invalid value makes property application
% stop. All inputs are passed to terserah_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 terserah
% Last Modified by GUIDE v2.5 10-Jun-2004 02:13:58
% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @terserah_OpeningFcn, ...
'gui_OutputFcn', @terserah_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 terserah is made visible.
function terserah_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 terserah (see VARARGIN)
% Choose default command line output for terserah
handles.output = hObject;

% Update handles structure
guidata(hObject, handles);

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

% --- Outputs from this function are returned to the command line.
function varargout = terserah_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));
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));
set(proyek.axes2,'Userdata',A);
redo_Callback(hObject, eventdata, handles);
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));

Komentar

Posting Komentar

Postingan populer dari blog ini

Sejarah, Definisi & Komponen Sistem Basis Data

Hayoo.. Curhat atau mengeluh? :)

Tutorial Dasar MongoDB