About

Penajaman Citra

Sharpening

Pada tugas kali ini, akan dijelaskan mengenai penajaman citra (sharpening) dengan menggunakan MATLAB versi 7. Penajaman citra bertujuan untuk memperjelas tepi objek pada citra. Metodenya menggunakan High Pass Filter. Penajaman citra sering juga disebut sebagai penajaman tepi (edge sharpening).

Selanjutnya saya akan menjelaskan proses pembuatan sharpening dengan matlab beserta GUI-nya. Pertama-tama buka program matlab, kemudian ketikan >>guide pada command window. Kemudian pilih Blank GUI, lalu OK. Selajutnya simpan figure dengan mengklik File>>Save As, simpan dengan nama Sharpening. Lalu desain figure dengan mendesain seperti gambar dibawah ini :



Pada desain GUI di atas komponen yang digunakan yaitu pushbutton, axes, panel , dan static text. Untuk mengatur properti komponen dapat dilakukan dengan double click pada komponen atau dengan klik kanan pada komponen>>property inspector.

Pada desain GUI sharpening ini saya menggunakan tiga pushbutton yaitu Browse, Sharp, dan Clear Image. Button Browse digunakan untuk meload gambar ke axes pertama. Button Sharp digunakan untuk melakukan proses penajaman citra yang hasilnya akan ditampilkan pada axes kedua. Button Clear Image berfungsi untuk membersihkan gambar pada axes pertama dan kedua.

Berikut ini adalah koding untuk keseluruhan komponen :

Script
function varargout = Sharpening(varargin)
% SHARPENING MATLAB code 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_OpeningFcn 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 26-Dec-2011 00:55:06

% 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.figsharp);


% --- 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 btnbrowse.
function btnbrowse_Callback(hObject, eventdata, handles)
% hObject    handle to btnbrowse (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');

I=imread(namafile);
set(proyek.figsharp,'CurrentAxes',proyek.axes1);
set(imshow(I));
set(proyek.axes1,'Userdata',I);
set(proyek.figsharp,'Userdata',I);

% --- Executes on button press in btnsharp.
function btnsharp_Callback(hObject, eventdata, handles)
% hObject    handle to btnsharp (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');
PSF=fspecial('unsharp');
A=imfilter(I,PSF,'replicate');
set(proyek.figsharp,'CurrentAxes',proyek.axes2);
set(imshow(A));
set(proyek.axes2,'Userdata',A);

% --- Executes on button press in btnclear.
function btnclear_Callback(hObject, eventdata, handles)
% hObject    handle to btnclear (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);
set(proyek.figsharp,'CurrentAxes',proyek.axes1);
cla;
set(proyek.figsharp,'CurrentAxes',proyek.axes2);
cla;

Penjelasan :
Fungsi Uigetfile digunakan sebagai kotak dialog standar untuk mengambil file.
Syntax:
filename = uigetfile
[FileName,PathName,FilterIndex] = uigetfile(FilterSpec)
[FileName,PathName,FilterIndex] = uigetfile(FilterSpec,DialogTitle)
[FileName,PathName,FilterIndex] = uigetfile(FilterSpec,DialogTitle,DefaultName)
[FileName,PathName,FilterIndex] = uigetfile(...,'MultiSelect',selectmode)

PSF=fspecial('unsharp');
fspecial menciptakan filter 2-D PSF dari tipe yang spesifik. fspecial mengembalikan nilai PSF sebagai kernel korelasi, yang merupakan bentuk yang sesuai untuk  digunakan dengan imfilter. Imfilter digunakan untuk gambar multidimensional. Unsharp merupakan tipe spesifik yang digunakan untuk meningkatkan kontras.

Fungsi “cla;”  digunakan untuk membersikan objek dari axes.


Untuk menuliskan perintah-perintah diatas dapat digunakan fungsi callback. Caranya yaitu klik kanan pada komponen>>klik View Callback>>Callback. Setelah semua perintah sudah dimasukan GUI dapat dijalankan pada figure dengan menekan CTRL+T.
Dibawah ini adalah gambar output dari gambar asli dan gambar yang sudah dilakukan proses sharpening.



Apakah terlihat perbedaannya?

Read more