Tuesday, December 11, 2012

Membuat Aplikasi Kompresi Citra dengan Matlab

By firalia   Posted at  8:40 PM   Belajar komputer 1 comment

Untuk merancang tampilan aplikasi , 
*Membuka MATLAB.
*File- New - GUI.
*Kemudian GUI default, simpan dengan nama Kompresi_citra.fig.
*Kemudian muncul Kompresi_citra.fig, untuk merancang tampilan yang akan dibuat , dengan menarik komponen-komponen yang berada di sebelah kiri ke dalam area rancangan. Kemudian rancang seperti gambar di bawah ini


  1. Komponen Axes dengan tag citra_asli. Untuk menampilkan citra asli atau gambar sebelum terkompresi.
  2. Komponen Axes dengan tag citra_compresi. Untuk menampilka citra kompresi atau gambar hasil kompresi.
  3. Static text  dengan   string ‘-‘ dan tag name1 . Untuk menampilkan informasi nama citra asli.
  4. Static text  dengan   string ‘-‘ dan tag size1 . Untuk menampilkan informasi size citra asli.
  5. Static text  dengan   string ‘-‘ dan tag name2. Untuk menampilkan informasi  nama citra hasil kompresi.
  6. Static text  dengan   string ‘-‘ dan tag size2. Untuk menampilkan informasi size citra hasil kompresi.
  7. Static text  dengan   string ‘-‘ dan tag date2. Untuk menampilkan informasi tanggal modifikasi citra hasil kompresi.
  8. Static text  dengan  string Citra Asli.
  9. Static text  dengan  string Citra Terkompresi.
  10. Static text  dengan  string KOMPRESI CITRA.
  11. Pushbutton dengan string Buka dan tag pushbutton1.
  12. Pushbutton dengan string Kompresi dan tag pushbutton2.
  13. Pushbutton dengan string Keluar dan tag pushbutton3.
Setelah rancangan tadi jadi, otomatis Kompresi-citra.m  akan muncul , di M-file ini masukan script program ke dalam rancangan yang dibuat tadi.

Penulisan kodeini akan tereksekusi ketika user menekan tombol buka. Kemudian kode untuk membuka file citra dan menapilkan informasi citra pada static text.

function pushbutton1_Callback(hObject, eventdata, handles)
[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));
info=imfinfo(fullfile(nama_path1,nama_file1));
size_file=info.FileSize/1000;
guidata(hObject,handles);
handles.current_data1=handles.data1;
axes(handles.citra_asli);
imshow(handles.data1);
set(handles.name1,'String',nama_file1);
set(handles.size1,'String',size_file);
else
    return;
end


Penulisan kode untuk mengompres dan menyimpan file dengan nama lain. Ditentukan disini bahwa kompresi file jpeg yang dilakukan adalah  dengan  kualitas sebesar 50 dari 100.
function pushbutton2_Callback(hObject, eventdata, handles)
[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),'Quality',50);
citra_kompres=imread(fullfile(path_simpan,nama_file_simpan));
guidata(hObject, handles);
axes(handles.citra_kompresi);
imshow(citra_kompres);


Penulisan kode untuk mengambil data gambar dan menampilakan ke dalam static text.
info=imfinfo(fullfile(path_simpan,nama_file_simpan));
size_file_simpan=info.FileSize/1000;
set(handles.name2,'String',nama_file_simpan);
set(handles.size2,'String',size_file_simpan);
set(handles.date2,'String',info.FileModDate);


Penulisan kode untuk menutup aplikasi, jika user menekan tombol keluar.
function pushbutton3_Callback(hObject, eventdata, handles)
selection=questdlg(['Keluar' get(handles.figure1,'Name')''],['Keluar' get(handles.figure1,'Name')''],'Ya','Tidak','Ya');
if strcmp(selection,'Tidak')
    return;
end
delete(handles.figure1)



Pada function pushbutton1_Callback(hObject, eventdata, handles), digunakan fungi uigetfile untuk membaca file citra  dengan format file yang didefinisikan. Kemudian digunakan fungsi ~isequal(nama_file1,0) tes kondisi yang  menyatakan keberadaan file. Jika filenya ada maka isequal() menyatakan nilai 1, 0 jika sebaliknya.
                Fungsi imread ( fullfile(nama_path1,nama_file1)) digunakan untuk membaca file direktori nma_path1 dan nama filenya adalah nama_file1. Fullfile digunakan untuk membaca file lengkap dengan direktorinya.
                Fungsi imfinfo digunakan untuk memberikan semua informasi file yang dibaca ( nama, ukuran dan tanggal modifikasi ). Pada fungsi imfinfo size data yang ditampilkan dalam ukuran byte, maka dilakukan konversi ke kilobyte.
                Statemen axes digunakan untuk menghandle tempat untuk file citra yang akan ditampilkan, sedangkan untuk menampilkan citra digunakan statemen imshow.Sedangkan untuk menampilkan informasi tentang citra digunakan set(handles.text,’String’,infoFile).
                Kemudian berikan script program untuk proses dari kompresi JPEG. Pada matlab, kompresi JPEG terdapat pada toolbox image processing yang tergabung dalam perintah imwrite, yaitu: imwrite(A,filename,fmt) dengan A adalah citra asli yang dapat berupa citra hitam putih maupun citra berwarna.Filename adalah nama file hasil kompresi JPEG. Sedangkan fmt sebenarnya digunakan untuk menspesifikasikan quality  kompresi yang nilainya antara 1 sampai 100, namun dalam hal ini bersifat optional.
Untuk menambah tampilan interaktif, tambahkan question dialog yang akan ditampilkan ketika pengguna memilih tombol keluar. Untuk menutup figure dan aplikasi jika pengguna memilih yes ketika muncul question dialog, gunakan  statement delete(handles,figure1), maka aplikasi akan tertutup.


Selamat mencoba... :) 

About the Author

Nulla sagittis convallis arcu. Sed sed nunc. Curabitur consequat. Quisque metus enim, venenatis fermentum, mollis in, porta et, nibh. Duis vulputate elit in elit. Mauris dictum libero id justo.
View all posts by: BT9

1 comment:

  1. permisi min mau tanya ini linknya udah mati ya ?
    soalnya mau liat mfile detailnya

    ReplyDelete

Back to top ↑
Connect with Us

What they says

© 2013 Barakallah. WP Mythemeshop Converted by Bloggertheme9
Blogger templates. Proudly Powered by Blogger.