i Universitas Kristen Maranatha
ABSTRAK
Gambar multispektral adalah sejumlah gambar yang bersumber dari berbagai panjang gelombang yang berbeda-beda. Masalah umum yang muncul dari aplikasi yang berkaitan dengan gambar multispektral adalah masalah media penyimpanan dan bandwidth yang terlalu besar jika data tersebut akan ditransmisikan ke tempat lain.
Salah satu solusi yang dapat digunakan untuk memecahkan masalah tersebut adalah dengan melakukan kompresi. Untuk gambar multispektral dan multilayer sebelum dilakukan kompresi dapat dilakukan transformasi frekuensi untuk memilih komponen mana (bagian riil atau kompleks) yang harus dikompresi. Dengan teknologi kompresi ini maka data gambar tersebut dapat berukuran jauh lebih kecil daripada ukuran aslinya. Dengan demikian teknologi ini dapat menghemat media penyimpanan dan bandwidth yang digunakan pada saat pengiriman data.
ii Universitas Kristen Maranatha
ABSTRACT
Multsipectral images are images composed of different optical wavelengths. General problem that usually exists from this application are media storage and too big bandwidth problem if data will be transmitted to other location.
One of the solutions which can be applied in solving this problem is by doing compression. Frequency transformation can be performed for multispectral and multilayer images before compression process to choose which components (real or complex) must be compressed. By using compression technology, images are shown in smaller size compared with their actual size. Thereby, the technology saves storage media and bandwidth which is used during data transmitting.
iii Universitas Kristen Maranatha
KATA PENGANTAR
Puji dan syukur kami panjatkan kepada Tuhan Yang Maha Esa atas rahmat dan karunia-Nya, sehingga dengan ijin-Nya penulis dapat menyelesaikan penulisan laporan Tugas Akhir yang berjudul “ Transformasi Optimal untuk Gambar Multispektral dan Gambar Multilayer”.
Penulis menyadari bahwa penulisan laporan Tugas Akhir ini masih banyak terdapat kekurangan. Namun penulis telah berusaha sekuat tenaga untuk menyelesaikan penulisan laporan Tugas Akhir ini dengan sebaik-baiknya.
Keberhasilan penulisan laporan Tugas Akhir ini tidak terlepas dari bantuan berbagai pihak. Untuk itu penulis ingin berterima kasih kepada pihak-pihak yang telah membantu baik material maupun spiritual :
1. Orang tua dan keluarga penulis yang senantiasa memberikan dukungan moral maupun materi tanpa henti.
2. Bapak Riko Arlando Saragih S.T.,M.T., selaku dosen pembimbing pelaksanaan Tugas Akhir.
3. Bapak Ir Aan Darmawan, M.T., selaku ketua jurusan Teknik Elektro. 4. Ibu Ir Anita Supartono, M.Sc., selaku koordinator Tugas Akhir dan dosen
penguji.
5. Bapak DR. Ir Daniel Setiadikarunia, MT. dan Bapak Roy Pramono Adhie, ST. MT., selaku dosen penguji.
6. Bapak Ir. Tjia Liong Hui, selaku dosen wali penulis.
7. Seluruh staf Dosen, Tata Usaha, Laboratorium, dan Perpustakaan Universitas Kristen Maranatha.
8. Ferry, Vania. C, dan Melvin. A atas bantuan dan dukungan kepada penulis.
iv Universitas Kristen Maranatha Akhir kata penulis juga ingin meminta maaf apabila ada kesalahan yang terjadi dalam penyusunan laporan Tugas Akhir maupun hal-hal yang tidak berkenan didalam pengerjaan tugas akhir ini.
Bandung, Februari 2007
v Universitas Kristen Maranatha
DAFTAR ISI
LEMBAR PENGESAHAN
SURAT PERNYATAAN
ABSTRAK i
ABSTRACT ii
KATA PENGANTAR iii
DAFTAR ISI v
DAFTAR GAMBAR vii
DAFTAR TABEL viii
BAB I. PENDAHULUAN 1
I.1. Latar Belakang 1
I.2. Identifikasi Masalah 1
I.3. Tujuan 1
I.4. Pembatasan Masalah 2
I.5. Sistematika Penulisan 2
BAB II. LANDASAN TEORI 4
II.1. Citra 4
II.1.1. Model Citra Digital 5
II.1.2. Persepsi Visual Manusia 6
II.2. Kompresi Citra 7
II.2.1. Tinjauan Umum Terhadap Kompresi Citra 8
II.2.1.1. Transformasi Citra 9
II.2.1.2. Kuantisasi Citra 10
II.2.1.3. Pengkodean Citra 10
II.2.1.4. Pengkodean Huffman 11
II.2.2. Metode Kompresi Citra 15
II.3. Kriteria Penilaian Citra 16
II.3.1. Kriteria Penilaian Objektif 16
II.3.2. Kriteria Penilaian Subjektif 18
vi Universitas Kristen Maranatha
BAB III. PERANCANGAN SISTEM 20
III.1. Input 21
III.2. Gambar Multispektral 21
III.3. Pembagian Layer 21
III.4. Transformasi Citra 22
III.5. Transformasi Karhunen – Loeve 23
III.6. Proses Rekonstruksi 25
III.7. Peak Signal to Noise Ratio 25
BAB IV. PENGUJIAN PERANGKAT LUNAK 26
IV.1. Pengujian Perangkat Lunak 26
IV.1.1. Gambar Input 26
IV.1.2. Gambar Hasil Transformasi 28
BAB V. KESIMPULAN DAN SARAN 32
V.1. Kesimpulan 32
V.2. Saran 32
DAFTAR PUSTAKA 33
vii Universitas Kristen Maranatha
DAFTAR GAMBAR
Gambar II.1. Representasi citra digital RGB 24 bit 5
Gambar II.2. Model sistem visual manusia 6
Gambar II.3. Tahap-tahap operasi kompresi citra dijital 9 Gambar II.4. Proses pembentukan pohon Huffman 14 Gambar II.5. Proses pembentukan pohon Huffman (lanjutan) 15 Gambar III.1. Flowchart penentuan transformasi optimal 20
Gambar III.2. Pembagian layer 21
Gambar III.3. Fast Fourier Transform 22
Gambar III.4. Flowchart Karhunen – Loeve Transform 24
Gambar III.5. Flowchart rekonstruksi citra 25
Gambar IV.1. Satu.JPEG 26
Gambar IV.2. Dua.JPEG 27
Gambar IV.3. Tiga.JPEG 27
Gambar IV.4. Grafik hasil perbandingan PSNR metode RSM dan CSM
(Satu.JPEG) 28
Gambar IV.5. Grafik hasil perbandingan PSNR metode RSM dan CSM
(Dua.JPEG) 28
Gambar IV.6. Grafik hasil perbandingan PSNR metode RSM dan CSM
(Tiga.JPEG) 28
Gambar IV.7. Hasil transformasi gambar Satu.JPEG (a) metode RSM 29
(b) metode CSM 29 Gambar IV.8. Hasil transformasi gambar Dua.JPEG (a) metode RSM 30
(b) metode CSM 30 Gambar IV.9. Hasil transformasi gambar Tiga.JPEG (a) metode RSM 30
viii Universitas Kristen Maranatha
DAFTAR TABEL
Tabel II.1. Frekuensi pada masing-masing derajat keabuan 12
LAMPIRAN A
A-1 % Gambar masukan
% ---% x_all=imread('tujuh','jpg');
% ---% % Mencari ukuran gambar % ---% [brs kol ruang]=size(x_all);
% ---%
% Memecah gambar menjadi beberapa komponen spektral (warna) % ---%
x_red=x_all(:,:,1); x_green=x_all(:,:,2); x_blue=x_all(:,:,3);
% ---% % Mengubah tipe data dari uint8 menjadi double % ---% x_red=double(x_red);
x_green=double(x_green); x_blue=double(x_blue);
% ---%
% Mengubah masing-masing komponen spektral ke domain frekuensi % ---%
fft_x_red=fft2(x_red); fft_x_green=fft2(x_green); fft_x_blue=fft2(x_blue);
% ---% % Menguji komponen real % ---% for j=1:brs
for k=1:kol
A-2 end;
% ---% % Hapus variabel bantu % ---% clear j k
% ---% % Hitung autokorelasi % ---%
autokor_x_red=xcorr2(fft_x_real_red); autokor_x_green=xcorr2(fft_x_real_green); autokor_x_blue=xcorr2(fft_x_real_blue);
% ---% % Mencari nilai eigen dan vektor eigen % ---%
[vek_x_red eig_x_red]=eig(autokor_x_red); [vek_x_green eig_x_green]=eig(autokor_x_green); [vek_x_blue eig_x_green]=eig(autokor_x_blue);
% ---%
% Mencari nilai eigen dari matriks eig_x ukuran brs x kol dan mengubah % menjadi sebuah array
% ---% % Hapus variabel bantu % ---% clear j k m
% ---%
% Mengambil nilai eigen yang real saja dan sekaligus mengambil vektor eigen % yang bersesuaian dengan nilai eigen tersebut
A-3 % ---%
% (1) Spektral pertama (RED) % ---% m=1;
for j=1:length(array_eig_x_red) if imag(array_eig_x_red(j))==0
real_array_eig_x_red(m)=real(array_eig_x_red(j));
vek_real_array_eig_x_red(1:length(array_eig_x_red),m)=... vek_x(1:length(array_eig_x_red),j);
m=m+1; end;
end;
% ---% % Hapus variabel bantu % ---% clear j m
% ---% % (2) Spektral kedua (GREEN) % ---% m=1;
for j=1:length(array_eig_x_green) if imag(array_eig_x_green(j))==0
real_array_eig_x_green(m)=real(array_eig_x_green(j));
vek_real_array_eig_x_green(1:length(array_eig_x_green),m)=... vek_x(1:length(array_eig_x_green),j);
m=m+1; end;
end;
% ---% % Hapus variabel bantu % ---% clear j m
% ---% % (3) Spektral ketiga (BLUE) % ---% m=1;
for j=1:length(array_eig_x_blue) if imag(array_eig_x_blue(j))==0
real_array_eig_x_blue(m)=real(array_eig_x_blue(j));
vek_real_array_eig_x_blue(1:length(array_eig_x_blue),m)=... vek_x(1:length(array_eig_x_blue),j);
A-4 end;
% ---% % Hapus variabel bantu % ---% clear j m
% ---% % Menggabungkan nilai eigen dengan vektor eigen yang bersesuaian % ---% % Mencari urutan yang sesuai (RED) % ---% for j=1:length(y1)
[baris_1 indeks_1(j)]=find(y1(1,j)==x1); end;
% ---% % Hapus variabel bantu % ---% clear j
A-5 % Mencari urutan yang sesuai (GREEN) % ---% for j=1:length(y2)
[baris_2 indeks_2(j)]=find(y2(1,j)==x2); end;
% ---% % Hapus variabel bantu % ---% clear j
% ---% % Mencari urutan yang sesuai (BLUE) % ---% for j=1:length(y3)
[baris_3 indeks_3(j)]=find(y3(1,j)==x3); end;
% ---% % Hapus variabel bantu % ---% clear j
% ---% % Mencari urutan secara ascending order (RED) % ---% for j=1:kol1
z1(:,j)=p1(:,indeks_1(j)); end;
% ---% % Hapus variabel bantu % ---% clear j
% ---%
% Mencari urutan secara ascending order (GREEN) % ---%
for j=1:kol2
z2(:,j)=p2(:,indeks_2(j)); end;
A-6 % ---%
% Mencari urutan secara ascending order (BLUE) % ---%
for j=1:kol3
z3(:,j)=p3(:,indeks_3(j)); end;
% ---% % Hapus variabel bantu % ---% clear j
% ---% % Mengubah urutan menjadi descending order % ---%
% Mengambil vektor eigen saja berdasarkan nilai eigennya (RED) % ---%
m=1;
for j=1:kol_zz1 if zz1(1,j)>0
vek_final_1(1:brs_zz1-1,m)=zz1(2:brs_zz1,j); end;
m=m+1; end;
% ---% % Hapus variabel bantu % ---% clear j m
% ---%
% Mengambil vektor eigen saja berdasarkan nilai eigennya (GREEN) % ---%
m=1;
for j=1:kol_zz2 if zz2(1,j)>0
A-7 m=m+1;
end;
% ---% % Hapus variabel bantu % ---% clear j m
% ---%
% Mengambil vektor eigen saja berdasarkan nilai eigennya (BLUE) % ---%
m=1;
for j=1:kol_zz3 if zz3(1,j)>0
vek_final_3(1:brs_zz3-1,m)=zz3(2:brs_zz3,j); end;
m=m+1; end;
% ---% % Hapus variabel bantu % ---% clear j m
% ---% % Mengembalikan ke domain spasial % ---% % Perhitungan PSNR
% --- x_all=reshape(x_all,1,brs_fin*kol_fin);
gambar_rekon=reshape(gambar_rekon,1,brs_fin*kol_fin); MSE_rekon=sum((x_all-gambar_rekon).^2);
PSNR_rekon=10.*log10((255.^2)./(MSE_rekon/(brs_fin*kol_fin)));
disp(['Nilai SNR akhir sesudah rekonstruksi = ',num2str(PSNR_rekon),' dB']); disp(' ');
A-8 % Mencari ukuran gambar % ---% [brs kol ruang]=size(x_all);
% ---%
% Memecah gambar menjadi beberapa komponen spektral (warna) % ---%
x_red=x_all(:,:,1); x_green=x_all(:,:,2); x_blue=x_all(:,:,3);
% ---% % Mengubah tipe data dari uint8 menjadi double % ---% x_red=double(x_red);
x_green=double(x_green); x_blue=double(x_blue);
% ---%
% Mengubah masing-masing komponen spektral ke domain frekuensi % ---%
fft_x_red=fft2(x_red); fft_x_green=fft2(x_green); fft_x_blue=fft2(x_blue);
A-9 for k=1:kol
fft_x_imag_red(j,k)=imag(fft_x_red(j,k)); fft_x_imag_green(j,k)=imag(fft_x_green(j,k)); fft_x_imag_blue(j,k)=imag(fft_x_blue(j,k)); end;
end;
% ---% % Hapus variabel bantu % ---% clear j k
% ---% % Hitung autokorelasi % ---%
autokor_x_red=xcorr2(fft_x_imag_red); autokor_x_green=xcorr2(fft_x_imag_green); autokor_x_blue=xcorr2(fft_x_imag_blue);
% ---% % Mencari nilai eigen dan vektor eigen % ---%
[vek_x_red eig_x_red]=eig(autokor_x_red); [vek_x_green eig_x_green]=eig(autokor_x_green); [vek_x_blue eig_x_green]=eig(autokor_x_blue);
% ---%
% Mencari nilai eigen dari matriks eig_x ukuran brs x kol dan mengubah % menjadi sebuah array
A-10
% ---%
% Mengambil nilai eigen yang real saja dan sekaligus mengambil vektor eigen % yang bersesuaian dengan nilai eigen tersebut
% ---%
% ---% % (1) Spektral pertama (RED) % ---% m=1;
for j=1:length(array_eig_x_red) if imag(array_eig_x_red(j))==0
real_array_eig_x_red(m)=real(array_eig_x_red(j));
vek_real_array_eig_x_red(1:length(array_eig_x_red),m)=... vek_x(1:length(array_eig_x_red),j);
m=m+1; end;
end;
% ---% % Hapus variabel bantu % ---% clear j m
% ---% % (2) Spektral kedua (GREEN) % ---% m=1;
for j=1:length(array_eig_x_green) if imag(array_eig_x_green(j))==0
real_array_eig_x_green(m)=real(array_eig_x_green(j));
vek_real_array_eig_x_green(1:length(array_eig_x_green),m)=... vek_x(1:length(array_eig_x_green),j);
m=m+1; end;
end;
% ---% % Hapus variabel bantu % ---% clear j m
% ---% % (3) Spektral ketiga (BLUE) % ---% m=1;
A-11 if imag(array_eig_x_blue(j))==0
real_array_eig_x_blue(m)=real(array_eig_x_blue(j));
vek_real_array_eig_x_blue(1:length(array_eig_x_blue),m)=... vek_x(1:length(array_eig_x_blue),j);
m=m+1; end;
end;
% ---% % Hapus variabel bantu % ---% clear j m
% ---% % Menggabungkan nilai eigen dengan vektor eigen yang bersesuaian % ---% % Mencari urutan yang sesuai (RED) % ---% for j=1:length(y1)
A-12 % ---%
% Hapus variabel bantu % ---% clear j
% ---% % Mencari urutan yang sesuai (GREEN) % ---% for j=1:length(y2)
[baris_2 indeks_2(j)]=find(y2(1,j)==x2); end;
% ---% % Hapus variabel bantu % ---% clear j
% ---% % Mencari urutan yang sesuai (BLUE) % ---% for j=1:length(y3)
[baris_3 indeks_3(j)]=find(y3(1,j)==x3); end;
% ---% % Hapus variabel bantu % ---% clear j
% ---% % Mencari urutan secara ascending order (RED) % ---% for j=1:kol1
z1(:,j)=p1(:,indeks_1(j)); end;
% ---% % Hapus variabel bantu % ---% clear j
% ---%
% Mencari urutan secara ascending order (GREEN) % ---%
for j=1:kol2
A-13 % ---%
% Hapus variabel bantu % ---% clear j
% ---%
% Mencari urutan secara ascending order (BLUE) % ---%
for j=1:kol3
z3(:,j)=p3(:,indeks_3(j)); end;
% ---% % Hapus variabel bantu % ---% clear j
% ---% % Mengubah urutan menjadi descending order % ---%
% Mengambil vektor eigen saja berdasarkan nilai eigennya (RED) % ---%
m=1;
for j=1:kol_zz1 if zz1(1,j)>0
vek_final_1(1:brs_zz1-1,m)=zz1(2:brs_zz1,j); end;
m=m+1; end;
% ---% % Hapus variabel bantu % ---% clear j m
% ---%
A-14
% ---% m=1;
for j=1:kol_zz2 if zz2(1,j)>0
vek_final_2(1:brs_zz2-1,m)=zz2(2:brs_zz2,j); end;
m=m+1; end;
% ---% % Hapus variabel bantu % ---% clear j m
% ---%
% Mengambil vektor eigen saja berdasarkan nilai eigennya (BLUE) % ---%
m=1;
for j=1:kol_zz3 if zz3(1,j)>0
vek_final_3(1:brs_zz3-1,m)=zz3(2:brs_zz3,j); end;
m=m+1; end;
% ---% % Hapus variabel bantu % ---% clear j m
% ---% % Mengembalikan ke domain spasial % ---% % Perhitungan PSNR
% --- x_all=reshape(x_all,1,brs_fin*kol_fin);
A-15 MSE_rekon=sum((x_all-gambar_rekon).^2);
PSNR_rekon=10.*log10((255.^2)./(MSE_rekon/(brs_fin*kol_fin)));
A-16 end
Linje = [Linje,' gets code: ']; for i=1:HL(n)
if (HK(n,i)==0) Linje = [Linje,'0']; else
Linje = [Linje,'1']; end
end
disp(Linje); end
1 Universitas Kristen Maranatha
BAB I
PENDAHULUAN
I.1 Latar Belakang
Gambar multispektral adalah sejumlah gambar yang bersumber dari berbagai panjang gelombang yang berbeda-beda. Masalah umum yang muncul dari aplikasi yang berkaitan dengan gambar multispektral adalah masalah media penyimpanan dan bandwidth yang terlalu besar jika data tersebut akan ditransmisikan ke tempat lain. Teknologi kompresi merupakan suatu solusi untuk menyimpan data gambar berukuran besar tanpa harus melakukan investasi yang besar untuk meningkatkan ukuran media penyimpanan. Gambar yang telah dikompresi mampu berukuran jauh lebih kecil dibandingkan gambar aslinya, sehingga akan menghemat waktu dan ruang yang digunakan.
Pada tugas akhir ini akan dibahas beberapa metode pengkompresian data yang bisa digunakan dan dipilih untuk menampilkan transformasi yang optimal untuk pengkodean gambar multispektral, yaitu Subband Riil dengan Transformasi Karhunen - Loeve (RSM) dan Subband Kompleks dengan Transformasi Karhunen - Loeve (CSM). Pengkodean tersebut diimplementasikan dengan menggunakan metode subband filtering.
I.2 Identifikasi Masalah
1. Transformasi manakah yang paling optimal antara teknik pengkompresian bagian Subband Riil dengan Transformasi Karhunen – Loeve (RSM) dan bagian Subband Kompleks dengan Transformasi Karhunen – Loeve (CSM)?
I.3 Tujuan
2
I.4 Pembatasan Masalah
Masalah dalam tugas akhir ini dibatasi dengan :
1. Gambar input yang akan diuji memiliki dimensi maksimal 170 x 170 piksel.
2. Citra berbentuk persegi.
3. Teknik pengkodean yang digunakan adalah subband kompleks dengan transformasi KL (CSM) dan subband riil dengan transformasi KL(RSM). 4. Simulasi menggunakan program Matlab 6.5.
5. Format citra input : .JPEG
I.5 Sistematika Penulisan
Dalam penyusunan laporan tugas akhir ini, penulis membagi sistematika penulisan sebagai berikut :
BAB 1 PENDAHULUAN
Bab ini akan menjelaskan mengenai apa saja yang melatarbelakangi penulisan laporan tugas akhir, mengidentifikasi masalah yang akan diselesaikan dalam tugas akhir dan apa saja yang menjadi tujuan penyusunan laporan tugas akhir, pembatasan masalah sehingga ruang lingkup permasalahan yang akan diselesaikan menjadi lebih fokus, dan sistematika penulisan laporan tugas akhir ini.
BAB 2 LANDASAN TEORI
Bab ini akan menjelaskan teori-teori dasar tentang citra, teknik kompresi, gambar multispektral dan multilayer.
BAB 3 PERANCANGAN SISTEM
Bab ini membahas perancangan dan cara kerja dari tiap-tiap modul dari program pengkompresian yang akan dibuat.
BAB 4 PENGUJIAN PERANGKAT LUNAK
3
BAB 5 KESIMPULAN DAN SARAN
32 Universitas Kristen Maranatha
BAB V
KESIMPULAN DAN SARAN
V.1 Kesimpulan
Dari uji coba yang dilakukan pada bab IV dapat disimpulkan bahwa Transformasi Karhunen – Loeve untuk bagian Subband Riil (RSM) menunjukan nilai PSNR yang lebih optimum daripada bagian Subband Kompleks (CSM).
V.2 Saran
33 Universitas Kristen Maranatha
DAFTAR PUSTAKA
[1] Gonzales, R.C, P. Wintz, “Digital Image Processing”, Addison – Wesley Publishing Company Inc, 1987.
[2] Jain, A.K, “Fundamentals of Digital Image Processing”, Prentice-Hall, New Jersey, 1983.
[3] Lim, J. S., “Two Dimensional Signal and Image Processing”, Prentice Hall, 1993.
[4] Munir, R, “Pengolahan Citra Digital dengan Pendekatan Algoritmik”, Informatika, Bandung, 2004.
[5] Nina, K. W., “Kompresi Data Citra Diam Menggunakan Kuantisasi Vektor”, Tugas Akhir, Jurusan Teknik Elektro ITB, 1993.
[6] Sarkar, Sudeep, “KL Transform“.