Anda di halaman 1dari 34

Introduction to Image Compression

Alvian Bastian, S.ST., M.Sc.


Source Coding
• Gambar dan video dapat dinikmati di Internet secara nonstop.
• Transmisi media visual membutuhkan bandwidth yang besar dalam proses transmisinya baik melalui TV,
Internet, maupun saluran nirkabel dengan bandwidth terbatas secara real time.
• Proses mengurangi data gambar dan data video sehingga sesuai dengan bandwidth terbatas atau ruang
penyimpanan disebut kompresi data. Ini juga disebut source coding dalam bidang komunikasi.
• Ketika audio/video terkompresi sebenarnya ditransmisikan melalui saluran transmisi, bit tambahan
ditambahkan untuk menghindari efek noise pada saluran sehingga kesalahan dalam data yang diterima,
jika ada, dapat dideteksi atau diperbaiki.
• Proses menambahkan bit data tambahan ke aliran data terkompresi sebelum transmisi disebut channel
coding.
• Perhatikan bahwa proses mengurangi sumber data asli dalam source coding diimbangi sebagian kecil oleh
channel coding, dengan menambahkan data daripada menguranginya.
• Namun, bit yang ditambahkan oleh channel coder sangat kecil dibandingkan dengan jumlah data yang
dihapus oleh source coding. Dengan demikian, ada keuntungan yang jelas dari kompresi data.
Source Coding
• Kita gambarkan proses kompresi dan transmisikan atau penyimpanan sumber video ke tujuan pada gambar
1.1.
• Sumber video mentah (raw video) dapat berasal dari kamera video atau data dari video yang disimpan
sebelumnya.
• Sumber encoder meng-kompresi data mentah ke jumlah yang diinginkan, tergantung pada jenis skema
kompresi yang dipilih.
• Pada dasarnya ada dua kategori kompresi – lossless dan lossy.
• Pada skema lossless compression, gambar asli atau data video dapat dipulihkan dengan tepat.
• Dalam lossy compression, selalu ada kehilangan beberapa informasi tentang data asli dan data gambar atau
video yang dipulihkan mengandung beberapa distorsi, yang mungkin atau tidak mungkin tergantung pada jenis
kompresi yang digunakan.
• Setelah source encoding, data yang terkuantisasi ter-encode secara lossless untuk pengiriman atau
penyimpanan.
• Jika data terkompresi akan ditransmisikan, kemudian channel encoder digunakan untuk menambahkan bit
data yang berlebihan atau ekstra dan dikirimkan ke modulator digital.
• Modulator digital mengubah data input menjadi sinyal RF yang cocok untuk transmisi melalui saluran
komunikasi.
Source Coding
Source Coding
• Penerima komunikasi melakukan operasi demodulasi dan
channel decoding.
• Channel data yang didekodekan (channel decoded data)
dikirimkan ke decoder entropy diikuti oleh sumber
decoder dan akhirnya dikirimkan ke sink atau disimpan.
• Jika tidak ada transmisi yang digunakan, maka data
terkompresi yang tersimpan didekodekan dengan entropi
diikuti oleh sumber decoding seperti yang ditunjukkan
pada sisi kanan Gambar 1.1.
Why is compression necessary ?
• Sebuah gambar atau gambar diam tepatnya diwakili dalam komputer sebagai
array angka, integer menjadi lebih spesifik. Gambar yang disimpan di
komputer disebut gambar digital.
• Array gambar biasanya dua dimensi (2D) jika hitam putih dan tiga dimensi
(3D) jika gambar berwarna.
• Setiap angka dalam array mewakili nilai intensitas pada lokasi tertentu dalam
gambar dan disebut elemen gambar atau piksel.
• Nilai piksel biasanya bilangan bulat positif dan dapat berkisar antara 0 dan
255. Ini berarti bahwa setiap piksel gambar hitam putih menempati 1 byte
dalam memori komputer. Dengan kata lain, kita katakan bahwa gambar
memiliki resolusi skala abu-abu 8 bits per pixel (bpp).
• Di sisi lain, gambar warna memiliki triplet nilai untuk setiap piksel. Gambar
yang diambil berbentuk persegi panjang. Rasio lebar ke tinggi gambar disebut
aspek ratio.
Why is compression necessary ?
• Dalam standard-definition television (SDTV) rasio aspeknya 4:3, sementara 16:9 pada
high-definition television (HDTV). Dua aspek rasio diilustrasikan pada Gambar 1.2,
dimana Gambar 1.2a sesuai dengan aspek 4:3 sedangkan Gambar 1.2b sesuai dengan
aspek 16:9.
• Dalam kedua gambar, tinggi dalam inchi tetap sama, yang berarti bahwa jumlah baris
tetap sama. Jadi, jika sebuah gambar memiliki 480 baris, maka jumlah piksel dalam
setiap baris akan menjadi 480 x 4/3 = 640 untuk aspek rasio 4:3.
• Untuk HDTV, ada 1080 baris dan sehingga jumlah piksel di setiap baris akan menjadi
1080 x 16/9 = 1920. Dengan demikian, satu gambar warna SD dengan 24 bpp akan
membutuhkan 640 x 480 x 3 = 921.600 byte ruang memori, sedangkan gambar warna
HD dengan kedalaman piksel yang sama membutuhkan 1920 x 1080 x 3 = 6.220.800
byte.
• Sumber video dapat menghasilkan 30 atau lebih frame per detik, dalam hal ini
kecepatan data mentah akan menjadi 221.184.000 bit per detik untuk SDTV dan
1.492.992.000 bit per detik untuk HDTV.
Why is compression necessary ?
• Jika data mentah ini harus dikirim secara real
time melalui saluran komunikasi yang ideal,
yang akan membutuhkan bandwidth 1 Hz untuk
setiap 2 bit data, maka bandwidth yang
dibutuhkan akan menjadi 110.592.000 Hz untuk
SDTV dan 746.496.000 Hz untuk HDTV.
Why is compression necessary ?
Image Compression Techniques
• Kompresi data mengacu pada proses pengurangan data sumber digital ke tingkat yang diinginkan.
• Disisi lain, kompresi bandwidth mengacu pada proses pengurangan bandwidth analog dari sumber
analog.
• Pada telepon kabel konvensional, suara pelanggan difilter oleh filter lowpass untuk membatasi
bandwidth hingga nilai nominal 4 kHz. Jadi, bandwidth saluran adalah 4 kHz. Misalkan dikonversi ke
data digital untuk transmisi jarak jauh. Untuk merekonstruksi sinyal analog asli yang dibatasi band
hingga 4 kHz secara cepat, teori pengambilan sampel menyatakan bahwa seseorang harus memiliki
8000 sampel per detik.
• Untuk transmisi digital, setiap sampel analog harus dikonversi ke nilai digital. Dalam telepon, masing-
masing sampel suara analog dikonversi ke nomor digital 8-bit menggunakan Pulse Code Modulation
(PCM). Oleh karena itu, kecepatan data suara yang berasal dari pelanggan adalah 64.000 bit per detik.
• Dalam kondisi ideal sumber digital akan membutuhkan bandwidth 32 kHz untuk transmisi. Bahkan jika
kita menggunakan beberapa bentuk kompresi data untuk mengurangi sumber rate 16 kilobits per detik,
ini masih membutuhkan sekurangnya 8 kHz bandwidth saluran untuk transmisi real time.
Image Compression Techniques
Image Compression Techniques
• Dalam gambar diam, setiap piksel dalam satu
baris dapat memiliki nilai yang hampir sama
dengan nilai piksel tetangga.
• Sebagai contoh, perhatikan gambar kameramen
yang ditunjukkan pada Gambar 1.3. Gambar 1.4
menunjukkan profil (gambar atas) dan korelasi
yang sesuai (gambar bawah) dari gambar juru
kamera sepanjang baris 164.
Image Compression Techniques
File Matlab untuk menghasilkan gambar 1.4 tercantum di bawah ini:
% Plots the image intensity profile and pixel correlation
% along a specified row.
clear
close all
I = imread('cameraman.tif');
figure,imshow(I),title('Input image')
%
Row = 164; % row number of image profile
x = double(I(Row,:));
Col = size(I,2);
%
MaxN = 128; % number of correlation points to calculate
Cor = zeros(1,MaxN); % array to store correlation values
for k = 1:MaxN
l = length(k:Col);
Cor(k) = sum(x(k:Col) .* x(1:Col-k+1))/l;
end
MaxCor = max(Cor);
Cor = Cor/MaxCor;
figure,subplot(2,1,1),plot(1:Col,x,'k','LineWidth',2)
xlabel('Pixel number'), ylabel('Amplitude')
legend(['Row' ' ' num2str(Row)])
subplot(2,1,2),plot(0:MaxN-1,Cor,'k','LineWidth',2)
xlabel('Pixel displacement'), ylabel('Normalized corr.')
Image Compression Techniques
• Perhatikan bahwa nilai piksel hampir sama di atas sejumlah besar piksel
tetangga demikian juga dengan korelasi piksel. Dengan kata lain, piksel
dalam satu baris memiliki korelasi tinggi.
• Demikian pula, piksel mungkin juga memiliki korelasi tinggi di sepanjang
kolom. Dengan demikian, redundansi piksel diterjemahkan menjadi
korelasi piksel.
• Prinsip dasar di balik kompresi data gambar adalah untuk
mendekorelasi ulang piksel dan meng-encode hasil gambar
terdekorelasi (decorrelated image) untuk ditransmisikan atau disimpan.
• Skema kompresi tertentu akan bergantung pada metode yang mana
korelasi piksel dihapus.
Image Compression Techniques
• Salah satu teknik kompresi gambar yaitu Differential Pulse Code
Modulation (DPCM).
• Jika korelasi piksel sepanjang satu dimensi (baris atau kolom) dihapus,
maka DPCM disebut DPCM satu dimensi (1D) atau DPCM baris demi
baris.
• Jika korelasi sepanjang kedua dimensi tersebut dihapus, maka DPCM
yang dihasilkan dikenal sebagai 2D DPCM.
• DPCM menghapus korelasi piksel dan me-requantize nilai piksel sisa
untuk penyimpanan atau transmisi.
• Gambar residual memiliki varians yang jauh lebih kecil daripada gambar
aslinya. Selanjutnya, gambar residual memiliki probability density
function (PDF), yang merupakan fungsi eksponensial dua sisi. Ini
menyebabkan kompresi.
Image Compression Techniques
• Kuantizer tetap tidak memedulikan bagaimana nilai piksel
yang terkait dengan dekorelasi.
• Variasi menggunakan kuantizer yang beradaptasi dengan
perubahan statistik input, dan oleh karena itu DPCM yang
sesuai disebut DPCM adaptif.
• DPCM sangat sederhana untuk diimplementasikan, tetapi
kompresi dicapai sekitar 4:1.
• Karena lebar bit terbatas dari quantizer untuk gambar residu,
ujungnya tidak tersajikan dengan baik pada DPCM.
• Ini juga menunjukkan goresan sekali di gambar ketika
kesalahan saluran (channel error) terjadi.
Image Compression Techniques
• Skema kompresi yang populer dan lebih efisien dikenal dengan nama transform coding. Idenya dengan
mengurangi atau menghapus korelasi piksel untuk mendapatkan kompresi.
• Dalam transform coding, satu blok piksel gambar secara linear ditransformasikan menjadi satu lagi blok
koefisien transformasi dengan ukuran yang sama dengan piksel blok dengan harapan bahwa hanya
beberapa koefisien transformasi yang akan signifikan dan sisanya dapat dibuang.
• Ini menyiratkan bahwa ruang penyimpanan dibutuhkan untuk menyimpan hanya koefisien transformasi
signifikan, yang merupakan sebagian kecil dari jumlah total koefisien dan karena tersebut adalah
koefisien.
• Gambar asli dapat direkonstruksi dengan melakukan transformasi kebalikan dari blok koefisien yang
tereduksi. Harus ditunjukkan bahwa invers transform harus ada untuk rekonstruksi yang unik.
• Ada sejumlah transformasi yang tersedia untuk dipilih, masing-masing memiliki kelebihan dan
kekurangannya sendiri. Transformasi yang paling efisien adalah transformasi yang menggunakan koefisien
transformasi yang paling sedikit untuk merekonstruksi gambar untuk sejumlah distorsi tertentu.
• Transformasi linear semacam ini dikenal sebagai optimal transform dimana optimalisasi berkenan dengan
minimum mean square error antara gambar asli dan yang direkonstruksi.
Image Compression Techniques
• Transformasi gambar yang optimal dikenal dengan nama Karhunen-Lo’eve Transform (KLT) atau Hotelling
Transform.
• Kekurangan dari KLT adalah bahwa kernel transformasi tergantung pada gambar aktual yang akan dikompres,
yang membutuhkan lebih banyak informasi sampingan bagi penerima untuk merekonstruksi gambar asli dari
gambar yang dikompresi daripada transformasi fixed lainnya.
• Transformasi fixed yang sangat populer yaitu DCT (Discrete Cosine Transform). DCT memiliki efisiensi kompresi
yang hampir sama dengan KLT dengan keuntungan bahwa kernelnya fixed dan oleh karena itu tidak diperlukan
operasi sampingan oleh penerima untuk rekonstruksi.
• DCT digunakan dalam standar kompresi JPEG dan video MPEG. DCT biasanya diterapkan pada blok gambar
yang tidak tumpang tindih (nonoverlapping). Blok DCT khas berukuran 8x8 atau 16x16.
• Salah satu kelemahan kompresi gambar menggunakan DCT adalah pemblokiran artefak (blocking artifact).
Karena blok DCT lebih kecil dibandingkan dengan gambar dan karena nilai rata-rata blok mungkin berbeda,
pemblokiran artefak muncul ketika koefisien DCT frekuensi nol (dc) dikuantisasi cukup berat. Namun, pada
kompresi rendah, pemblokiran artefak hampir tidak terlihat.
• Contoh yang menunjukkan pemblokiran artefak akibat kompresi menggunakan 8x8 DCT ditunjukkan pada
Gambar 1.5a. Blockiness terlihat jelas di daerah datar – baik intensitas rendah maupun tinggi seperti
undershoot dan overshoot sepanjang tepi tajam (sharp edges) – lihat Gambar 1.5b.
Image Compression Techniques
Image Compression Techniques
% Figure1 5.m
% Example to show blockiness in DCT compression
% Quantizes and dequantizes an intensity image using
% 8x8 DCT and JPEG quantization matrix
close all
clear
I = imread('cameraman.tif');
figure,imshow(I), title('Original Image')
%
fun = @dct2; % 2D DCT function
N = 8; % block size of 2D DCT
T = blkproc(I,[N N],fun); % compute 2D DCT of image using NxN blocks
%
Scale = 4.0; % increasing Scale quntizes DCT coefficients heavily
% JPEG default quantization matrix
jpgQMat = [16 11 10 16 24 40 51 61;
12 12 14 19 26 58 60 55;
14 13 16 24 40 57 69 56;
14 17 22 29 51 87 80 62;
18 22 37 56 68 109 103 77;
24 35 55 64 81 194 113 92;
49 64 78 87 103 121 120 101; Lanjutan code di slide berikutnya…!!!
72 92 95 98 121 100 103 99];
Image Compression Techniques
Qstep = jpgQMat * Scale; % quantization step size
% Quantize and dequantize the coefficients
for k = 1:N:size(I,1)
for l = 1:N:size(I,2)
T1(k:k+N-1,l:l+N-1) = round(T(k:k+N-1,l:l+N-1)./ Qstep).*Qstep;
end
end
% do inverse 2D DCT
fun = @idct2;
y = blkproc(T1,[N N],fun);
y = uint8(round(y));
figure,imshow(y), title('DCT compressed Image')
% Plot image profiles before and after compression
ProfRow = 164;
figure,plot(1:size(I,2),I(ProfRow,:),'k','LineWidth',2)
hold on
plot(1:size(I,2),y(ProfRow,:),'-.k','LineWidth',1)
title(['Intensity profile of row ' num2str(ProfRow)])
xlabel('Pixel number'), ylabel('Amplitude')
%legend([’Row’ ’ ’ num2str(ProfRow)],0)
legend('Original','Compressed')
Image Compression Techniques
• Metode kompresi ketiga dan relatif baru didasarkan pada
transformasi wavelet.
• Transformasi wavelet menangkap perubahan jangka panjang
dan jangka pendek pada gambar dan menawarkan
mekanisme kompresi yang sangat efisien. Akibatnya, ini
digunakan dalam versi terakhir dari standar JPEG sebagai tool
kompresi.
• Ini juga diadopsi oleh SMPTE (Society of Motion Pictures and
Television Engineers). Meskipun transformasi wavelet dapat
diterapkan pada blok-blok gambar seperti DCT, ini umumnya
diterapkan pada gambar penuh dan berbagai koefisien
wavelet dikuantisasi menurut jenisnya.
Image Compression Techniques
Image Compression Techniques
• Dua tingkat Discrete Wavelet Transform (DWT) dari gambar kameramen yang
ditunjukkan pada Gambar 1.6 untuk mengilustrasikan koefisien transformasi wavelet
2D.
• 2D DWT menguraikan gambar menjadi satu pendekatan dan banyak koefisien detail.
Jumlah subimage koefisien yang sesuai dengan L-Level 2D DWT sama dengan 3xL+1.
Oleh karena itu, untuk DWT 2D dua level, ada tujuh subimage koefisien.
1
• Pada tingkat pertama, ada tiga subimage koefisien detail, masing-masing berukuran
4
gambar asli. Level kedua terdiri dari empat set koefisien DWT – satu perkiraan dan tiga
1
detail, masing-masing gambar asli.
16
• Sesuai namanya, koefisien aproksimasi adalah perkiraan resolusi spasial yang lebih
rendah dari gambar aslinya. Koefisien detail menangkap diskontinuitas atau tepi
gambar dengan orientasi dalam arah horizontal, vertikal, dan diagonal.
Image Compression Techniques
• Untuk mengkompres, gambar menggunakan DWT 2D kita harus menghitung DWT 2D gambar
hingga level tertentu dan kemudian meng-quantize setiap koefisien subimage.
• Kualitas dan rasio kompresi yang dapat dicapai tergantung pada wavelet dan metode kuantisasi
yang dipilih.
• Efek visual dari distorsi kuantisasi dalam skema kompresi DWT berbeda daripada skema berbasis
DCT. Gambar 1.7a adalah gambar kameramen yang dikompres menggunakan 2D DWT.
• Wavelet yang digunakan disebut Daubechies 2 (db2 pada MATLAB) dan jumlah level yang
digunakan adalah 1.
• Kita dapatkan bahwa tidak ada efek pemblokiran, tetapi ada patches di area datar. Kita juga
melihat bahwa ujung-ujungnya diproduksi dengan benar yang dibuktikan pada profile (Gambar
1.7b).
• Jumlah kuantisasi yang diterapkan pada Gambar 1.7a tidak sama yang digunakan pada contoh
DCT dan bahwa dua contoh yang diberikan hanya untuk menunjukkan perbedaan artefak yang
diperkenalkan oleh kedua skema.
Image Compression Techniques
Image Compression Techniques
% Figure1 6.m
% 2D Discrete Wavelet Transform (DWT)
% Computes multi-level 2D DWT of an intensity image
close all
clear
I = imread('cameraman.tif');
figure,imshow(I), title('Original Image')
L = 2; % number of levels in DWT
[W,B] = wavedec2(I,L,'db2'); % do a 2-level DWT using db2 wavelet
% declare level-1 subimages
w11 = zeros(B(3,1),B(3,1));
w12 = zeros(B(3,1),B(3,1));
w13 = zeros(B(3,1),B(3,1));
% declare level-2 subimages
w21 = zeros(B(1,1),B(1,1));
w22 = zeros(B(1,1),B(1,1));
w23 = zeros(B(1,1),B(1,1));
w24 = zeros(B(1,1),B(1,1));

Lanjutan code di slide berikutnya…!!!


Image Compression Techniques
% extract level-1 2D DWT coefficients
offSet11 = 4*B(1,1)*B(1,2);
offSet12 = 4*B(1,1)*B(1,2)+B(3,1)*B(3,2);
offSet13 = 4*B(1,1)*B(1,2)+2*B(3,1)*B(3,2);
for c = 1:B(2,2)
for r = 1:B(2,1)
w11(r,c) = W(offSet11+(c-1)*B(3,1)+r);
w12(r,c) = W(offSet12+(c-1)*B(3,1)+r);
w13(r,c) = W(offSet13+(c-1)*B(3,1)+r);
end
end
% extract level-2 2D DWT coefficients
offSet22 = B(1,1)*B(1,2);
offSet23 = 2*B(1,1)*B(1,2);
offSet24 = 3*B(1,1)*B(1,2);
for c = 1:B(1,2)
for r = 1:B(1,1)
w21(r,c) = W((c-1)*B(1,1)+r);
w22(r,c) = W(offSet22+(c-1)*B(1,1)+r);
w23(r,c) = W(offSet23+(c-1)*B(1,1)+r);
w24(r,c) = W(offSet24+(c-1)*B(1,1)+r);
end Lanjutan code di slide berikutnya…!!!
end
Image Compression Techniques
% declare output array y to store all the DWT coefficients
%y = zeros(261,261);
y = zeros(2*B(1,1)+B(3,1),2*B(1,2)+B(3,2));
y(1:B(1,1),1:B(1,1))=w21;
y(1:B(1,1),B(1,1)+1:2*B(1,1))=w22;
y(B(1,1)+1:2*B(1,1),1:B(1,1))=w23;
y(B(1,1)+1:2*B(1,1),B(1,1)+1:2*B(1,1))=w24;
%
y(1:B(3,1),2*B(1,1)+1:261)=w11;
y(2*B(1,1)+1:261,1:129)=w12;
y(2*B(1,1)+1:261,2*B(1,1)+1:261)=w13;
figure,imshow(y,[]),title([num2str(L) '-level 2D DWT'])
% Figure1 7.m
% An example to show the effect of quantizing the 2D DWT
% coefficients of an intensity image along with intensity
% profile along a specified row
%

Lanjutan code di slide berikutnya…!!!


Image Compression Techniques
close all
clear
I = imread('cameraman.tif');
figure,imshow(I), title('Original Image')
% do a 1-level 2D DWT
[W,B] = wavedec2(I,1,'db2');
w11 = zeros(B(1,1),B(1,2));
w12 = zeros(B(1,1),B(1,2));
w13 = zeros(B(1,1),B(1,2));
w14 = zeros(B(1,1),B(1,2));
%
offSet12 = B(1,1)*B(1,2);
offSet13 = 2*B(1,1)*B(1,2);
offSet14 = 3*B(1,1)*B(1,2);
% quantize only the approximation coefficients
Qstep = 16;
for c = 1:B(1,2)
for r = 1:B(1,1)

Lanjutan code di slide berikutnya…!!!


Image Compression Techniques
W((c-1)*B(1,1)+r) = floor(W((c-1)*B(1,1)+r)/Qstep)*Qstep;
%{
W(offSet12+(c-1)*B(1,1)+r) = floor(W(offSet12+(c-1)*B(1,1)+r)/8)*8;
W(offSet13+(c-1)*B(1,1)+r) = floor(W(offSet13+(c-1)*B(1,1)+r)/8)*8;
W(offSet14+(c-1)*B(1,1)+r) = floor(W(offSet14+(c-1)*B(1,1)+r)/8)*8;
%}
end
end
% do inverse 2D DWT
y = waverec2(W,B,'db2');
figure,imshow(y,[])
% plot profile
ProfRow = 164;
figure,plot(1:size(I,2),I(ProfRow,:),'k','LineWidth',2)
hold on
plot(1:size(I,2),y(ProfRow,:),'-.k','LineWidth',1)
title(['Profile of row ' num2str(ProfRow)])
xlabel('Pixel number'), ylabel('Amplitude')
%legend([’Row’ ’ ’ num2str(ProfRow)],0)
legend('Original','Compressed')
Laporan
Buat laporan untuk praktikum:
1. Profil Intensitas gambar dan korelasi piksel
2. Kompresi DCT
3. Kompresi 2D DWT
Daftar Pustaka
• Thyagarajan. 2011. STILL IMAGE AND VIDEO
COMPRESSION WITH MATLAB. John Wiley &
Sons, Inc: Canada.

Anda mungkin juga menyukai