Kompresi Citra Digital Menggunakan Transformasi Wavelet
Posted by adi pamungkas
Dalam bidang pengolahan citra digital, terkadang kita menemukan kendala pada besarnya ukuran data yang dibutuhkan untuk merepresentasikan citra. Oleh karena itu dibutuhkan suatu teknik kompresi yang dapat mereduksi ukuran data pada citra. Tujuan dari kompresi citra di antaranya adalah untuk menghemat kapasitas penyimpanan data, mempercepat waktu transmisi data, dan mempercepat waktu komputasi saat pengolahan citra dilakukan. Kompresi citra bekerja dengan cara meminimalkan jumlah bit penyusun citra sehingga ukuran data menjadi lebih kecil.
Terdapat dua buah metode kompresi citra yaitu metode lossless dan metode lossy. Pada metode lossless memungkinkan data yang telah terkompresi dapat dikembalikan seperti semula. Sedangkan pada metode lossy tidak memungkinkan data yang telah terkompresi dapat dikembalikan seperti semula.
Salah satu metode lossless yang dapat digunakan untuk melakukan kompresi citra adalah menggunakan transformasi wavelet diskrit (discrete wavelet transform). Jenis wavelet pada DWT antara lain adalah haar, daubechies, symlets, dan coiflets. Berikut ini merupakan contoh aplikasi pemrograman matlab untuk melakukan kompresi citra digital menggunakan transformasi wavelet.
Langkah-langkah pemrogramannya adalah:
1. Membaca dan menampilkan file citra asli
% menampilkan menu browse file [file, path] = uigetfile({'*.jpeg;*.jpg;*.bmp;*.png;*.tiff;';'*.*'},... 'Select an Image File'); % jika ada file citra yang dipilih maka akan mengeksekusi perintah di % bawahnya if ~isequal(file,0) % membaca file citra yang dipilih Img = imread(fullfile(path,file)); % melihat ukuran file citra dalam satuan kb fileinfo = imfinfo(file); SIZE = fileinfo.FileSize; Size = SIZE/1024; % menampilkan ukuran file citra dalam satuan kb set(handles.edit4,'String',[(Size),' kb']); % menampilkan file citra ke dalam axes axes(handles.axes1) imshow(Img) title('Citra Asli') % menyimpan variabel Img & fileinfo pada lokasi handles (lokasi % penyimpanan variabel dalam MATLAB) agar dapat dipanggil oleh % pushbutton yang lain handles.Img = Img; handles.fileinfo = fileinfo; guidata(hObject, handles) % mereset button2 axes(handles.axes2) cla reset set(gca,'XTick',[]) set(gca,'YTick',[]) set(handles.pushbutton2,'Enable','on') set(handles.edit1,'String',[]) set(handles.edit2,'String',[]) set(handles.edit3,'String',[]) set(handles.edit5,'String',[]) % jika tidak ada file citra yang dipilih maka akan kembali else return end
2. Melakukan kompresi citra menggunakan transformasi wavelet
% memanggil variabel Img & fileinfo yang ada pada lokasi handles Img = handles.Img; fileinfo = handles.fileinfo; % setting jenis wavelet dan level dekomposisi val = get(handles.popupmenu1,'Value'); switch val case 1 wname = 'haar'; case 2 wname = 'db4'; case 3 wname = 'sym4'; case 4 wname = 'coif4'; end n = get(handles.popupmenu2,'Value'); % dekomposisi wavelet [c,s] = wavedec2(Img,n,wname); % kompresi citra xd = wdencmp('lvd',c,s,wname,n,thr,'h'); % menampilkan citra hasil kompresi axes(handles.axes2) imshow(xd) title('Hasil Kompresi') % menyimpan citra hasil kompresi nama_file = ['Hasil Kompresi.',fileinfo.Format]; imwrite(xd,nama_file) % menghitung nilai rasio pemampatan, psnr, dan mse filesize = fileinfo.FileSize; fileinfo_comp = imfinfo(nama_file); filesize_comp = fileinfo_comp.FileSize; nilai_rasio = filesize_comp/filesize*100; nilai_psnr = psnr(xd,Img); nilai_mse = mean(mse(xd,Img)); % menampilkan nilai rasio pemampatan, psnr, dan mse pada edit text set(handles.edit1,'String',[num2str(nilai_psnr),' dB']) set(handles.edit2,'String',num2str(nilai_mse)) set(handles.edit3,'String',[num2str(nilai_rasio),' %']) set(handles.edit5,'String',[num2str(filesize_comp/1024),' kb'])
a. Kompresi citra menggunakan wavelet haar level 1
b. Kompresi citra menggunakan wavelet daubechies level 4
c. Kompresi citra menggunakan wavelet symlets level 6
d. Kompresi citra menggunakan wavelet coiflets level 8
File source code lengkap beserta citra pada pemrograman di atas dapat diperoleh melalui halaman berikut ini: Source Code
Posted on February 4, 2019, in Pengolahan Citra and tagged contoh source code wavelet, contoh wavelet, definisi wavelet, jenis jenis wavelet, kumpulan materi pengolahan citra, kumpulan source code matlab, macam macam wavelet, metode pengolahan citra terbaru, metode wavelet, pengertian wavelet, perbedaan transformasi wavelet dengan transformasi fourier, transformasi wavelet adalah, wavelet coiflets, wavelet daubechies, wavelet haar, wavelet symlets. Bookmark the permalink. 13 Comments.
om kalau mau pembuat pendeteksian kangker paru menggunakan apa ya om?
untuk deteksi kanker paru2 banyak metode yg bisa dikembangkan seperti algoritma thresholding, active contour, jaringan syaraf tiruan, support vector machine, dll
Mas Adi, kalo mau segmentasi bercak penyakit pada daun baiknya pakai metode apa ya? sementara ini saya pakai ‘level set’ namun citra penyakitnya belum tersegmen dengan baik
untuk mensegmentasi bercak penyakit pada daun bisa menggunakan segmentasi warna
materi mengenai segmentasi warna bisa dipelajari pada halaman berikut ini
https://pemrogramanmatlab.com/pengolahan-citra-digital/segmentasi-citra/segmentasi-warna/
Terimakasih Mas Adi..
error bang coding nya
keluar ini bang
Undefined variable “handles” or class “handles.axes1”.
Seluruh file source code lengkap beserta data citra dapat diperoleh melalui tokopedia dalam paket buku modul tutorial dan source code pemrograman matlab
Sehingga bisa langsung dirunning dan dikembangkan
mas, kalau mau buat pendeteksian tingkat pencemaran air sungai berdasarkan gambar, baiknya menggunakan teknik apa ya? terima kasih
Bisa dicoba menggunakan segmentasi citra berbasis klustering dan ekstraksi ciri warna
Assalamualaikum, mas utk metode kompresi yg bsa digunakan utk mendeteksi manipulasi citra apa saja ya? selain komprsi jpeg pada web fotoforensics
Waalaikumsalam, bisa dicoba metode wavelet
Assalamualaikum, mas mau nanya, untuk identifikasi noise lebih cocok pakai metode apa yaa? Trimakasih
Bisa dicoba diimplementasikan metode yg ada