Kompresi gambar Dengan Matlab 7.1 KOMPRESI Secara garis besar, kompresi merupakan proses untuk menghilangkan berbagai kerumitan yang tidak penting (redundansi) dari suatu informasi dengan cara memadatkan isi file sehingga ukurannya menjadi lebih kecil dengan memaksimalkan kesederhanaannya dan tetap menjaga kualitas penggambaran dari informasi tersebut. Kompresi data menjadi sangat penting karena memperkecil kebutuhan penyimpanan data, mempercepat pengiriman data, memperkecil kebutuhan bandwith.Teknik kompresi bisa dilakukan terhadap data teks/biner, gambar (JPEG, PNG, TIFF), audio (MP3, AAC, RMA, WMA), dan video (MPEG, H261, H263). Langkah-Langkah Pembuatan Aplikasi Kompresi Aplikasi kompresi yang kami buat, menggunakan MATLAB 7, yaitu software yang digunakan sebagai alat pemrograman standar bidang matematika, rekayasa dan keilmuan yang terkait. MATLAB menyediakan beberapa pilihan
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Kompresi gambar Dengan Matlab 7.1
KOMPRESI
Secara garis besar, kompresi merupakan proses untuk menghilangkan
berbagai kerumitan yang tidak penting (redundansi) dari suatu
informasi dengan cara memadatkan isi file sehingga ukurannya
menjadi lebih kecil dengan memaksimalkan kesederhanaannya dan
tetap menjaga kualitas penggambaran dari informasi tersebut.
Kompresi data menjadi sangat penting karena memperkecil kebutuhan
script tersebut menyatakan bahwa terdapat fungsi uigetfile pada function kompres_Callback yang digunakan untuk membuat file citra yang di kompresi akan berformat *.jpg apapun format awal file citra tersebut. Terakhir adalah mengetikkan script pada bagian function keluar_Callback, script yang diketikkan adalah
Aplikasi Kompresi Gambar menggunakan MATLABPosted: 26 November 2010 in Tidak terkategori 3Nama Anggota Kelompok PPC :1. Achmad Thohir (50407016)2. Wenny Rahmawati (50407891)
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 KompresiPenulisan source code pada pembuatan aplikasi dengan MATLAB menggunakan editorM-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
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!
% MATLAB 4.2c JPEG image compression program% by Scott Teresi, www.teresi.us% March 15-17, 1997
% Data Classification and Compression class% Dr. Salari, Univ. of Toledo
% This program compresses an image using the JPEG algorithm
% Enter matlab, then type the name of this file (jpeg) to execute it.% It requires a ".mat" file containing raw black-and-white image data% stored in matrix variable "X". The matrix contains the pixel intensities.% Also, store a colormap in variable "map" (see first few lines of program).
% Initializations
clear % clear all variables from previous sessionsload lenna % load file of variables containing a gray image matrix
orig_img = X; % image matrix was stored in variable X % image colormap is stored in variable map
quant_multiple = 1; % set the multiplier to change size of quant. levels % (fractions decrease distortion) % vary quant_mult from .1 to 3 (see jpeg.results file)
blocksize = 8; % set the size of chunks to take the DCT of ( =< 8)DCT_quantizer = ... % levels for quantizing the DCT block (8x8 matrix)
sz = size(orig_img);rows = sz(1,1); % finds image's rows and columnscols = sz(1,2);colors = max(max(orig_img)); % guess at the number of colors in the image
% Replace a color colormap with a grayscale one% % map_sz = size(map);% clrs = map_sz(1,1);% gray_map = (0:clrs-1)' / (clrs-1);% gray_map = [gray_map gray_map gray_map];% map = gray_map;% colormap(map)
% Introduction
str = str2mat( ... 'Scott Teresi, March 1997.', ... 'This program implements the JPEG data compression algorithm.');ssdisp(0, str);
for extra_cols = 1:pad_cols orig_img(1:rows, cols+extra_cols) = orig_img(1:rows, cols);end
cols = cols + pad_cols; % orig_img is now pad_cols wider
for extra_rows = 1:pad_rows orig_img(rows+extra_rows, 1:cols) = orig_img(rows, 1:cols);end
rows = rows + pad_rows; % orig_img is now pad_rows taller
% calculate the DCT transform matrix% (from page 336 of the Intro to Data Compression book)
i = 0;for j = 0: blocksize - 1 DCT_trans(i + 1, j + 1) = sqrt(1 / blocksize) ... * cos ((2 * j + 1) * i * pi / (2 * blocksize));end
for i = 1: blocksize - 1 for j = 0: blocksize - 1 DCT_trans(i + 1, j + 1) = sqrt(2 / blocksize) ... * cos ((2 * j + 1) * i * pi / (2 * blocksize)); endend
% Take DCT of blocks of size blocksize
fprintf(1, '\nFinding the DCT and quantizing...\n');starttime = cputime; % "cputime" is an internal cpu time counter
jpeg_img = orig_img - orig_img; % zero the matrix for the compressed image
for row = 1: blocksize: rows for col = 1: blocksize: cols
% take a block of the image: DCT_matrix = orig_img(row: row + blocksize-1, col: col + blocksize-1);
% perform the transform operation on the 2-D block % (from page 331 of the Intro to Data Compression book) DCT_matrix = DCT_trans * DCT_matrix * DCT_trans';
% quantize it (levels stored in DCT_quantizer matrix): DCT_matrix = floor (DCT_matrix ... ./ (DCT_quantizer(1:blocksize, 1:blocksize) * quant_multiple) + 0.5);
% place it into the compressed-image matrix: jpeg_img(row: row + blocksize-1, col: col + blocksize-1) = DCT_matrix;
endend
fprintf(1, ' CPU time used: %1.3f\n', (cputime - starttime))
% Reverse the process (take the Inverse DCT)
fprintf(1, 'Reconstructing quantized values and taking the inverse DCT...\n');starttime = cputime;
recon_img = orig_img - orig_img; % zero the matrix for the reconstructed image
for row = 1: blocksize: rows for col = 1: blocksize: cols
% take a block of the image: IDCT_matrix = jpeg_img(row: row + blocksize-1, col: col + blocksize-1);