Rabu, 24 November 2010

Aplikasi Kompresi Gambar menggunakan MATLAB

         
Kelompok :
Wenny Rahmawati (50407891)
Achmad Thohir      (50407016)



          Pengolahan Citra adalah Pemrosesan citra, khususnya dengan menggunakan komputer, menjadikan citra dengan kualitas yang lebih baik. Pengolahan Citra bertujuan untuk memperbaiki kualitas citra agar mudah diinterprestasi oleh manusia atau mesin (dalam hal ini komputer). Teknik-teknik pengolahan citra mentransformasikan citra menjadi citra lain, salah satunya adalah kompresi citra (image compression). Jadi, masukannya adalah citra dan keluarannya juga citra, namun citra keluarannya mempunyai ukuran citra lebih kecil daripada citra masukannya.

         Kompresi merupakan proses untuk menghilangkan berbagai kerumitan yang tidak penting (redudansi) dari suatu informasi dengan cara memadatkan isi file sehingga ukurannya menjadi lebih kecil dengan memaksimalkan kesederhanaannya dan tetap menjaga kualitas penggambaran dari informasi tersebut. Aplikasi kompresi yang saya buat menggunakan masukan (input) berupa citra dengan beberapa format seperti format JPEG, Bitmap, PNG, dan TIF dan menghasilkan keluaran (output) berupa citra dengan format JPEG.

Langkah – langkah pembuatan Program Kompresi

A.    Membuat Desain Figure
        Aplikasi kompresi ini dibuat menggunakan MATLAB 7.1 dengan membuat sebuah user interface MATLAB dengan fasilitas GUIDE. Untuk membuat sebuah user interface dimulai dengan mmbuat desain sebuah figure dengan memanfaatkan uicontrol (control user interface) yang tersedia di editor figure. Uicontrol yang digunakan untuk membuat aplikasi kompresi ini adalah :

      1. Axes
         Axes digunakan untuk menampilkan sebuah grafik atau gambar (image). Pada pembuatan aplikasi ini digunakan 2 Axes yang digunakan untuk menampilkan citra asli dan citra kompresi.
     2. Static Text
         Static Text akan menghasilkan teks bersifat tetap sehingga user tidak dapat melakukan perubahan. Teks dan beberapa fasilitas lainnya dapat diatur dalam static text. Seperti jenis dan ukuran font, warna dll. Pada pembuatan aplikasi kompresi ini terdapat 2 static text yaitu Nama file untuk citra masukan dan Nama file untuk citra keluaran.
    3. Pushbutton
       Pushbutton merupakan jenis control berupa tombol tekan yang akan menghasilkan sebuah tindakan jika diklik. Pada pembuatan aplikasi ini, pushbutton yang digunakan adalah Pilih Gambar, Kompres dan Keluar.



Berikut adalah Desain Aplikasi Kompres JPEG :

Pembuatan Source Code Program Kompresi
Penulisan source code pada pembuatan aplikasi dengan MATLAB menggunakan editor
M-file.
a.    Buka Layout Figure yang telah dibuat, lalu klik kanan pada figure pilih M-file.
b.    Ketikkan source code pada Editor M-file.
Program kompresi ini disimpan dengan nama PPC.fig. Pada MATLAB terdapat function yang tersedia secara otomatis seperti dibawah ini :
function varargout = PPC(varargin)
% PPC M-file for PPC.fig
%      PPC, by itself, creates a new PPC or raises the existing
%      singleton*.
%
%      H = PPC returns the handle to a new PPC or the handle to
%      the existing singleton*.
%
%      PPC('CALLBACK',hObject,eventData,handles,...) calls the local
%      function named CALLBACK in PPC.M with the given input arguments.
%
%      PPC('Property','Value',...) creates a new PPC or raises the
%      existing singleton*.  Starting from the left, property value pairs are
%      applied to the GUI before PPC_OpeningFunction gets called.  An
%      unrecognized property name or invalid value makes property application
%      stop.  All inputs are passed to PPC_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 PPC
% Last Modified by GUIDE v2.5 23-Nov-2010 15:28:23
% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name',       mfilename, ...
                   'gui_Singleton',  gui_Singleton, ...
                   'gui_OpeningFcn', @PPC_OpeningFcn, ...
                   'gui_OutputFcn',  @PPC_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 PPC is made visible.
function PPC_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 PPC (see VARARGIN)
% Choose default command line output for PPC
handles.output = hObject;
% Update handles structure
guidata(hObject, handles);
% UIWAIT makes PPC wait for user response (see UIRESUME)
% uiwait(handles.figure1);
% --- Outputs from this function are returned to the command line.
function varargout = PPC_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 buka.
function buka_Callback(hObject, eventdata, handles)
% hObject    handle to buka (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
%Bagian ini merupakan bagian yang mengatur satuan gambar yang digunakan untuk kompresi citra masukan.
[nama_file1, nama_path1]=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.data1=imread(fullfile(nama_path1,nama_file1));
    guidata(hObject,handles);
    handles.current_data1=handles.data1;
    axes(handles.Gambar1);
    imshow(handles.current_data1);
    set(handles.text2,'String',nama_file1);
else
    return;
end
% --- Executes on button press in kompres.
function kompres_Callback(hObject, eventdata, handles)
% hObject    handle to kompres (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
%Bagian ini menunjukkan bahwa hasil kompresi hanya akan berformat .jpg
[nama_file_simpan, path_simpan]=uiputfile(...
    {'*.jpg','File citra(*.jpg)';
    '*.jpg','Citra JPEG(*.jpg)';...
    '*.*','Semua File(*.*)'},...
    'Menyimpan File Citra Hasil Kompresi JPEG');
imwrite(handles.data1, fullfile(path_simpan, nama_file_simpan));
citra_kompres=imread(fullfile(path_simpan, nama_file_simpan));
guidata(hObject,handles);
axes(handles.Gambar2);
imshow(citra_kompres);
set(handles.text4,'String',nama_file_simpan);
% --- Executes on button press in keluar.
function keluar_Callback(hObject, eventdata, handles)
% hObject    handle to keluar (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
%Bagian ini merupakan perintah untuk kotak dialog keluar
selection=questdlg(['Keluar ' get(handles.figure1,'Name')''],...
    ['Keluar ' get(handles.figure1,'Name')''],...
    'Ya','Tidak','Ya');
if strcmp(selection,'Tidak')
    return;
end
delete(handles.figure1)
 


c. Setelah di compile dan di run, hasilnya seperti ini :

d.    Jika kita memilih button Pilih Gambar, maka akan muncul kotak dialog seperti dibawah ini :
 e.   Selanjutnya kita pilih gambar yang kita inginkan masing-masing. Dalam hal ini saya memilih file nolte.bmp

f.    Langkah selanjutnya setelah kita memilih button kompress, program ini terlebih dahulu meminta direktori yang akan menjadi tempat tujuan disimpannya file gambar tersebut setelah dikompresi. Lihat kotak dialog dibawah ini :


g.    Hasil kompresi dapat dilihat dibawah ini. Perubahan terjadi, gambar masukan awalnya berformat .bmp menjadi .jpg dengan ukuran yang lebih kecil.

 
h.    Dan jika kita memilih button Keluar, muncul kotak dialog untuk memastikan apakah kita serius untuk keluar dari program kompresi ini.

Selamat mencoba ya.... Semoga bermanfaat.. (n_n)V 




0 komentar:

Posting Komentar