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.