ABSTRAK
Pengiriman data pada saluran komunikasi data berupa citra sangatlah bermanfaat, seperti pengiriman data lewat fax, telepon genggam dan satelit luar angkasa dan sebagainya. Sering kali pada prakteknya saluran komunikasi tidak terbebas dari noise, hal ini disebabkan antara lain oleh kemacetan jaringan dan sebagainya. Akibatnya data yang dikirim menjadi rusak atau tidak lengkap, dan beberapa paket dibuang atau diterima sebagai bit yang salah. Paket yang rusak pada citra diasumsikan sebagai blok yang hilang.
Untuk itu diperlukan teknik perbaikan citra yang rusak. Salah satunya adalah teknik penyembunyian error (error concealment). Teknik error concealment merupakan teknik perbaikan yang dilakukan pada sisi decoder. Oleh karena itu metode ini tidak membebani jaringan. Pada Tugas Akhir ini telah direalisasikan teknik penyembunyian error menggunakan informasi spasial pada sekitar blok yang rusak Banyak algoritma yang dapat di gunakan dalam teknik error concealment ini. Salah satu diantaranya adalah Maximally Smooth Recovery (MSR).
Algoritma Maximally Smooth Recovery (MSR) memanfaatkan sinyal citra
dan kehalusan maksimal nilai koefisien blok citra dan kondisi batas (boundary). Penyembunyian error dalam Tugas Akhir ini, memanfaatkan blok discrete cosine transform (DCT) ketika beberapa koefisien DCT rusak/hilang karena transmisi. Koefisien DCT yang direkonstruksi yakni koefisien DC dan koefisien rendah pada blok spasial yang berdekatan. Algoritma MSR terbukti berhasil menyembunyikan error yang terjadi pada citra dan adanya peningkatan nilai PSNR untuk kasus koefisien DC error peningkatan PSNR sebesar 15,69 dB, untuk kasus DC dan 5 koefisien frekuensi rendah error peningkatan PSNR sebesar 14,05 dB sedangkan untuk kasus semua koefisien error peningkatan PSNR sebesar 14,29 dB.
ABSTRACT
Transmission data at communication data channel such image data is very useful, like transmission over the fax, phone cell, and satelite, etc. Practically communication chanels are not noise free. Noise in communication channels that caused by network congestion. So that cause damage in data or data become incomplette. Network congestion may cause some packets to be discarded or may be received with uncorrectable bit. Lost packets in image are threated as missing block.
The solution of the damage image is reconstruction image, one of the tehnique is error concealment image. The error concealment technique is the repair technique done at decoder side.Therefore this technique don't encumber network. In this final project will be explained the error concealment technique use the information spatial at damage block. Many algorithm methods able to using in this error concealment technique. One of its method that is maximally smooth recovery (MSR).
Maximally smooth recovery (MSR) method makes use of the smoothness property of common image signal and produce a maximally smooth image among all
DAFTAR ISI
Halaman
LEMBAR PENGESAHAN SURAT PERNYATAAN
ABSTRAK i
ABSTRACT ii
KATA PENGANTAR iii
DAFTAR ISI v
DAFTAR GAMBAR vii
DAFTAR TABEL viii
BAB I. PENDAHULUAN 1
1.1. Latar Belakang 1
1.2. Identifikasi Masalah 2
1.3. Tujuan 2
1.4. Pembatasan Masalah 2
1.5. Sistematika Penulisan 2
BAB II. DASAR TEORI 4
2.1. Citra 4
2.2. Pengkodean Citra dengan Discrete Cosine Transform ( DCT) 5
2.3 Zig-zag Scanning 6
2.4 Penyembunyian error 7
2.5 Kriteria Maximally Smooth Recovery 7
2.6 Penilaian Kinerja algoritma citra 9
BAB III. PERANCANGAN SIMULASI 10
3.1. Sistem transmisi citra error 10
3.2. Random Error 12
3.3. Deteksi Error 12
3.4. Klasifikasi blok DCT yang hilang 13
3.4.1 Koefisien DC hilang 13
3.4.2 Koefisien DC dan 5 koefisien hilang 14
3.4.3. Semua Koefisien hilang 14 3.5 Rekonstruksi dengan batas kehalusan (smoothing constraint) 15 3.6 Solusi dengan kriteria kehalusan 16
BAB IV. HASIL SIMULASI DAN ANALISA DATA
20
4.1.Hasil Penyembunyian Error 21
4.1.1.Koefisien DC error 22
4.1.2.Koefisien DC dan 5 koefisien frekuensi rendah error 23
4.1.3. Koefisien semua koefisien error 24 4.2 Perbandingan hasil rekonstruksi dari berbagai kesalahan 24
BAB V. KESIMPULAN DAN SARAN 26
5.1. Kesimpulan 26
5.2. Saran 26
DAFTAR PUSTAKA 27
DAFTAR GAMBAR
Gambar II.1 Ilustrasi transformasi DCT 5
Gambar II.2(a) Luminance blok 8 x 8 6
Gambar II.2(a) Contoh nilai koefisien DCT 6
Gambar II.3 Zig-zag scanning 6
Gambar II.4 (a) Proses smoothing untuk koefisien DC saja yang hilang 9
Gambar II.4 (b) Proses smoothing untuk beberapa koefisien yang hilang 9
Gambar III.1 Blok Diagram Perancangan Simulasi 10
Gambar III.2 Diagram alir penyembunyian error pada sisi pengiriman 11
Gambar III.3 Diagram pada sisi penerima 12
Gambar III.4. Diagram alir pendeteksian error pada blok DCT 13
Gambar III.5 Diagram alir proses klasifikasi blok DCT yang hilang 14
Gambar III.6 Diagram alir proses Maximally smooth Recovery 19
Gambar IV.1 Citra Lena asli dengan format file .gif 20
Gambar IV.2 Citra asli Barbara format file .jpg 21
Gambar IV.3 Citra Lena asli format .jpg 21
Gambar IV.4 Hasil penyembunyian error untuk koefisien DC error 22
Gambar IV.5 Hasil penyembunyian error untuk DC dan 5 koefisien 22
frekuensi rendah error Gambar IV.5 Hasil penyembunyian error untuk semua koefisien error 23
DAFTAR TABEL
Tabel IV.1 Nilai PSNR dari rekonstruksi DC error 22
Tabel IV.2 Nilai PSNR dari rekonstruksi DC dan 5 koefisien 23 frekuensi rendah error
Tabel IV.3 Nilai PSNR dari rekonstruksi semua koefisien hilang 24 Tabel IV.4 Perbandingan Nilai PSNR dari semua kasus 24
LAMPIRAN A
%---% % %Program ini untuk menyembunyikan error dengan metode maximally smooth %
%---%
clear; close all; clc;
%---% % Gambar masukan yang sehat
%---% masukan_sehat=imread('lena','gif'); x_sehat=masukan_sehat;
x_sehat=double(x_sehat);
%---% % Hitung ukuran gambar
%---% baris=size(x_sehat,1);
kolom=size(x_sehat,2);
%---% % Hitung jumlah total blok image %---%
total_blok_image=round((baris*kolom)/(8*8)); baris_blok=baris/8;
kolom_blok=kolom/8;
%---% % Hitung DCT 2 dimensi untuk gambar sehat --> koefisien-DCT-per-blok % Bagi blok input 8 * 8 --> hasilnya nanti sudah dalam domain DCT %---% i=1;
for j=1:baris_blok for k=1:kolom_blok
dct_x_sehat_temp(1:8,1:8)=dct2(x_sehat(8*(j-1)+1:8*j,8*(k-1)+1:8*k)); if i<= total_blok_image
blok_dct_sehat{i}=dct_x_sehat_temp; i=i+1;
end;
clear dct_x_sehat_temp; end;
end;
%---%
dct_balik_sehat(8*(j-1)+1:8*j,8*(k-1)+1:8*k)=blok_dct_sehat{i}; i=i+1;
% (1) Kasus dc hilang saja --> koefisien DCT posisi (1,1) tiap blok sama dengan % nol % Mulai proses merekonstruksi koefisien dc yang hilang
% Proses membalikkan koefisien-DCT-satu-gambar menjadi satu-gambar --> % untuk gambar koefisien dc hilang
if i<=total_blok_image
gbr_balik_sehat(8*(j-1)+1:8*j,8*(k-1)+1:8*k)=... idct2(dct_balik_sehat(8*(j-1)+1:8*j,8*(k-1)+1:8*k)); i=i+1;
end; end; end;
%Hapus variabel bantu clear i j k
%---% % Rusakkan DCT 2 dimensi untuk gambar sehat %---%
figure;
imshow(masukan_sehat),title('Gambar sehat');
% subplot(1,2,2),imshow(uint8(gbr_dct_dc_hilang)),title('Gambar dc hilang');
figure;
% subplot(1,2,1),imshow(masukan_sehat),title('Gambar sehat'); imshow(uint8(gbr_dct_dc_hilang)),title('Gambar dc hilang'); -%---% % % Kondisi koefisien dc dan 5 frek rendah hilang / rusak %---% for j=1:round(brs/8)
for k=1:round(kol/8) J_modif=J_baru;
J_modif(8*(j-1)+1,8*(k-1)+1)=0; J_modif(8*(j-1)+2,8*(k-1)+1)=0; J_modif(8*(j-1)+1,8*(k-1)+2)=0; J_modif(8*(j-1)+2,8*(k-1)+3)=0; J_modif(8*(j-1)+2,8*(k-1)+2)=0; J_modif(8*(j-1)+3,8*(k-1)+1)=0; end
end;
J_modif=idct2(J_modif);
clear j k
%---% % % 3. Kondisi semua koefisien rendah hilang / rusak
%---% J_modif_all=zeros(brs,kol);
J_modif_all=idct2(J_modif_all);
clear;
close all; clc;
masukan_sehat=imread('lena.gif');
% Cari ukuran image
baris=size(masukan_sehat,1); kolom=size(masukan_sehat,2); ruang=size(masukan_sehat,3);
% Baca input yang sudah rusak x_masuk=imread(lena1.gif');
% Hitung jumlah total blok image total_blok_image=(baris*kolom)/(8*8); baris_blok=baris/8;
kolom_blok=kolom/8;
% Bagi blok input 8 * 8 % for i=1:total_blok_image i=1;
for j=1:baris_blok for k=1:kolom_blok
blok_temp(1:8,1:8)=x_input(8*(j-1)+1:8*j,8*(k-1)+1:8*k); if i<= total_blok_image
blok_image{i}=blok_temp; i=i+1;
end;
clear blok_temp; end;
end;
%Hapus variabel bantu clear i j k
% Proses mambalikkan ke gambar sesudah dilakukan error concealment i=1;
x_out_tiruan=[]; for j=1:baris_blok for k=1:kolom_blok if i<=total_blok_image
x_out_tiruan(8*(j-1)+1:8*j,8*(k-1)+1:8*k)=blok_image{i}; i=i+1;
%Hapus variabel bantu clear i j k
% Ubah blok image yang dari 1 x 1024 menjadi blok image 32 x 32 row(1:baris_blok)=8;
column(1:kolom_blok)=8;
x_out_tiruan_cell=mat2cell(x_out_tiruan,[row],[column]);
x_out_tiruan_cell_1=cell2mat(x_out_tiruan_cell); % alat bantu untuk bisa ditampilkan kembali
%=======================================================% % Baris ke-59 sampai dengan baris ke-75 (bagian ini) bisa diabaikan % %=======================================================%
Mencari/identifikasi blok yang rusak/error --> cari blok yang nilainya % nol semua --> cell 1 x 1024
matriks_bantu=zeros(8,8); matriks_rek=zeros(baris,kolom); for i=1:total_blok_image
if blok_image{i}==matriks_bantu % disp('Blok error');i
else
% disp('Blok sehat');i end;
end;
%Hapus variabel bantu clear i
%======================================================% % Mencari/identifikasi blok yang rusak/error --> cari blok yang nilainya
% nol semua --> cell 32 x 32
%======================================================%
matriks_bantu=zeros(8,8);
% ---% % Start timer ---> awal program
% ---% tic;
for j=1:baris_blok for k=1:kolom_blok %
if x_out_tiruan_cell{j,k}==matriks_bantu
vektor_Dk_atas=[Dk_nol,Dk_satu,Dk_dua,Dk_tiga,Dk_empat,Dk_lima,... Dk_enam,Dk_tujuh];
Dk_maks_atas=max(vektor_Dk_atas);
vektor_Dk_total=vektor_Dk_total+vektor_Dk_atas;
indeks_Dk_maks_atas=find(vektor_Dk_atas==Dk_maks_atas)-1; % pause;
end;
if k_cek(m-1,n-1)==1
vektor_Dk_kiri=[Dk_nol,Dk_satu,Dk_dua,Dk_tiga,Dk_empat,Dk_lima,... Dk_enam,Dk_tujuh];
Dk_maks_kiri=max(vektor_Dk_kiri);
vektor_Dk_total=vektor_Dk_total+vektor_Dk_kiri;
vektor_Dk_total=vektor_Dk_total+vektor_Dk_kanan;
indeks_Dk_maks_kanan=find(vektor_Dk_kanan==Dk_maks_kanan)-1;
end;
vektor_Dk_total=vektor_Dk_total+vektor_Dk_bawah;
indeks_Dk_maks_bawah=find(vektor_Dk_bawah==Dk_maks_bawah)-1; % pause;
end;
Dk_maks_pojok_kiri_bawah=max(vektor_Dk_pojok_kiri_bawah); vektor_Dk_total=vektor_Dk_total+vektor_Dk_pojok_kiri_bawah;
indeks_Dk_maks_pojok_kiri_bawah=find(vektor_Dk_pojok_kiri_bawah==Dk_m aks_pojok_kiri_bawah)-1;
% pause;
end;
% disp('Pojok kanan bawah'); j;
k;
vektor_Dk_pojok_kanan_bawah=[Dk_nol,Dk_satu,Dk_dua,Dk_tiga,Dk_empat,D k_lima,...
Dk_enam,Dk_tujuh];
Dk_maks_pojok_kanan_bawah=max(vektor_Dk_pojok_kanan_bawah); vektor_Dk_total=vektor_Dk_total+vektor_Dk_pojok_kanan_bawah;
indeks_Dk_maks_pojok_kanan_bawah=find(vektor_Dk_pojok_kanan_bawah== Dk_maks_pojok_kanan_bawah)-1;
% pause;
vektor_Dk_maks=max(vektor_Dk_total);
indeks_vektor_Dk_maks=find(vektor_Dk_total==vektor_Dk_maks)-1;
if indeks_vektor_Dk_maks==0 teta=0;
elseif indeks_vektor_Dk_maks==1 teta=22.5;
elseif indeks_vektor_Dk_maks==2 teta=45;
elseif indeks_vektor_Dk_maks==3 teta=67.5;
elseif indeks_vektor_Dk_maks==4 teta=90;
elseif indeks_vektor_Dk_maks==5 teta=112.5;
elseif indeks_vektor_Dk_maks==6 teta=135;
elseif indeks_vektor_Dk_maks==7 teta=157.5;
end;
teta=deg2rad(teta);
% disp('Ini lho ....')
large_blok(1:8,1:8)=cell_pojok_kiri_atas; large_blok(1:8,9:16)=cell_atas;
large_blok(1:8,17:24)=cell_pojok_kanan_atas;
for g=1:8 for h=1:8
if matriks_rekonstruksi(g,h)<0 proyeksi_1(g,h)=0;
elseif matriks_rekonstruksi(g,h)>255 proyeksi_1(g,h)=255;
else
proyeksi_1(g,h)=matriks_rekonstruksi(g,h); end;
end; end;
mat_ganti=(cell_pojok_kiri_atas+cell_atas+cell_pojok_kanan_atas+... cell_kiri+cell_kanan+cell_bawah+cell_pojok_kiri_bawah+... cell_pojok_kanan_bawah)/8;
x_out_tiruan_cell{j,k}=mat_ganti; % x_out_tiruan_cell{j,k}=proyeksi_1; % pause
clc end;
matriks_sdh_sehat=cell2mat(x_out_tiruan_cell); end;
end;
masuk_sehat=double(masukan_sehat);
masuk_sehat=reshape(masuk_sehat,1,baris*kolom);
% ---% % Perhitungan SNR awal sebelum rekonstruksi % ---%
x_sakit=double(x_masuk);
x_sakit=reshape(x_sakit,1,baris*kolom); MSE_sakit=sum((masuk_sehat-x_sakit).^2);
PSNR_sakit=10.*log10((255.^2)./(MSE_sakit/(baris*kolom)));
disp(['Nilai SNR awal sebelum rekonstruksi = ',num2str(PSNR_sakit),' dB']); disp(' ');
% ---% % Perhitungan SNR akhir sesudah rekonstruksi
% ---%
sdh_rekonstruksi=reshape(matriks_sdh_sehat,1,baris*kolom); MSE_rekonstruksi=sum((masuk_sehat-sdh_rekonstruksi).^2);
PSNR_rekonstruksi=10.*log10((255.^2)./(MSE_rekonstruksi/(baris*kolom))); disp(['Nilai SNR akhir sesudah rekonstruksi = ',num2str(PSNR_rekonstruksi),' dB']);
disp(' ');
kenaikan_PSNR=PSNR_rekonstruksi-PSNR_sakit;
disp(['Perbaikan SNR sebesar ',num2str(kenaikan_PSNR),' dB']); disp(' ');
if PSNR_sakit <= PSNR_rekonstruksi disp('Rekonstruksi telah berhasil'); else
disp('Rekonstruksi gagal'); end;
toc; % End timer --> akhir program
figure;
imshow(uint8(matriks_sdh_sehat)),title('Gambar sesudah direkonstruksi');
%Hapus variabel bantu clear j k
BAB I
PENDAHULUAN
1.1 Latar Belakang
Dalam beberapa tahun belakangan ini, banyak teknik yang digunakan untuk meningkatkan kualitas visual citra yang rusak. Citra yang rusak disebabkan oleh jaringan komunikasi yang padat dan sebagainya. Pada jaringan komunikasi, citra terbagi-bagi menjadi beberapa paket data. Noise pada jaringan menyebabkan paket data yang dikirim mengalami penundaan (delay), error, data yang diterima tidak lengkap. Salah satu teknik rekonstruksi citra adalah dengan teknik penyembunyian error pada citra. Penyembunyian error merupakan teknik yang efektif dalam memvisualisasikan citra yang rusak.
Teknik untuk menangani error transmisi pada komunikasi data berupa citra telah dikembangkan selain dengan skema error control dan error correction, dikembangkan pula teknik error concealment dan rekonstruksi sinyal yang ditujukan untuk mendapatkan aproksimasi yang mendekati sinyal semula atau menjadikan sinyal ouput dari dekoder lebih dapat diterima penglihatan manusia
Paket-paket yang dilakukan melalui jaringan dapat mengalami kerusakan
atau bahkan hilang akibat kongesti jaringan atau delay paket yang besar pada penerima. Error yang ditimbulkan merupakan bursty error yang akan dikenali oleh penglihatan klien. Dengan kata lain, kualitas tampilan citra akan menurun.
Teknik penyembunyian error merupakan teknik perbaikan yang dilakukan pada sisi dekoder. Sebab itu metode ini tidak membebani jaringan. Delay yang yang ditimbulkan metode ini juga tidak besar jika dibandingkan metode transmisi ulang (retransmission). Teknik perbaikan citra dengan penyembunyian error merupakan suatu teknik perbaikan citra dengan menutupi semua kesalahan (error) dari data yang hilang menggunakan redundansi pada informasi citra.
Telah banyak dikembangkan algoritma dalam penyembunyian error yang digunakan seperti Pixel Domain Interpolation (PDI), Multi Directional Interpolation (MDI), Projection Onto Convex Sets (POCS), dan Maximally
2
Smooth Recovery (MSR). Masing – masing algoritma mempunyai perbedaan performa yang berbeda.
Pada tugas akhir ini di bahas proses penyembunyian error pada citra yang rusak dan akan disimulasikan menggunakan algoritma Maximally smooth recovery (MSR). Algorima MSR memanfaatkan nilai blok koefisien DCT.
1.2 Identifikasi Masalah.
Bagaimana kinerja proses penyembunyian error dengan menggunakan
algoritma Maximally Smooth Recovery (MSR) ?
1.3 Tujuan.
Menganalisa proses penyembunyian error pada citra yang rusak menggunakan algoritma Maximally Smooth Recovery (MSR).
1.4 Pembatasan Masalah.
1. Algoritma yang digunakan Maximally Smooth Recovery (MSR). 2. Ukuran citra yang akan disimulasikan:
a. 256 x 256 piksel b. 512 x 512 piksel
3. Jenis dan Format citra yang dipakai yaitu: grayscale .gif,.jpg 4. Simulasi menggunakan piranti lunak Matlab 6.5
5. Jenis kerusakan blok citra:
a. Koefisien DC yang hilang
b. DC dan 5 koefisien frekuensi rendah hilang ( zig zag scan) c. Semua koefisien hilang
1.5 Sistematika Penulisan.
3
1. BAB I PENDAHULUAN
Bab ini akan menjelaskan mengenai latar belakang penulisan laporan tugas akhir, mengidentifikasi masalah yang akan diselesaikan dalam tugas akhir dan tujuan penyusunan laporan tugas akhir, pembatasan masalah sehingga ruang lingkup permasalahan yang akan diselesaikan menjadi lebih fokus, dan sistematika penulisan laporan tugas akhir ini.
2. BAB II DASAR TEORI
Bab ini memberikan penjelasan tentang dasar teori citra, teknik
penyembunyian error dan algoritma Maximally Smooth Recovery (MSR). 3. BAB III PERANCANGAN SIMULASI
Bab ini berisikan uraian tentang tahapan perancangan simulasi dalam melakukan penyembunyian error.
4. BAB IV SIMULASI DAN ANALISA
Bab ini akan menampilkan dan menganalisa data dari proses penyembunyian error menggunakan algoritma Maximally Smooth Recovery (MSR) yang telah dirancang.
5. BAB V KESIMPULAN DAN SARAN
BAB V
KESIMPULAN DAN SARAN
5.1 Kesimpulan
Dari analisa yang telah dilakukan dan melihat hasil penilai kinerja dari setiap citra yang direkontruksi maka dapat diambil kesimpulan bahwa penyembunyian error pada citra dengan Maximally smooth recovery berhasil dengan baik untuk jenis:
1. Koefisien DC hilang
2. Koefisien lainnya hilang (DC dan 5 koefisien frekuensi rendah hilang, semua
koefisien hilang)
Dan jika dibandingkan dengan rekonstruksi citra yang lain seperti zero substitusi dan mean substitusi MSR memberikan hasil yang lebih baik.
5.2 Saran
Adapun saran yang dapat diberikan untuk perbaikan dan pengembangan lebih lanjut agar diperoleh hasil yang lebih baik adalah :
1. Untuk menghasilkan hasil yang lebih baik dapat dikombinasikan dengan teknik penyembunyian error yang lain.
2. Dengan mengembangkan domain spasial/frekuensi, penyisipan blok/koefisien
DAFTAR PUSTAKA
1. Khayam, Syed Ali,”The Discrete Cosine Transform (DCT): Theory and
Application, Michigan State University, Maret 2003
2. Munir, Rinaldi, Pengolahan Citra Digital dengan Pendekatan Algoritmik,
Informatika, Agustus 2004.
3. M.Ghanbari, “Two-layer coding of video signal for VBR network,”IEEE
j.select.Areas Commun., vol 7, Juni 1989.
4. Park, Jong Wook, Kim, Jong Won dan Lee ,Sang Uk ,”DCT coefficients
recovery based error concealment technique and application to the MPEG-2 bit stream error”. Member, IEEE, juni 1996
5. W.Grimson,” An implmentation of a computional theory of visual surface
interpolation,” Comp.vision, Grapichs, Image Process., vol 22, 1983
6. Y. Wang, Q-F. Zhu dan L. Shaw . “Maximally Smooth Image Recovery in
Transform Coding”. IEEE Trans. On Communications, 41(10), 1993.
7. Zheng, Yefeng, Performance Evaluation of Spatial Domain Error
Concealment for Image Recovery, Electrical and Computer Engineering Department, University of Mayland, USA, 2002.