Anda di halaman 1dari 61

BUKU MODUL/PETUNJUK PRAKTIKUM

TEK156221 PRAKTIKUM PENGOLAHAN SINYAL


MULTIMEDIA

DI SUSUN OLEH:
Dr. I Made Oka Widyantara, ST, MT.
I Gst A. Komang Diafari Djuni H, ST., MT.

JURUSAN TEKNIK ELEKTRO DAN KOMPUTER


FAKULTAS TEKNIK
UNIVERSITAS UDAYANA
Lab. Sistem Komunikasi – Prak. Pengolahan Sinyal Multimedia

KATA PENGANTAR

Puji syukur penulis haturkan kehadapan Ida Hyang Widi Wasa atas rahmat-
Nya penyusunan buku manual Praktikum Pengolahan Sinyal Multimedia dapat
diselesaikan. Buku Praktikum Pengolahan Sinyal Multimedia disusunkan
berdasarkan silabus kurikulum Teknik Elektro dan Komputer tahun 2015-2020,
untuk digunakan sebagai materi modul/petunjuk kegiatan praktikum mata kuliah
TEK156221 Praktikum Pengolahan Sinyal Multimedia.
Penulis berharap materi dalam buku modul/petunjuk praktikum ini dapat
membantu pemahaman mahasiswa dalam meningkatkan kompetensi dibidang ilmu
pengolahan sinyal. Selanjutnya, penulis berhadap masukan yang konstruksi untuk
menyempurnakan materi dalam bulu modul/petunjuk praktikum ini.

Bukit Jimbaran, September 2015


Penulis

I Made Oka Widyantara


IGAK Diafari Djuni H.

I Made Oka Widyantara, IGAK Diafari Djuni H. i


Lab. Sistem Komunikasi – Prak. Pengolahan Sinyal Multimedia

DAFTAR ISI

Kata Pengantar i
Daftar Isi ii
Percobaan I : Teorema Sampling Nyquist Dan Analisis Time-Frequency 1
Percobaan II : Pengolahan Sinyal Audio 14
Percobaan III : Format Grafik, Citra Dan Video 23
Percobaan IV : Dasar-Dasar Teknik Kompresi 32
Percobaan V : Discrete Cosine Transform (Dct) Dan Kompresi Citra Jpeg 42
Percobaan VI : Estimasi Gerak Pada Pengkodean Video 50

I Made Oka Widyantara, IGAK Diafari Djuni H. ii


Lab. Sistem Komunikasi – Prak. Pengolahan Sinyal Multimedia

PERCOBAAN I
TEOREMA SAMPLING NYQUIST DAN ANALISIS TIME-FREQUENCY

1.1 TUJUAN
Setelah melaksanakana percobaan ini praktikan mampu :
1. Memahami fungsi dasar teorema sampling Nyquist
2. Memahami analisis time-frequency dari audio
3. Mengaplikasikan proses Transformasi Fourier Waktu Pendek
4. Mengaplikasikan Vocoder Fasa

1.2 PERALATAN
Peralatan yang digunakan pada percobaan ini adalah:
1. Laptop atau Personal Computer
2. Software MATLAB minimal versi 2012a

1.3 TEORI PENUNJANG


1.3.1 Teorema Sampling Nyquist
Seperti ditunjukan pada Gambar 1.1, teknik sampling digunakan untuk
menghasilkan sinyal diskrit dengan mencacah sinyal sampel dalam perioda waktu
yang tetap. Menurut teknik Sampling Nyquist, untuk mendapatkan sinyal sampling
yang bebas kesalahan (aliasing), maka frekuensi sinyal sample paling sedikit adalah
2 kali frekuensi sinyal.

Gambar 1.1 Proses Sampling

I Made Oka Widyantara, IGAK Diafari Djuni H. 1


Lab. Sistem Komunikasi – Prak. Pengolahan Sinyal Multimedia

proses sampling ini, jika frekuensi sinyal sample tidak sesuai dengan batas yang
ditentukan oleh Teori Shannon-Nyquist, maka akan terjadi suatu kondisi yang
disebukt aliasing. Efek Aliasing yaitu suatu efek yang akan terjadi jika kita
melakukan pencuplikan dengan frekuensi pencuplikan dibawah dari ketentuan
Nyquist. Frekuensi aliasing ini dapat dihitung dengan mengurangkan frekuensi
sample dengan frekuensi sinyal yang disampling.

1.3.2 Efek Aliasing


Efek Aliasing terjadi ketika proses sampling menggunakan frekuensi
sampling kurang dari dua kali frekuensi sinyal (dibawah frekuensi Nyquist). Seperti
ditunjukan pada Gambar 1.2, terdapat 7 frekuensi dalam 1 plot dengan frekuensi
sampling yang sama yaitu 20 Hz. Pada frekuensi sinyal 10 Hz, hasil sinyal sampling
berupa garis lurus, karena menggunakan frekuensi sampling = 2 kali frekuensi 10
Hz. Jika sinyal tersebut di sampling pada frekuensi, misalnya 15 Hz, maka akan
terjadi aliasing sebesar :
Frekuensi aliasing = frekuensi sampling Nyquist – frekuensi sampling 15Hz
= 20Hz – 15Hz = 5Hz

Gambar 1.2. Efek Aliasing

Efek aliasing menyebabkan sinyal yang direkonstruksi menjadi berbeda


dengan sinyal aslinya. Seperti ditunjukan pada Gambar 1.3, akibta aliasing, citra
rekonstruksi akan memiliki efek distorsi atau artifak.

I Made Oka Widyantara, IGAK Diafari Djuni H. 2


Lab. Sistem Komunikasi – Prak. Pengolahan Sinyal Multimedia

Gambar 1.3. Contoh Aliasing

1.3.3 Transformasi Fourier


Transformasi Fourier merupakan suatu proses yang banyak digunakan
untuk memindahkan domain dari suatu fungsi atau obyek ke dalam domain
frekuensi. Di dalam pengolahan citra digital, transformasi fourier digunakan untuk
mengubah domain spasial pada citra menjadi domain frekuensi. Analisa-analisa
dalam domain frekuensi banyak digunakan seperti filtering. Dengan menggunakan
transformasi fourier, sinyal atau citra dapat dilihat sebagai suatu obyek dalam
domain frekuensi. Salah satu bentuk transformasi fourier adalah STFT (Short-Time
Fourier Transform) atau Transformasi Fourier Waktu Pendek.
STFT adalah transformasi Fourier yang dilakukan pada sinyal pendek
(short time signal), dengan tujuan untuk membedakan frekuensi dan phase
sinusoidal pada setiap sinyal short-time yang berubah setiap waktu. Secara
sederhana pada kasus sinyal yang kontinyu, transformasi dilakukan dengan
mengalikan setiap sinyal short-time terhadap fungsi window dalam perioda waktu
tertentu.
Transformasi Fourier akan menghasilkan short-time spectrum sinyal yang
didapat dari setiap window yang berjalan pada fungsi waktu, dan hasilnya akan
direpresentasikan ke dalam matrik 2 dimensi yang menyatakan transformasi sinyal
tiap window. Secara matematis dapat di formulasikan dengan :

………………….(1.1)

dimana x(t) adalah sinyal input dan g(t) adalah fungsi window. Adapun fungsi
windowing yang umum digunakan adalah seperti Hanning Window, Hamming
Window, Gausian Window, Balckaman dan sebagainya. Jadi inti dari transformasi
Fourier adalah perkalian sinyal x(t) dengan fungsi windownya g(t-t).

I Made Oka Widyantara, IGAK Diafari Djuni H. 3


Lab. Sistem Komunikasi – Prak. Pengolahan Sinyal Multimedia

1.4 LANGKAH – LANGKAH PERCOBAAN


1.4.1 Teorema Sampling Nyquist dan Efek Aliasing Pada Waveform
1. Buka M-file Matlab di D:Prak PSM\Percobaan1\nyquist_aliasdemo.m
2. Pada script tersebut, perhatikan variable frekuensi sample frequency samp_freq
dan frekuensi dari gelombang sinus freq
close all
clear tt_sf
samples = 10000; %jumlah sample
samp_freq = 20 %frekuensi sample
nyq = samp_freq/2 %Batas frekuensi Nyquist sample
samp_time = samples/samp_freq; %waktu sampling
freq = 4 %frekuensi gelombang sinus
t = [0:samples-1]; %jumlah waktu sample
tt = t/10000; %Setiap titik adalah 0.1
mdetik,di plot menjadi 1 detik
size(tt);
sint = sin(tt);
radfreq = freq*(2*pi)/1;
sint2 = sin(radfreq*tt); % Frekuensi radial adalah
radfreq, sedangkan Hz adalah
radfreq/(2*pi)
plot(tt, sint2, 'k')
title('radfreq plot')
pause(1)

if nyq - freq < 0 alias = nyq - abs(nyq-freq), end


cnt = 1;
for ii = 1:samp_time:samples
tt_sf(cnt) = ii/samples;
cnt=cnt+1;
end

if ii < samples tt_sf(cnt) = samples/10000; end


sint3 = sin(radfreq*tt_sf);
hold on
tt_sf_sze = size(tt_sf,2)

plot(tt_sf, sint3, 'r')


figure, plot(tt_sf, sint3, 'r.'), hold on, plot(tt, sint2,
'k'

3. Variasikan nilai samp_freq dan freq, dengan ketentuan sebagai berikut:


1. Atur frekuensi gelombang sinus dibawah batas Nyquist.
2. Atur frekuensi gelombang sinus sama dengan batas Nyquist
3. Atur frekuensi gelombang sinus menjadi diatas batas Nyquist

I Made Oka Widyantara, IGAK Diafari Djuni H. 4


Lab. Sistem Komunikasi – Prak. Pengolahan Sinyal Multimedia

4. Atur frekuensi gelombang sinus menjadi setengah batas Nyquist


5. Atur frekuensi gelombang sinus sama dengan sample frequency
4. Semua semua ketentuan diatas, amati efek yang ditimbulkan dan simpan hasil
grafik yang dihasilkan oleh simulasi.
5. Buat analisa hasil terhadap luaran sinyal sampling yang dihasilkan oleh setiap
ketentuan diatas.

1.4.2 Teorema Sampling Nyquist dan Efek Aliasing Pada Audio


a. Buka M-file Matlab di D:Prak PSM\Percobaan1\
nyquist_aliasaudiodemo.m
b. Pada percobaan ini, inputan yang digunakan adalah sinyal audio. Tahapan
percobaan adalah identik dengan percobaan di 1.4.1
c. Ikuti langkah b sampai dengan d. Catat dan simpan hasil hasil luaran simulasi
d. Tugas:
1. Buat analisa hasil terhadap luaran sinyal sampling yang dihasilkan oleh
setiap ketentuan diatas.
2. Berikan kesimpulan dampak aliasing pada sinyal dasar (wavefoem) dan
pada audio setelah proses sampling dilakukan.

close all
clear tt_sf
samples = 22050; %jumlah sample
samp_freq = 22050; %frekuensi sample
nyq = samp_freq/2 %Batas nyquist frekuensi sample
samp_time = samples/samp_freq; %waktu sampling
freq = 22050 %frekuensi gelombang sinus
t = [0:samples-1]; %jumlah waktu sample
tt = t/10000; %Setiap titik adalah 0.1
mdetik,di plot menjadi 1 detik
size(tt);
sint = sin(tt);
radfreq = freq*(2*pi)/1;
sint2 = sin(radfreq*tt); % Frekuensi radial adalah
radfreq, sedangkan Hz adalah
radfreq/(2*pi)

plot(sint2(1:100), 'k')
title('radfreq plot')

I Made Oka Widyantara, IGAK Diafari Djuni H. 5


Lab. Sistem Komunikasi – Prak. Pengolahan Sinyal Multimedia

%play sample sint2


p = audioplayer(sint2, samp_freq);
play(p, [1 samples]);

pause(1)
disp('Doing Sampling:');

if nyq - freq < 0 alias = nyq - abs(nyq-freq), end


cnt = 1;
for ii = 1:samp_time:samples
tt_sf(cnt) = ii/samples;
cnt=cnt+1;
end
if ii < samples tt_sf(cnt) = 1; end
sint3 = sin(radfreq*tt_sf);
hold on
tt_sf_sze = size(tt_sf,2)

figure

plot(sint3(1:100), 'r')

p = audioplayer(sint3, nyq);
play(p, [1 tt_sf_sze]);

%figure, plot (sint3(1:100), 'r.'), hold on,


plot(sint2(1:100), 'k')

1.4.3 Analisis Time-Frequency


1. Transformasi Fourier Waktu Pendek (Short Time Fourier Transform,
STFT):
a. Buka M-file Matlab di D:Prak PSM\Percobaan1\ Fourier\ stft.m dan
stft_spectogram.m
b. Mengamati luaran spektogram:
i. Pada scrift stft.m, set nilai FFT(f) = 256, Window (w) = 256, dan
ukuran offset (h) adalah 256/4.
ii. Jalankan script stft_spectogram.m, amati dan simpan hasil
spectogram.
iii. Selanjutnya, ubahlah nilai FFT size (f) = 512, ukuran window = 512,
dan ukuran offset (h) = 512/4.

I Made Oka Widyantara, IGAK Diafari Djuni H. 6


Lab. Sistem Komunikasi – Prak. Pengolahan Sinyal Multimedia

iv. Jalankan script stft_spectogram.m, amati dan simpan hasil


spectogram
v. Tugas:
Buat analisa pengaruh ukuran FFT(f) terhadap luaran spektogram

% function stft.m

function D = stft(x, f, w, h, sr)

if nargin < 2; f = 256; end


if nargin < 3; w = f; end
if nargin < 4; h = 0; end
if nargin < 5; sr = 8000; end

% expect x as a row
if size(x,1) > 1
x = x';
end

s = length(x);

if length(w) == 1
if w == 0
% special case: rectangular window
win = ones(1,f);
else
if rem(w, 2) == 0 % force window to be odd-len
w = w + 1;
end
halflen = (w-1)/2;
halff = f/2; % midpoint of win
halfwin = 0.5 * ( 1 + cos( pi *
0:halflen)/halflen));
win = zeros(1, f);
acthalflen = min(halff, halflen);
win((halff+1):(halff+acthalflen)) =
halfwin(1:acthalflen);
win((halff+1):-1:(halff-acthalflen+2)) =
halfwin(1:acthalflen);
end
else
win = w;
end

w = length(win);
% now can set default hop
if h == 0

I Made Oka Widyantara, IGAK Diafari Djuni H. 7


Lab. Sistem Komunikasi – Prak. Pengolahan Sinyal Multimedia

h = floor(w/2);
end
c = 1;

% pre-allocate output array


d = zeros((1+f/2),1+fix((s-f)/h));

for b = 0:h:(s-f)
u = win.*x((b+1):(b+f));
t = fft(u);
d(:,c) = t(1:(1+f/2))';
c = c+1;
end;

% If no output arguments, plot a spectrogram


if nargout == 0
tt = [0:size(d,2)]*h/sr;
ff = [0:size(d,1)]*sr/f;
imagesc(tt,ff,20*log10(abs(d)));
axis('xy');
xlabel('time / sec');
ylabel('freq / Hz')
% leave output variable D undefined
else
% Otherwise, no plot, but return STFT
D = d;
End

% stft_spectogram.m

load handel; % Get some audio

% stft parameters (can vary)


n = 512;
nhop = n/4;
Y = stft(y,n,n,nhop);

% Make Spectrogram
specy = abs(Y)/n;

% set left-hand coordinate origin


imshow(flipud(255*specy));
colormap(hsv); %color display

%istft.m
function x = istft(d, ftsize, w, h)

I Made Oka Widyantara, IGAK Diafari Djuni H. 8


Lab. Sistem Komunikasi – Prak. Pengolahan Sinyal Multimedia

s = size(d);
%if s(1) != (ftsize/2)+1
% error('number of rows should be fftsize/2+1')
%end

cols = s(2);
xlen = ftsize + (cols-1)*h;
x = zeros(1,xlen);

if length(w) == 1
if w == 0
% special case: rectangular window
win = ones(1,ftsize);
else
if rem(w, 2) == 0 % force window to be odd-len
w = w + 1;
end
halflen = (w-1)/2;
halff = ftsize/2;
halfwin = 0.5 * ( 1 + cos( pi * (0:halflen)/halflen));
win = zeros(1, ftsize);
acthalflen = min(halff, halflen);
win((halff+1):(halff+acthalflen)) =
halfwin(1:acthalflen);
win((halff+1):-1:(halff-acthalflen+2)) =
halfwin(1:acthalflen);
% 2009-01-06: Make stft-istft loop be identity
win = 2/3*win;
end
else
win = w;
w = length(win);
end

for b = 0:h:(h*(cols-1))
ft = d(:,1+b/h)';
ft = [ft, conj(ft([((ftsize/2)):-1:2]))];
px = real(ifft(ft));
x((b+1):(b+ftsize)) = x((b+1):(b+ftsize))+px.*win;
end;

c. Mengamati perbedaan Rectangular dan Hann-windowed STFTs.


i. Untuk Hann-windowed STFT, set Window (w) = 256
ii. Untuk Rectangular STFT, set Window (w) = 0
iii. Tugas :
Amati dan jelaskan perbedaan antara Rectangular dan Hann-
windowed STFTs.

I Made Oka Widyantara, IGAK Diafari Djuni H. 9


Lab. Sistem Komunikasi – Prak. Pengolahan Sinyal Multimedia

d. Lakukan beberapa perubahan blok sederhana dari STFT menggunakan


koding stft_spectogram_edit.m sebagai berikut.
i. Potong seri dari blok rectangular horizontal dan amati (plot dan suara
yang dihasilkan) resultant Spectogram dan bentuk gelombang inverse
STFT. Plot dan jalankan gelombang residual dari perbedaan gelombang
yang asli dan yang dimodifikasi
ii. Potong seri dari blok rectangular vertical dan lakukan analisis seperti
diatas.

close all, clear all;

load handel; % Get some audio


figure(1)
plot(y);
title('Orignal Wav, Y');

% stft parameters (can vary)


n = 1024;
nhop = n/4;
Y = stft(y,n,n,nhop);

% Edit example cut a chunk out of Horizontal Blocks


Yedit = Y;
Yedit(100:400,:) = 0;

figure(2)
imshow(255*abs(Yedit)/n)
colormap('hsv')
title('Edited Xedit Spectrogram')

% Remake sound
yedit = istft(Yedit,n,n, nhop);
sound(y,Fs)
sound(yedit,Fs)

figure(3)
plot(yedit)
title('Xedit')

figure(4)

plot(yedit(1:length(yedit)) - y(1:length(yedit))')
title('Xedit residual')

I Made Oka Widyantara, IGAK Diafari Djuni H. 10


Lab. Sistem Komunikasi – Prak. Pengolahan Sinyal Multimedia

% Play residual
sound(yedit(1:length(yedit)) - y(1:length(yedit))',Fs);

% Edit example cut a chunk out of Vertical Blocks


Yedit = Y;
Yedit(:, 150:250) = 0;

figure(5)
imshow(255*abs(Yedit)/n)
colormap('hsv')
title('Edited Yedit Spectrogram')

% Remake sound
yedit = istft(Yedit,n,n, nhop);
sound(y,Fs);
sound(yedit,Fs)

figure(6)
plot(yedit)
title('Yedit')

figure(7)
plot(yedit(1:length(yedit)) - y(1:length(yedit))')
title('Yedit residual')

% Play residual
sound(yedit(1:length(yedit)) - y(1:length(yedit))', Fs);

2. Vocoder Fasa :
Buka M-file Matlab di D:Prak PSM\Percobaan1\ Fourier\ pvoc_speed.m
a) Perubahan Tempo : Ubah kecepatan audio dengan:
i. Kecepatan satu setengah lebih pelan
ii. Kecepatan satu setengah lebih cepat
iii. Tiga kali lebih cepat
iv. Tugas:
Amati dan analisis kualiatas suara ketika kecepatan audio

% Get some audio


load handel;

% Half Speed
yslow =pvoc(y,.5,1024);
% Compare original and resynthesis
sound(y,Fs);

I Made Oka Widyantara, IGAK Diafari Djuni H. 11


Lab. Sistem Komunikasi – Prak. Pengolahan Sinyal Multimedia

sound(yslow,Fs);

% Twice as Fast
yfast =pvoc(y,2,1024);
% Compare original and resynthesis
sound(y,Fs);
sound(yfast,Fs);

b) Pergeseran Pitch dengan merujuk ke interval meantone dan contoh kode


pada pvoc_pitch.m. Ubah picth dari audio dengan:
i. Satu oktaf naik dari pitch asli
ii. Satu oktaf turun dari pitch asli
iii. Audio bergeser sejauh lima
iv. Buatlah tiga bagian harmoni dari audio asli (bagian 1), audio bergeser
sejauh lima (bagian 2), dan audio bergeser sejauh satu oktaf (bagian 3).
v. Tugas:
Amati dan jelaskan kualitas sauara akibat pergeseran Pitch

% Get some audio


load handel;

% Pitch up a Fifth
ypvoc =pvoc(y, 0.66666);
ypitch = resample(ypvoc,2,3); % NB: 0.666 = 2/3
sound(y,Fs);
sound(ypitch, Fs);
sound(y(1:length(ypitch)) + ypitch, Fs);

% Pitch up an octave
ypvoc =pvoc(y, 0.5);
ypitch = resample(ypvoc,1,2);
sound(y,Fs);
sound(ypitch, Fs);
sound(y(1:length(ypitch)) + ypitch, Fs);

% Pitch down an octave


ypvoc =pvoc(y, 2);
ypitch = resample(ypvoc,2,1);
sound(y,Fs);
sound(ypitch, Fs);
sound(y + ypitch(1:length(y)), Fs);

I Made Oka Widyantara, IGAK Diafari Djuni H. 12


Lab. Sistem Komunikasi – Prak. Pengolahan Sinyal Multimedia

PERCOBAAN II

PENGOLAHAN SINYAL AUDIO

2.1 TUJUAN
1. Mempelajari teknik kuantisasi untuk kompresi audio
2. Memahami teknik pengkodean lossy

2.2 PERALATAN
3. Program matlab 6.1 keatas
4. Speaker aktif

2.3 TEORI PENUNJANG


2.3.1 Kuantisasi Seragam
Rentang (range) dan level kuantisasi dapat dipilih dalam berbagai cara
tergantung pada aplikasi yang dimaksud dari representasi digital. Dengan kuantisasi
seragam, rentang dinamik (minimum ke maksimum) dari sinyal R, dibagi menjadi
L interval berukuran sama, masing-masing dengan panjang Δ, dan selanjutnya Δ
akan disebut sebagai step-size kuantisasi. Hubungan input (nilai yang belum
dikuantisasi) dengan output (nilai sudah dikuantisasi) dalam kuantizer seragam
ditunjukkan pada Gambar 5.1, dimana, xi adalah batas kanan pada interval i dan xî
adalah level kuantisasi dari interval tersebut. Ini memenuhi kondisi, yaitu:
xi  xi 1   2.1

dan xˆi  xˆi 1   2.2

Beberapa nilai dalam interval ke – I, dipetakan ke nilai tengah dalam interval, yaitu,

2.3
Pada komputer, setiap level dinyatakan oleh codeword biner. Dengan L
level kuantisasi, setiap level dapat dinyatakan dengan B = [log2(L)], seperti
diunjutkan pada Gambar 2.1

I Made Oka Widyantara, IGAK Diafari Djuni H. 13


Lab. Sistem Komunikasi – Prak. Pengolahan Sinyal Multimedia

Gambar 2.1 Karakteristik input-output kuantiser 3-bit

Ketika rentang sinyal R diketahui, sebuah kuantiser seragam memiliki hanya satu
parameter, yaitu: jumlah level N atau step size kuantisasi , yang keduanya
direlasikan oleh,

2.4

Jumlah level N umumnya dipilih dalam bentuk bentuk 2 . Jika sinyal memiliki
fungsi kerapatan probabilitas yang simetris, yaitu |x(n)|= Xmax, atau R = 2 Xmax,
maka,

2.5

Untuk membahas efek kuantisasi, sampel-sampel terkuantisasi x^(n) dinyatakan


sebagai,

2.6

Dimana x(n) adalah sampel-sampel yang belum dikuantisasi dan e(n) adalah error
kuantisasi atau noise. Dengan memperhatikan Gambar 2.1, jika  dan B terpilih
seperti pada persamaan 2.5, maka,

I Made Oka Widyantara, IGAK Diafari Djuni H. 14


Lab. Sistem Komunikasi – Prak. Pengolahan Sinyal Multimedia

2.7

Nyatakan signal-to-quantization noise ratio sebagai,

2.8

Untuk sinyal dengan distribusi seragam dalam rentang R, variannya adalah . Jika
∆ ∆
sebuah noise diasumsikan amplitudanya terdistribuasi seragam pada (− , ),

maka:

2.9

Substitusikan persamaan 2.9 ke persamaan 2.8, maka akan diperoleh:

2.10

atau, dalam unit dB, signal-to-quantizating error dinyatakan dengan:

2.11

Jika diasumsikan bahwa rentang kuantizer adalah = 4 , maka persamaan


2.11 menjadi,

2.12
Ini menunjukan bahwa setiap penambahan bit akan memperbaiki SNR sampai 6
dB.

I Made Oka Widyantara, IGAK Diafari Djuni H. 15


Lab. Sistem Komunikasi – Prak. Pengolahan Sinyal Multimedia

2.3.2 Kuantisasi - law


The quantizer seragam hanya optimal untuk sinyal terdistribusi secara
merata. Untuk sinyal yang lebih terkonsentrasi di dekat nilai-nilai amplituda kecil,
misalnya distribusi Gaussian dengan mean nol, maka diperlukan untuk
mengkuantisasi lebih halus di amplituda kecil. Hal ini dapat dicapai dengan terlebih
dahulu menerapkan pemetaan sinyal dilanjutkan dengan kuantisasi seragam.
Pemetaannya adalah.

2.13

Gambar 2.2 menunjukan kurva-kurva y(n) versus x(n) untuk nilai yang berbeda.
Sangatlah jelas bahwa persamaan 2.13 dapat meningkatkan/mempertinggi
amplitude input yang kecil. Gambar 2.3 menunjukan distribusi level-level
kuantisasi pada kasus = 40, dan N = 8. Jika = 0, persamaan 2.13 akan
menurunkan y(n) = x(n), yaitu level-level kuantisasi dipisahkan secara seragam.
Akan tetapi untuk besar, dan |x(n)| besar,

Gambar 2.2 Karakteristik hubungan input-output kuantiser µ-law

I Made Oka Widyantara, IGAK Diafari Djuni H. 16


Lab. Sistem Komunikasi – Prak. Pengolahan Sinyal Multimedia

2.14

atau

2.15

Kecuali pada amplituda yang sangat rendah, level-level kuantisasi meningkat


secara eksponensial. Kuantisasi ini disebut dengan -law kuantisasi.

Formulasi signal-to-quantizing noise ratio untuk kuantiser µ-law, dinyatakan


dengan :

2.16

Gambar 2.3 Distribusi level-level kuantisasi untuk -law 3-bit quantizer denga =
40

I Made Oka Widyantara, IGAK Diafari Djuni H. 17


Lab. Sistem Komunikasi – Prak. Pengolahan Sinyal Multimedia

2.4 LANGKAH-LANGKAH PERCOBAAN


5.4.1 Kuantisasi Seragam
1. Buatlah fungsi fungsi dibawah ini.
function []=demo_quant(inname,outname, N);
%Membaca sinyal input
[x,fs,N0]=wavread(inname);
xmin=min(x); xmax=max(x);
Q=(xmax-xmin)/N;
disp('N0,xmin,xmax,N,Q');
disp([N0,xmin,xmax,N,Q]);

%Terapkan kuantisasi seragam pada setiap sample


xq=sign(x).*(floor((abs(x)+Q/2)/Q)*Q);

%Bandingkan kualitas suara


wavwrite(xq,fs,N0,outname);
sound(x,fs);
fprintf('\n Hit a key to continue');
pause;
sound(xq,fs);

%Plot bentuk gelombang pada seluruh perioda


t=1:length(x);
figure; plot(t,x,'r:');
hold on;
axis tight; grid on;
legend('original')

%figure; plot(t,x,'r:');
hold on; plot(t,xq,'b-');
axis tight; grid on;
legend('original','quantized')

%Plot bentuk gelombang pada perioda yang dipilih


t=5000:5100;
figure; plot(t,x(5000:5100),'r:');
hold on; plot(t,xq(5000:5100),'b-');
axis tight; grid on;

% Hitung MSE
D=x-xq;
MSE=mean(D.^2);
fprintf('\n Error antara original dan quantized =
%g\n\n',MSE)

I Made Oka Widyantara, IGAK Diafari Djuni H. 18


Lab. Sistem Komunikasi – Prak. Pengolahan Sinyal Multimedia

2. Simpanlah program ini di folder work pada matlab anda menggunakan nama “
uniform”
3. Pastikan terdapat file.wav di folder work
4. Jalankan program ini dengan memasukan inname.wav, outname.wav, dan
jumlah level N = 4 (2 bit).
Contoh :
>> uniform('mozart.wav','mozart_uniform_4.wav',4)

5. Simpan grafik yang ditampilkan dan catat nilai MSE


6. Ulangi langkah no.4 dan no. 5 dengan memasukan nilai N = 8, 16, 32, 64, 128
dan 256. Nilai-nilai ini adalah identi dengan jumlah bit yang digunakan yaitu, 3
bit, 4 bit, 5 bit, 6 bit, 7 bit dan 8 bit)
7. Ulangi langkah no.4 - no.6 dengan memasukan inname dengan file.wav yang
lain
8. Untuk setiap file.wav yang digunakan, bandingkanlah sekuen asli dan sekuen
setelah dikuantisasi dalam bentuk kualitas sound dan bentuk gelombang. Juga
analisis MSE yang dihasilkan.

5.4.2 Kuantisasi -law


1. Buatlah fungsi fungsi dibawah ini.

function []=quant_mulaw(inname,outname, N, mu);

%Membaca sinyal input


[x,fs,N0]=wavread(inname);
xmin=min(x); xmax=max(x);

magmax=max(abs(x));
xmin=-magmax; xmax=magmax;
Q=(xmax-xmin)/N;
disp('N0,xmin,xmax,N,Q,mu');
disp([N0,xmin,xmax,N,Q,mu]);

%Terapkan transform mu-law pada sampel original


y=xmax*log10(1+abs(x)*(mu/xmax))/log10(1+mu);
%Terapkan kuantisasi seragam pada nilai absolute setiap
sampel
yq=floor((y-xmin)/Q)*Q+Q/2+xmin;

I Made Oka Widyantara, IGAK Diafari Djuni H. 19


Lab. Sistem Komunikasi – Prak. Pengolahan Sinyal Multimedia

%Terapkan invers transform mu-law pada sekuen


terkuantisasi
xq=(xmax/mu)*(10.^((log10(1+mu)/xmax)*yq)-1).*sign(x);

%Bandingkan kualitas sound


wavwrite(xq,fs,N0,outname);
sound(x,fs);
fprintf('\n Hit a key to continue');
pause;
sound(xq,fs);

%Plot bentuk gelombang pada seluruh perioda


t=1:length(x);
figure; plot(t,x,'r:');
hold on; plot(t,xq,'b-');
axis tight; grid on;
legend('original','quantized')
%Plot bentuk gelombang pada perioda yang dipilih
t=2000:2200;
figure; plot(t,x(2000:2200),'r:');
hold on; plot(t,xq(2000:2200),'b-');
axis tight; grid on;
% Hitung MSE
D=x-xq;
MSE=mean(D.^2);
fprintf('\n Error antara original dan quantized =
%g\n\n',MSE)

2. Simpanlah program ini di folder work pada matlab anda menggunakan nama “
mulaw”
3. Pastikan terdapat file.wav di folder work
4. Jalankan program ini dengan memasukan inname.wav, outname.wav, jumlah
level N N > 1 dan mu-law: 1<= mu <= 255
Contoh :
>> uniform('mozart.wav','mozart_uniform_16.wav',4,
16)

5. Simpan grafik yang ditampilkan dan catat nilai MSE


6. Ulangi langkah no.4 – no.5 dengan memasukan nilai mu = 16 dan N = 8, 16, 32,
64, 128.
7. Ulangi langkah no.4 - no.6 dengan memasukan inname dengan file.wav yang
lain

I Made Oka Widyantara, IGAK Diafari Djuni H. 20


Lab. Sistem Komunikasi – Prak. Pengolahan Sinyal Multimedia

8. Untuk setiap file.wav yang digunakan:


a. Bandingkanlah sekuen asli dan sekuen setelah dikuantisasi dalam
bentuk kualitas sound dan bentuk gelombang. Juga analisis MSE yang
dihasilkan.
b. Bandingkan sekuen terkuantisasi yang telah diperoleh dengan kuantiser
seragam dan dengan kuantiser mu-law pada level kuantisasi (N) yang
sama. Kuantiser manakah yang menghasilkan error yang lebih kecil
pada nilai sinyal rendah, dan error lebih besar pada nilai sinyal besar.
(Gunakan plot bentuk gelombang untuk membandingkan)

2.5 TUGAS TAMBAHAN


1. Tambahkan teori penunjang tentang teknik kuantisasi yang digunakan
pada pengkodean citra JPEG dan pengkodean video H.26x serta MPEG
2. Hitung dan ilustrasikan level-level partisi dan level-level rekonstruksi
untuk kuantiser -law dalam rentang (-1,1) dengan jumlah level 4 dan 
=16.

I Made Oka Widyantara, IGAK Diafari Djuni H. 21


Lab. Sistem Komunikasi – Prak. Pengolahan Sinyal Multimedia

PERCOBAAN III
FORMAT GRAFIK, CITRA DAN VIDEO

3.1 TUJUAN
1. Untuk mengetahui Peta warna dalam Citra 8-bit
2. Untuk mengetahui Ruang warna dalam Grafik dan Citra
3. Untuk mengetahui Chroma Subsampling
4. Untuk mengetahui Efek aliasing karena subsampling
5. Dapat menganalisa materi tersebut menggunakan MATLAB

3.2 PERALATAN
1. Laptop/PC
2. Software MATLAB

3.3 TEORI PENUNJANG


3.3.1 Citra
Secara harafiah, citra (image) adalah gambar pada bidang dwimatra (dua
dimensi). Seperti ditunjukan pada Gambar 3.1, ditinjau dari sudut pandang
matematis, citra merupakan fungsi menerus (continue) dari intensitas cahaya pada
bidang dwimatra. Sumber cahaya menerangi objek, objek memantulkan kembali
sebagian dari berkas cahaya tersebut. Pantulan cahaya ini ditangkap oleh oleh alat-
alat optik, misalnya mata pada manusia, kamera, pemindai (scanner), dan
sebagainya, sehingga bayangan objek yang disebut citra tersebut terekam.
Citra sebagai keluaran dari suatu sistem perekaman data dapat bersifat:
1. Optik berupa foto,
2. Analog berupa sinyal video seperti gambar pada monitor televisi,
3. Digital yang dapat langsung disimpan pada suatu pita magnetik.
Citra diam (still image) adalah citra tunggal yang tidak bergerak. Gambar
3.1 adalah dua buah citra diam.

I Made Oka Widyantara, IGAK Diafari Djuni H. 22


Lab. Sistem Komunikasi – Prak. Pengolahan Sinyal Multimedia

Gambar 3.1 Citra Lena dan citra kapal

3.3.2 Citra Warna 8-Bit


Setiap pixel dari citra warna (8 bit) hanya diwakili oleh 8 bit dengan jumlah
warna maksimum yang dapat digunakan adalah 256 warna. Ada dua jenis citra
warna 8 bit : Citra warna 8 bit dengan menggunakan palet warna 256, dengan setiap
paletnya memiliki pemetaan nilai (colormap) RGB tertentu. Model ini lebih sering
digunakan. Setiap pixel memiliki format 8 bit sebagai berikut :

Tabel 3.1 format 8-bit

Bentuk kedua ini dinamakan 8 bit true color

3.3.3 Dithering
Dithering sering digunakan ketika mengkonversi gambar grayscale ke bit-
map,misalnya untuk pencetakan. Strategi utama yang dilakukan adalah mengganti
nilai pixel (dari 0 sampai 255) dengan pola yang lebih besar (misalnya 4x4)
sehingga jumlah titik yang dicetak mendekati tingkat skala abu-abu dari gambar
asli.
1. Jika pixel digantikan oleh array titik 4 x 4, intensitas dapat mendekati dari 0
(tidak ada titik) ke 16 (titik penuh).

I Made Oka Widyantara, IGAK Diafari Djuni H. 23


Lab. Sistem Komunikasi – Prak. Pengolahan Sinyal Multimedia

2. Berikan sebuah matrix dither 4x4, misalnya

kita bisa memetakan kembali nilai pixel dari 0-255 ke range baru 0-16 dengan
cara membagi nilai dengan (256/17) (dan pembulatan ke bawah).
Pendekatan dithering secara sederhana:

1. Mengganti setiap pixel oleh titik 4x4 (pixel biner). Jika Intensitas pemetakan
kembali > masukan matrix dither, letakkan sebuah titik di posisi (set ke 1)
dinyatakan di set ke 0.
Catatan : bahwa ukuran gambar dithered mungkin jauh lebih besar. Karena
setiap pixel diganti dengan array titik 4x4, gambar menjadi 16 kali lebih besar.
2. Untuk menjaga ukuran gambar: sebuah dither harus menghasilkan output pixel
dengan nilai 1 jika tingkat intensitas pemetakan kembali hanya pada posisi
pixel lebih besar dari entri matriks yang sesuai.

Gambar 3.2 Pendekatan dithering sederhana

Aliasing dalam sebuah foto, akan tampak seperti:


 Tangga-loncatan: tepi langkah atau bergerigi dari garis bersiku, misalnya, di
tepi miring huruf.

I Made Oka Widyantara, IGAK Diafari Djuni H. 24


Lab. Sistem Komunikasi – Prak. Pengolahan Sinyal Multimedia

Gambar 3.3 Tangga-loncatan


 Gambar Zooming - mengubah resolusi atau tidak memperoleh citra resolusi
yang tidak memadai, misalnya zoom digital pada kamera, pemindaian digital.
(lihat zoom pada M-file alias.m)

Gambar 3.4 Zoom dengan factor n dam sampel n resolusi


3.3.4 Colour maps
Colormap (peta) menetapkan figure colormap saat ini ke colormap yang ditentukan
menurut pemetaanya. Figur colormap mempengaruhi semua sumbu pada gambar, kecuali
jika kita mengatur sumbu colormap secara terpisah. Berikut adalah contoh syntax pada
Matlab:
colormap name
colormap default

colormap(map)
colormap(fig,map)
colormap(ax,map)

colormap(fig,'default')
colormap(ax,'default')

cmap = colormap
cmap = colormap(fig)
cmap = colormap(ax)

I Made Oka Widyantara, IGAK Diafari Djuni H. 25


Lab. Sistem Komunikasi – Prak. Pengolahan Sinyal Multimedia

Keterangan :
 colormap (fig, map) menetapkan figure colormap yang ditentukan oleh fig.
 colormap (ax, map) menetapkan peta warna pada sumbu yang ditentukan oleh
ax. Setiap sumbu dalam angka dapat memiliki colormap unik. Setelah Anda
menetapkan colormap ax, mengubah angka colormap tidak mempengaruhi
sumbu.
 colormap (fig, 'default') menetapkan fifur colormap yang ditentukan oleh fig ke
colormap default.
 colormap (ax, 'default') menetapkan sumbu colormap yang ditentukan oleh ax
ke colormap default.
 Cmap = colormap mengembalikan matriks tiga kolom triplet RGB yang
mendefinisikan figure colormap saat ini.
 Cmap = colormap (fig) mengembalikan colormap untuk figur yang ditentukan
oleh fig.
 Cmap = colormap (ax) mengembalikan colormap untuk sumbu yang ditentukan oleh
ax.

2.3.3 Chroma Subsampling


Chroma subsampling adalah sebuah pengkodean gambar dengan
menerapkan resolusi yang rendah untuk informasi chroma. Meaknisme ini
mengambil keuntungan dari sistem visual manusia, dimana mata memiliki
ketajaman lebih rendah pada perbedaan warna, dibandingkan untuk pencahayaan.
Kompresi pada chorma subsampling ini dilakuakan karena :
 Human visual system atau (HVS) ini lebih sensitif terhadap variasi dalam
kecerahan dari warna.
 Mengalokasikan lebih banyak bandwidth untuk Y, daripada untuk komponen
warna Cr / I dan Cb / Q.
 Perbedaan hasil pengurangan perbedaan visual yang hampir tidak dipahami.
 Sinyal digital sering dikompresi untuk menghemat waktu transmisi dan
mengurangi ukuran file.

I Made Oka Widyantara, IGAK Diafari Djuni H. 26


Lab. Sistem Komunikasi – Prak. Pengolahan Sinyal Multimedia

3.4 LANGKAH-LANGKAH PERCOBAAN


3.4.1 Dithering
1. Buatlah sebuah script pada konsul editor Matlab dan simpan dengan nama
“dither1” dengan parameter di, dan function repmat(di, m/4, n/4)

im = imread('lena.bmp');
di = 4*ones(4,4);
[m n] = size(im);
mat = repmat(di, m/4, n/4);
im = im / 17;
dithered = im > mat;
imshow(dithered);

2. Jalankan script tersebut dan simpan hasilnya.


3. Bandingkan hasil gambar luaran script “dither1” dan gambar asli.
4. Gunakan definisi fungsi “repmat” pada Matlab

3.4.2 Colour Maps


1. Buatlah sebuah script pada konsul editor Matlab dan simpan dengan nama
“colormap”
clear all, close all;
imRGB = imread('parrots.jpg');
figure, imshow(imRGB), title('RGB Image');

% Konversi ke 8-bit
[im8bit, cmap8bit] = rgb2ind(imRGB,256);
figure, imshow(im8bit, cmap8bit), title('24-8 Bit
Image');
figure, rgbplot(cmap8bit), title('24-8 Bit Cmap');

% Konversi ke 4-bit
[im4bit, cmap4bit] = rgb2ind(imRGB, 16);
figure, imshow(im4bit, cmap4bit), title('24-4 Bit
Image');
figure, rgbplot(cmap4bit), title('24-4 Bit Cmap');

% Gif (8bit) Cmap.


[imGIF, cmapGIF] = imread('parrots.gif');
figure, imshow(imGIF, cmapGIF), title('24-8 Bit Cmap');
figure, rgbplot(cmap8bit), title('GIF (8 Bit) Cmap');

I Made Oka Widyantara, IGAK Diafari Djuni H. 27


Lab. Sistem Komunikasi – Prak. Pengolahan Sinyal Multimedia

% Merubah Colourmap
figure, imshow(imGIF, cmapGIF), title('Jet Cmap');
colormap('jet');
% Contoh konversi pada ruang warna berbeda
hsv_image24 = rgb2hsv(imRGB); % 24-bit
figure, imshow(hsv_image24), title('HSV 24-bit Image');

cmap_hsv8 = rgb2hsv(cmapGIF); % 8-bit


figure, imshow(imGIF,cmap_hsv8), title('HSV 8-bit Cmap
Image');

figure, imshow(imRGB(:,:,1)), title('RGB R plane');


figure, imshow(imRGB(:,:,2)), title('RGB G Plane');
figure, imshow(imRGB(:,:,3)), title('RGB B Plane');
figure, imshow(hsv_image24(:,:,1)), title('HSV H
plane');
figure, imshow(hsv_image24(:,:,2)), title('HSV S
Plane');
figure, imshow(hsv_image24(:,:,3)), title('HSV V
Plane');

2. Jalankan script tersebut dan simpan hasilnya untuk dianalisis lebih lanjut.
3. Bandingkan hasil gambar luaran script “colormap” dan gambar hasil pada
matlab

3.4.3 Chroma Subsampling


1. Buatlah sebuah script pada konsul editor Matlab dan simpan dengan nama
“chromasubsampling_eg1”
clear all, close all;
% Iterasi tunggal Chroma subsampling
imRGB = imread('parrots.jpg');
figure, imshow(imRGB), title('RGB Full Image');
imYIQ = rgb2ntsc(imRGB);
% Subsample kanal I dan Q menggunakan subsampling tipe
4:2:0
imYIQsubI = imresize(imYIQ(:,:,2),0.5,'bilinear');
imYIQsubQ = imresize(imYIQ(:,:,3),0.5,'bilinear');

% Backup resa,ple citra


imYIQupsampI = imresize(imYIQsubI,2);
imYIQupsampQ = imresize(imYIQsubQ,2);

reconstruct_imYIQ= imYIQ; % Copy YIQ untuk Y;


reconstruct_imYIQ(:,:,2) = imYIQupsampI;
reconstruct_imYIQ(:,:,3) = imYIQupsampQ;

I Made Oka Widyantara, IGAK Diafari Djuni H. 28


Lab. Sistem Komunikasi – Prak. Pengolahan Sinyal Multimedia

% Rekontruksi RGB
reconstruct_imRGB =
uint8(256*ntsc2rgb(reconstruct_imYIQ));
figure, imshow(reconstruct_imRGB); title('Reconstructed
RGB Full Image');
% Menampilkan error bidang R,G,B
figure, imshow(256*abs(imRGB(:,:,1) -
reconstruct_imRGB(:,:,1))); title('Reconstructed R
Error');
figure, imshow(256*abs(imRGB(:,:,2) -
reconstruct_imRGB(:,:,2))); title('Reconstructed G
Error');
figure, imshow(256*abs(imRGB(:,:,3) -
reconstruct_imRGB(:,:,3))); title('Reconstructed B
Error');

2. Jalankan script tersebut dan simpan hasilnya untuk dianalisis lebih lanjut.
3. Bandingkan hasil gambar luaran script “chromasubsampling_eg1” dan gambar
hasil pada matlab

3.4.4 Image Aliasing errors


1. Buatlah sebuah script pada konsul editor Matlab dan simpan dengan nama
“zoom_alias”
im = imread('parrots.jpg');
zoom = 4

% Mengambil dimensi citra dan hitung pusat dan window


untuk zoom;
[n m o] = size(im)

% Pusat citra
nmid = n/2;
mmid= m/2;
xoff = n/(zoom*2);
yoff = m/(zoom*2);

%Potong bagian citra dari pusatnya yang proporsional


untuk zoom
newim = im(nmid-xoff:nmid+xoff,mmid-yoff:mmid+yoff,:);

%zoom image use imresize function


newimzoom = imresize(newim,zoom);

I Made Oka Widyantara, IGAK Diafari Djuni H. 29


Lab. Sistem Komunikasi – Prak. Pengolahan Sinyal Multimedia

% show images
figure(1)
imshow(im);
title('Original Image')
figure(2)
imshow(newim);
title('Original Image Cropped')
figure(3)
imshow(newimzoom);
title('Zoomed Image (Aliasing Artifacts)')

2. Jalankan script tersebut dan simpan hasilnya untuk dianalisis lebih lanjut.
3. Bandingkan hasil gambar luaran script “zoom_alias” dan gambar hasil pada matlab

3.4.5 Tugas Tambahan


1. Jelaskan karakterisitik sistem visual manusia yang dapat dieksploitasi untuk
kompresi warna pada citra dan video
2. Jelaskan model warna YIQ, CMY, Cielab, YUV, Ycr,Cb dan konversinya ke
model warna RGB

I Made Oka Widyantara, IGAK Diafari Djuni H. 30


Lab. Sistem Komunikasi – Prak. Pengolahan Sinyal Multimedia

PERCOBAAN IV
DASAR-DASAR TEKNIK KOMPRESI

4.1 TUJUAN
Setelah mencoba percobaan ini diharapkan praktikan dapat lebih memahami
tentang:
1. Metode coding entropy
2. Algoritma Kompreis LZW/GIF
3. Pengkodean Transformasi dasar untuk citra

4.2 PERALATAN
1. Pesonal Computer
2. Software MATLAB 6.1 Keatas

4.3 TEORI PENUNJANG


4.3.1 Kompresi Data
Kompresi data dibedakan menjadi kompresi data secara “lossless” dan
”lossy”. Kompresi data secara “lossy” adalah kompresi data yang hasil
kompresinya, apabila didekompres, akan ada sebagian data yang hilang. Dengan
kata lain, kompresi data secara “lossy” tidak dapat mendekompresi data seperti
semula, sementara kompresi data secara “loseless” adalah kebalikannya. Kriteria
pengkompresian meliputi:
 Kualitas data hasil encoding
Ukuran hasil kompresi, tidak rusaknya data ( lossy)
 Ketepatan proses dekompresi data
Data hasil dekompresi dan sebelum kompresi tetap sama (loseless)
 Kecepatan, rasio dan efisiensi proses kompresi dan dekompresi
Kompresi data merupakan penerapan Teori Informasi yang merupakan
cabang ilmu matematika. Teori ini muncul pada akhir 1940 dan dikembangkan
pertama kali oleh Claude Shannon di Laboratorium Bell. Dorongan pengembangan

I Made Oka Widyantara, IGAK Diafari Djuni H. 31


Lab. Sistem Komunikasi – Prak. Pengolahan Sinyal Multimedia

ilmu ini adalah berdasarkan beberapa pertanyaan tentang apa itu informasi,
termasuk bagaimana cara penyimpanan dan pengiriman pesan (informasi).

4.3.2 Pengkodean Entropy


Entropi secara umum dapat diinterpretasikan sebagai jumlah rata-rata
minimum dari jumlah pertanyaan ya/tidak untuk menentukan harga spesifik dari
variable x. Dalam konteks bahasan, entropi merepresentasikan batas bawah (lower
bound) dari jumlah rata-rata bit per satu nilai input – yaitu rata-rata panjang code
word digunakan untuk mengkodekan input. Secara intuitif, pengkodean entropy
dinyatakan dengan:

(4.1)
Dimana, pi adalah probabilitas simbol si yang akan terjadi.

4.3.3 Pengkodean Huffman


Kode Huffman merupakan kode panjang variabel dan optimum untuk suatu
sumber dengan model probabilitas yang telah ditentukan sebelumnya. Optimalitas
menunjukan bahwa panjang kode rata-rata dari kode Huffman bernilai hampir sama
dengan entropy sumber. Dalam pengkodean Huffman, simbol dengan probabilitas
lebih rendah diberikan kode word yang lebih panjang.
Prosedur untuk membangkitkan sehimpunan kode Huffman untuk sebuah
sumber diskrit diberikan sebagai berikut:
1. Urutkan probabilitas simbol dengan gaya menurun. Setiap simbol membentuk
simpul daun pada sebuah pohon
2. Gabungkan dua cabang dengan probabilitas terendah (dua simbol terakhir
dalam urutan daftar) untuk membentuk sebuah simpul tuggal baru yang
memiliki probabilitas penjumlahan dari dua cabang yang digabungkan.
Tugaskan “0” diatas cabang dan “1” dibawah cabang
3. Ulangi langkah 2 sampai ditemukan sebuah simpul tunggal dengan probabilitas
1, yang membentuk simpul akar pada pohon Huffman

I Made Oka Widyantara, IGAK Diafari Djuni H. 32


Lab. Sistem Komunikasi – Prak. Pengolahan Sinyal Multimedia

4. Kode Huffman untuk simbol didapatkan dengan membaca digit-digit cabang


secara sekuensial dari simpul akar sampai simpul daun akhir.

4.3.4 Algoritma Kompresi LZW


Algoritma kompresi LZW secara lengkap:
1. Kamus diinisialisasi dengan semua karakter dasar yang ada {‘A’ ’Z’ ’a’ ’z’ ’0’
’9’}.
2. W = karakter pertama dalam stream karakter.
3. K = karakter berikutnya dalam stream karakter.
4. Lakukan pengecekan apakah (W+K) terdapat dalam kamus. Jika ya, maka W
= W + K (gabungkan W dan K menjadi string baru). Jika tidak, maka:
- Output sebuah kode untuk menggantikan string W.
- Tambahkan string (W+K) ke dalam dictionary dan berikan nomor/kode
berikutnya yang belum digunakan dalam dictionary untuk string
tersebut.
- W = K.
5. Lakukan pengecekan apakah masih ada karakter berikutnya dalam stream
karakter. Jika ya, maka kembali ke langkah b. Jika tidak, maka output kode yang
menggantikan string W, lalu terminasi proses (stop).

4.4 LANGKAH-LANGKAH PERCOBAAN


4.4.1 Entropy Coding
1. Buatlah sebuah script pada konsul editor Matlab dan simpan dengan nama
“ent.m”

function H = ent(X)

X = X(:);

P = probs(X);

% Calculate entropy in bits


H = -sum(P .* log2(P));

I Made Oka Widyantara, IGAK Diafari Djuni H. 33


Lab. Sistem Komunikasi – Prak. Pengolahan Sinyal Multimedia

2. Buatlah sebuah script pada konsul editor Matlab dan simpan dengan nama
“probs.m”

function H = ent(X)

X = X(:);
P = probs(X);

% Calculate entropy in bits


H = -sum(P .* log2(P));

3. Jalankan script tersebut dengan string inputan : AAABAAABCC


>>H = ent (‘AAABAAABCC’)
>>probs(‘AAABAAABCC’)
Simpan hasil yang diperoleh, dan selanjutnya ubahlah komposisi huruf dalam
deretan huruf tersebut.
4. Berikan analisis terhadap perubahan nilai entropy dikaitkan dengan perubahan
probabilitas huruf.
5. Buatlah sebuah script pada konsul editor Matlab dan simpan dengan nama
“coin.m”
q = linspace(0, 1);

H = -(q .* log2(q) + (1-q) .* log2(1 - q));

H(isnan(H)) = 0; % Untuk mencegah persoalan dengan log2(0)

figure(1); clf;

plot(q, H);
xlabel('Coin bias, q');
ylabel('Entropy (H), bits');

6. Jalankan sript tersebut, dan simpan hasil plot yang diperoleh. Berdasarkan hasil
plot tersebut, jelaskan karakteristik pengkodean entropy.
7. Buka M-file matlab di D:Percobaan4/Kompresi/huffman.m.

I Made Oka Widyantara, IGAK Diafari Djuni H. 34


Lab. Sistem Komunikasi – Prak. Pengolahan Sinyal Multimedia

8. Hitung secara manual, jika diketahui simbol-simbol dengan frekuensi


kemunculan masing-masing adalah { 6; 2; 6; 3; 12}. Selanjutnya, jalankan script
matlab huffman.m

function CODE = huffman(p)

global CODE
CODE = cell(length(p), 1);

if length(p) > 1
p = p / sum(p);
s = reduce(p);
makecode(s, []);
else
CODE = {'1'};
end;

for i = 1:numel(CODE)
c = CODE{i};
t = c; c(c=='1') = '0'; c(t=='0') = '1';
CODE{i} = c;
end

%----------------------------------------------------------%
function s = reduce(p);

s = cell(length(p), 1);

for i = 1:length(p)
s{i} = i;
end

while numel(s) > 2


[p, i] = sort(p);
p(2) = p(1) + p(2);
p(1) = [];

s = s(i);
s{2} = {s{1}, s{2}};
s(1) = [];
end

%----------------------------------------------------------%
function makecode(sc, codeword)

global CODE

if isa(sc, 'cell')
makecode(sc{1}, [codeword 0]);
makecode(sc{2}, [codeword 1]);
else

I Made Oka Widyantara, IGAK Diafari Djuni H. 35


Lab. Sistem Komunikasi – Prak. Pengolahan Sinyal Multimedia

CODE{sc} = char('0' + codeword);


end

>> huffman([6; 2; 6; 3; 12])


Bandingkan hasil simulasi dengan perhitunagn manual!
9. Buka M-file matlab di D:Percobaan4/Kompresi/shanon_fano.m. Selanjutnya
jalankan M-file tersebut dengan inputan yang sama dengan seperti pada no.8

function codes = shannon_fano(P)

if numel(P) == 1
codes = {''};
return;
end

codes = cell(numel(P), 1);

[p, idxp] = sort(P, 2, 'descend');

diff = zeros(numel(p)-1, 1);


for i = 1:numel(p)-1
diff(i) = abs(sum(p(1:i)) - sum(p(i+1:end)));
end
[~, pivot] = min(diff);

L = p(1:pivot);
R = p(pivot+1:end);

codesL = shannon_fano(L);
codesR = shannon_fano(R);

for i = 1:pivot
codes{i} = ['0' codesL{i}];
end
for i = pivot+1:numel(p)
codes{i} = ['1' codesR{i-pivot}];
end

C = cell(size(codes));
for i = 1:numel(idxp)
C(idxp(i)) = codes(i);
end
codes = C;

>> shannon_fano ([6; 2; 6; 3; 12])

I Made Oka Widyantara, IGAK Diafari Djuni H. 36


Lab. Sistem Komunikasi – Prak. Pengolahan Sinyal Multimedia

Selanjutnya, rubahlah inputan dengan sintak sebagai berikut:


>> huffman(1:10)
>>shannon_fano(1:10)
Amati hasil yang diperoleh, dan jelaskan perbedaannya dengan Pengkodean
Huffman!
10. Buka M-file matlab di D:Percobaan4/Kompresi/ arith_vs_huffman.m.

freq = [100 1];


total = sum(freq);
probs = freq./total;

len = 1000000;
seq = randsrc(1, len, [1:numel(freq); probs]);
code = arithenco(seq, freq);

sa = numel(code);
ca = sa/len;

sh = -sum(probs .* log2(probs));
fprintf('Shannon''s limit: %f binary digits per sybmol\n\n',
sh);
fprintf('With arithmetic coding:\n');

fprintf('Compressed length: %f, ratio: %f\n\n', sa, ca);

codes = huffman(probs);
lenh = 0;
for i = 1:numel(codes)
lenh = lenh + len * probs(i) * numel(codes{i});
end

fprintf('With Huffman coding:\n');


fprintf('Compressed length: %f, ratio: %f\n\n', lenh,
lenh/len);

11. Jalankan sript ini, dan jelaskan hasil panjang kode dan rasio kompresi yang
dihasilkan pengkodean Huffman dan Shannon-Fano

4.4.2 GIF/LZW Compression


1. Buka M-file matlab di D:Percobaan4/Kompresi/ lzw/lzw_demo1.m.
Pastikan M-file matlab “norm2lzw.m” ada dalam folder ini.

I Made Oka Widyantara, IGAK Diafari Djuni H. 37


Lab. Sistem Komunikasi – Prak. Pengolahan Sinyal Multimedia

2. Jalankan script dengan beberapa string karakter yang akan dikompresi


3. Simpan hasil yang diperoleh dan selajutnya berikan analisa terhadap hasil
kompresi dari codec (coder dan decoder) GIF/LZW

%LZW DEMO

% string to compress
% str = '^WED^WE^WEE^WEB^WET';
str = 'BANANA_BANDANA';
% str = 'AAAAAAAAAAAAAAAA';

fprintf('String: %s\n')
fprintf('\n\n');

% pack it
[packed,table, alphabet]=norm2lzw(uint8(str));

fprintf('\n\n');
fprintf('Output code is:\n'), packed
fprintf('\n\n');
fprintf('Output Table (New Elements):\n');

% print table
[m n] = size(table);

for i = numel(alphabet)+1:n
fprintf('%d : %s\n', i, char(table{i}));
end

% return;
fprintf('\n\n');

fprintf('DECODING\n');

4.4.3 Teknik Kompresi Lossless dan Lossy


1. Buka M-file matlab di D:Percobaan4/Kompresi/ simpletrans.m
2. Jalankan script dengan menggunakan input berupa citra dalam format .png
im = rgb2gray(imread('lenna.png'));
[h w] = size(im);

X = im(:);
len = numel(X);

lenh = len_huffman(X);
lena = len_arith(X);
fprintf('Naively:\n');

I Made Oka Widyantara, IGAK Diafari Djuni H. 38


Lab. Sistem Komunikasi – Prak. Pengolahan Sinyal Multimedia

fprintf('Original: %d,\n Huffman: %d (Ratio: %f),\n


Arithmetic: %d (Ratio: %f)\n', ...
len*8, lenh, lenh/(len*8), lena, lena/(len*8));

X0 = double(im(1:2:end, 1:2:end));
X1 = double(im(2:2:end, 1:2:end)) - X0;
X2 = double(im(1:2:end, 2:2:end)) - X0;
X3 = double(im(2:2:end, 2:2:end)) - X0;

X = X0(:);
D = [X1(:); X2(:); X3(:)];

lenhX = len_huffman(X);
lenhD = len_huffman(D);
lenh = lenhX + lenhD;

lenaX = len_arith(X);
lenaD = len_arith(D);
lena = lenaX + lenaD;

fprintf('\n\nAfter transform:\n');
fprintf('Original: %d,\n Huffman: %d (Ratio: %f),\n
Arithmetic: %d (Ratio: %f)\n', ...
len*8, lenh, lenh/(len*8), lena, lena/(len*8));

3. Selanjutnya jalankan script M-file “simpletransquant.m”


im = rgb2gray(imread('lenna.png'));
[h w] = size(im);
Q = 16;
X = im(:);
len = numel(X);

lenh = len_huffman(X);
lena = len_arith(X);
fprintf('Naively:\n');
fprintf('Original: %d,\n Huffman: %d (Ratio: %f),\n
Arithmetic: %d (Ratio: %f)\n', ...
len*8, lenh, lenh/(len*8), lena, lena/(len*8));

% Do simple differencing transform


X0 = double(im(1:2:end, 1:2:end));
X1 = double(im(2:2:end, 1:2:end)) - X0;
X2 = double(im(1:2:end, 2:2:end)) - X0;
X3 = double(im(2:2:end, 2:2:end)) - X0;

% Quantise
X1 = round(X1 ./ Q);
X2 = round(X2 ./ Q);
X3 = round(X3 ./ Q);

X = X0(:);
D = [X1(:); X2(:); X3(:)];

I Made Oka Widyantara, IGAK Diafari Djuni H. 39


Lab. Sistem Komunikasi – Prak. Pengolahan Sinyal Multimedia

lenhX = len_huffman(X);
lenhD = len_huffman(D);
lenh = lenhX + lenhD;
lenaX = len_arith(X);
lenaD = len_arith(D);
lena = lenaX + lenaD;

fprintf('\n\nAfter transform:\n');
fprintf('Original: %d,\n Huffman: %d (Ratio: %f),\n
Arithmetic: %d (Ratio: %f)\n', ...
len*8, lenh, lenh/(len*8), lena, lena/(len*8));

% ReKonstruksi Citra
imrec = zeros(size(im));
imrec(1:2:end, 1:2:end) = X0;
imrec(2:2:end, 1:2:end) = X0 + X1*Q;
imrec(1:2:end, 2:2:end) = X0 + X2*Q;
imrec(2:2:end, 2:2:end) = X0 + X3*Q;

im = double(im);
out = [im imrec];
diff = abs(im - imrec);
figure(1); clf; sc(out);
figure(2); clf; sc(diff);

4. Amati hasil yang diperoleh dan jelaskan bagaimana kinerja codec (coder dan
decoder) kompresi sebelum dan sesudah menggunakan kuantisasi

I Made Oka Widyantara, IGAK Diafari Djuni H. 40


Lab. Sistem Komunikasi – Prak. Pengolahan Sinyal Multimedia

PERCOBAAN V
DISCRETE COSINE TRANSFORM (DCT) DAN KOMPRESI CITRA
JPEG

5.1 TUJUAN
Adapun tujuan dari percobaan ini adalah:
1. Untuk mengetahui konsep penerapan transformasi untuk mendekorelasi
intensitas piksel citra
2. Untuk mengetahui konsep Discrete Cosine Transform (DCT)
3. Untuk mengetahui Proses kompresi JPEG.

5.2 PERALATAN
Peralatan yang digunakan pada percobaan ini adalah:
1. Laptop atau Personal Computer
2. Software MATLAB minimal versi 2012a

5.3 DASAR TEORI


5.3.1 Discrete Cosine Transform (DCT)
Discrete Cosine Transform (DCT) biasa digunakan untuk mengubah sebuah
sinyal menjadi komponen frekuensi dasarnya. DCT mempunyai dua sifat utama
untuk kompresi citra dan video yaitu:
 Mengkonsentrasikan energi citra ke dalam sejumlah kecil koefisien (energi
compaction).
 Meminimalkan saling ketergantungan diantara koefisien-koefisien
(decorrelation).
Discrete Cosine Transform dari sederet n bilangan real s(x), x = 0,...,n-1,
dirumuskan sebagai berikut (Watson 1994) :

I Made Oka Widyantara, IGAK Diafari Djuni H. 41


Lab. Sistem Komunikasi – Prak. Pengolahan Sinyal Multimedia

……………..(5.1)

Setiap element dari hasil transformasi S(u) merupakan hasil dot product atau
inner product dari masukan s(x) dan basis vektor. Faktor konstanta dipilih
sedemikian rupa sehingga basis vektornya orthogonal dan ternormalisasi. DCT juga
dapat diperoleh dari produk vektor (masukan) dan n x n matriks orthogonal yang
setiap barisnya merupakan basis vektor. Delapan basis vektor untuk n = 8 dapat
dilihat pada Gambar 5.1. Setiap basis vektor berkorespondensi dengan kurva
sinusoid frekuensi tertentu.

Gambar 5.1 Delapan basis vektor untuk DCT dengan n = 8.

Barisan s(x) dapat diperoleh lagi dari hasil transformasinya S(u) dengan
menggunakan invers discrete cosine transform (IDCT), yang dirumuskan sebagai
berikut :

……….……..(5.2)

I Made Oka Widyantara, IGAK Diafari Djuni H. 42


Lab. Sistem Komunikasi – Prak. Pengolahan Sinyal Multimedia

Persamaan diatas menyatakan s sebagai kombinasi linier dari basis vektor.


Koefisien adalah elemen transformasi S, yang mencerminkan banyaknya setiap
frekuensi yang ada didalam masukan s (Watson, 1994).
Discrete Cosine Transform merepresentasikan sebuah citra dari
penjumlahan sinusoida dari magnitude dan frekuensi yang berubah-ubah. Sifat dari
DCT adalah mengubah informasi citra yang signifkan dikonsentrasikan hanya pada
beberapa koefisien DCT. Oleh karena itu DCT sering digunakan untuk kompresi
citra seperti pada JPEG.

5.3.2 Kompresi Citra JPEG


JPEG didirikan oleh komite Joint Photographic Expert Group yang
mengeluarkan standar pada tahun 1992. Seperti ditunjukan pada Gambar 5.2,
tahapan kompresi JPEG adalah sebagai berikut:

Gambar 5.2 Skema kompresi JPEG

I Made Oka Widyantara, IGAK Diafari Djuni H. 43


Lab. Sistem Komunikasi – Prak. Pengolahan Sinyal Multimedia

a. Sampling : adalah proses pengkonversian data pixel dari RGB ke YUV


(luminance, bluechrominance, redchrominance) dan dilakukan down
sampling. Biasanya sampling dilakukan per 8x8 blok, semakin banyak blok
yang dipakai makin bagus kualitas sampling yang dihasilkan
b. DCT (Discreate Cosine Transform) : hasil dari proses sampling akan
digunakan sebagai inputan proses DCT, dimana blok 8x8 pixels akan diubah
menjadi fungsi matriks cosinus
c. Quantization : proses membersihkan koefisien DCT yang tidak penting untuk
pembentukan image baru. Hal ini yang menyebabkan JPEG bersifat lossy.
d. Entropy Coding : proses penggunaan algoritma entropy, misalnya Huffman
atau RLE untuk mengkodekan koefisien hasil proses DCT yang akan
mengeliminasi nilai-nilai matriks yang bernilai nol secara zig-zag order.

5.4 LANGKAH-LANGKAH PERCOBAAN


5.4.1 Discrete Cosine Transform (DCT) 1-D
1. Buka M-file matlab di D:Percobaan5/ DCT1Deg.m

close all
clear all

i = 1:8 % dimensi vektor


f(i) = 100% pengaturan fungsi

figure(1) % plot f
stem(f);

% perhitungan DCT
D = dct(f);

figure(2) % plot D

stem(D);

% membangkitkan fungsi basis


bases = dctmtx(8);
for j = 1 : 8
figure
stem(bases(j,:));
end

% Mengkonstruksi DCT dari fungsi basis

I Made Oka Widyantara, IGAK Diafari Djuni H. 44


Lab. Sistem Komunikasi – Prak. Pengolahan Sinyal Multimedia

D1 = bases*f';
figure % plot D1
stem(D1);

2. Pada script diatas, set f(i) = 100%, yang berarti seluruh vektor 1-dimensi
berukuran 8 bernilai sama. Jalankan program dan amati hasil luaran DCT 1-D .
3. Dengan cara yang sama, ganti f(i), dengan 5%, 70% dan 80%. Selanjutnya
jelaskan dan analisis:
a. Konsep dasar dari DCT didasarkan pada plot yang dikeluarkan oleh
DCT (figure 1 dan figure 2)
b. Bagaimanakah konsep pembangkitan fungsi basis pada DCT
c. Bagaimanakah hasil konstruksi DCT setelah dikalikan dengan fungsi
basis. Bandingkan hasil plot figure 2 dan figure 11.

5.4.2 Discrete Cosine Transform (DCT) 2-D


1. Buka M-file matlab di D:Percobaan5/ dct2basis.m dan dct2manual.m
2. Dapatkan beberapa intuisi untuk 2D DCT. Periksa dct2basis.m dan lihat
bagaimana gambar 2D dasar yang dibangun dari vektor basis 1-D. Buka dan
jalankan dct2manual.m yang memvektorisasi matriks 2-D, sehingga DCT 2-D
merupakan perkalian matriks sederhana.
%dct2basis.m

N = 8;
A = dctmtx(8);
A = A';
offset = 5;

basisim = ones(N*(N+offset))*0.5;
B=zeros(N,N,N,N);
for i=1:N
for j=1:N
B(:,:,i,j)=A(:,i)*A(:,j)';
end;
end;

for i=1:N
for j=1:N
minb = min(min(B(:,:,i,j)));
maxb = max(max(B(:,:,i,j)));
rangeb = maxb - minb;

I Made Oka Widyantara, IGAK Diafari Djuni H. 45


Lab. Sistem Komunikasi – Prak. Pengolahan Sinyal Multimedia

if rangeb == 0
minb =0;
rangeb = maxb;
end;
imb = B(:,:,i,j) - minb;
imb = imb/rangeb;

iindex1 = (i-1)*N + i*offset-1;


iindex2 = iindex1 + N -1;

jindex1 = (j-1)*N + j*offset -1;


jindex2 = jindex1 + N -1;

basisim(iindex1: iindex2, jindex1:jindex2) =


imb;
end;
end;

figure(1)
imshow(basisim)

figure(2)
dispbasisim = imresize(basisim, 4, 'bilinear');
imshow(dispbasisim);

% dct2manual.m

close all;
im = im2double(rgb2gray(imread('lenna.png')));
im = imresize(im, 1/16);
[h w] = size(im);

D1 = dctmtx(h);
D2 = zeros(h*h, h*h);
idx = 1;
for i = 1:h
for j = 1:h
outer = D1(:, j) * D1(:, i)';
D2(:, idx) = outer(:);
idx = idx + 1;
end
end

% Manual dct2
F = D2 * im(:);
F = reshape(F, h, h)

% Proper dct2
Fmatlab = dct2(im)

I Made Oka Widyantara, IGAK Diafari Djuni H. 46


Lab. Sistem Komunikasi – Prak. Pengolahan Sinyal Multimedia

diff = abs(F - Fmatlab);


sum(diff(:))

% Inverse:
frec = D2' * F(:);
frec = reshape(frec, h, h);

diff = abs(frec - im);


sum(diff(:))

3. Pada konsul matlab amati luaran hasil perhitungan manual (F) dan fungsi dari
matlab (Fmatlab). Berikan penjelasan terhadap nilai yang diperoleh

5.4.3 Compaction Energi pada DCT


1. Buka M-file matlab di D:Percobaan5/ dctenergy.m
2. Jalankan dctenergy.m. Amatilah, untuk berbagai gambar, distribusi energi
dalam pada 2D DCT transformasi, dan selanjutnnya jelaskan :
a. Pada plot gambar, dimanakah yang tertinggi?. Kemudian apakah
frekuensinya sesuai ?
b. Bagaimanakah manfaatnya untuk kompresi gambar?
c. Cobalah truncating koefisien DCT dan merekonstruksi gambar. Apa
efek yang dimiliki pada gambar hasil rekonstruksi?

close all;
RGB = imread('autumn.tif');
I = rgb2gray(RGB);

figure(1); imshow(I);
J = dct2(I);

% Truncate
f = 40;
if 1
JT = zeros(size(J));
JT(1:f, 1:f) = J(1:f, 1:f);
J = JT;
end
figure(2);
J(0 == J) = 1e-10;

I Made Oka Widyantara, IGAK Diafari Djuni H. 47


Lab. Sistem Komunikasi – Prak. Pengolahan Sinyal Multimedia

E = log(abs(J));
imagesc(E);

figure(3);
imagesc(idct2(J)); colormap gray;

5.4.4 Kompresi DCT berbasis DCT


1. Buka M-file matlab di D:Percobaan5/ dctdemo.m
2. Jalankan script dan akan muncul GUI sebagai berikut

3. Rubahlah koefision DCT, dan amati dan jelaskan perubahan kualitas citra
rekonstruksi dan nilai perbedaannya dengan citras asli (MSE)

5.4.5 Tugas Tambahan


1. Jelaskan teknik transformasi selain DCT
2. Jelaskan secara detail skema kompresi citra JPEG

I Made Oka Widyantara, IGAK Diafari Djuni H. 48


Lab. Sistem Komunikasi – Prak. Pengolahan Sinyal Multimedia

PERCOBAAN 6
ESTIMASI GERAK PADA PENGKODEAN VIDEO

6.1 TUJUAN
 Mempelajari teknik estimasi gerak pada pengkodean video prediktif
 Mempelajari teknik pencarian gerak menggunakan teknik Exhaustive Block
Matching Algorithm (EBMA)

6.2 PERALATAN
 Program matlab 6.1 keatas

6.3 TEORI PENUNJANG


6.3.1 Definisi dan Notasi
Gambar 6.1 menunjukan encoder interframe umum yang digunakan pada
seluruh codec video. Elemen utama dari codec video adalah estimasi dan
kompensasi gerak, pengkodean transformasi, kuantisasi, VLC dan rate control.
Error prediksi (inter-mode) atau citra input (intra mode) dibagi-bagi menjadi
makroblok (MB) 16  16 piksel. MB kemudain dibagi-bagi lagi menjadi blok-blok
berukuran 8  8 piksel untuk dikodekan transform (DCT), dikuantisasi dan
dikodekan VLC untuk selanjutnya diransmisikan.

Gambar 6.1 Enkoder video generik

I Made Oka Widyantara, IGAK Diafari Djuni H. 49


Lab. Sistem Komunikasi – Prak. Pengolahan Sinyal Multimedia

Percobaan ini difokuskan pada simulasi estimasi gerak 2-D antara dua frame
yang diketahui sebagai ψ(x,y,t1) dan ψ(x,y,t2). Vektor gerak (MV) di x antara waktu
t1 dan t2 dinyatakan sebagai perpindahan titik ini dari t1 ke t2. Selanjutnya, frame di
waktu t1 bdisebut sebagai anchor frame dan waktu t2 disebut sebagai tracked frame.
Bergantung pada penerapannya, anchor frame dapat berada sebelum atau sesudah
waktu tracked frame. Seperti ditunjukkan pada Gambar 6.2, persoalan disebut
sebagai forward motion estimation, ketika t1 < t2, dan disebut sebagai backward
motion estimation, ketika t1 > t2. Untuk menyederhanakan notasi, maka sebutlah
ψ1(x) dan ψ2(x) masing-masing untuk anchor frame dan tracked frame. Secara
umum, medan gerak dinyatakan sebagai d(x;a), dimana a = [a1, a2,…..,aL]T adalah
sebuah vector yang mengandung seluruh parameter gerak. Maka fungsi pemetaan
dapat dinyatakan sebagai w(x;a) = x + d(x;a). Permasalahan estimasi gerak adalah
mengestimasi vektor parameter gerak a.

Gambar 6.2 Forward dan Backward motion estimation

6.3.2 Kriteria Estimasi Gerak berbasis Displaced Frame Difference


Kriteria yang paling popular untuk estimasi medan gerak adalah jumlah error
minimum antara nilai-nilai luminance pada setiap pasang titik di frame ψ1 dan
frame ψ2. Untuk x pada ψ1 dipindahkan ke w(x;a) dalam ψ2, fungsi sasaran dapat
ditulis sebagai:

I Made Oka Widyantara, IGAK Diafari Djuni H. 50


Lab. Sistem Komunikasi – Prak. Pengolahan Sinyal Multimedia

EDFD  a     2  w  x; a    1  x 
p
(6.1)
x

dimana, ٨ adalah domain seluruh piksel dalam ψ1, dan p adalah bilangan positif.
Jika p = 1, error disebut dengan mean absolute difference (MAD), dan ketika p =
2, error disebut dengan mean square error (MSE). Error frame, e(x;a) = ψ2(w(x;a))
- ψ1(x) disebut dengan displaced frame difference (DFD).
Kondisi yang diperlukan untuk meminimalkan EDFD adalah menghilangkan
gradientnya. Untuk kasus p = 2, gradiennya adalah:
EDFD d  x 
a x

 2  2  w  x; a    1  x 
a

 2  w  x; a   (6.2)

dimana
 d x d x d x 
T

 ........
d  a1 a2 aL 
 
a  d y d y d y 
 ........ 
 a1 a2 aL 

6.3.3 Algoritma Pencocokan Blok (Block Matching)


Pada bagian ini akan dijelaskan algoritma estimasi gerak yang dikembangkan
menggunakan representasi gerak berbasis blok. Asumsikan, Bm adalah blok frame
ke-m, dan M adalah jumlah blok, M = {1, 2, ……, M}. Partisi frame kedalam blok-
blok harus memenuhi:

B m  , Bm  Bn  0,
 mn (6.3)
mM

Secara teoritis, sebuah blok dapat berbentuk polygon atau triangular. Dalam
prakteknya bentuk kotak banyak digunakan oleh sebagian besar codec video
standar. Untuk kasus paling sederhana, pergerakan dalam setiap blok diasumsikan
konstan yaitu seluruh blok memiliki translasi yang sama. Skema ini disebut dengan
block-wise translational model. Pada percobaan ini, hanya mempertimbangkan
kasus yang sederhana dimana permasalahan estimasi gerak adalah untuk
mendapatkan motion vector (MV) tunggal untuk setiap blok. Tipe algoritma ini
secara kolektif dinyatakan sebagai Block Matching Algorithm (BMA).

I Made Oka Widyantara, IGAK Diafari Djuni H. 51


Lab. Sistem Komunikasi – Prak. Pengolahan Sinyal Multimedia

6.3.4 Exhaustive Search Block Matching Algorithm (EMBA)


Untuk sebuah blok Bm dalam frame ψ1, estimasi gerak dilakukan dengan
menentukan sebuah blok matching B’m di frame ψ2, sehingga error diantara kedua
blok ini minimal. Vektor perpindahan dm diantara posisi spasial dari kedua blok ini
adalah MV dari blok ini. Dengan model translasi berbasis-blok, w(x;a) = x + dm, x
 Bm, error pada persamaan (6.1) dapat ditulis sebagai:

E  d m , m  M       x  d    x 
p
2 m 1 (6.4)
mM xBm

Untuk estimasi MV pada blok individu, error pada sebuah blok dinyatakan
dengan:

Em  d m      x  d    x 
p
2 m 1 (6.5)
xBm

Satu cara untuk menghitung dm yang mampu meminumkan persamaan error diatas
adalah dengan menggunakan exhaustive search dan metode ini dikenal dengan
exhaustive block matching algorithm (EBMA). Seperti diilustrasikan pada Gambar
6.3, EBMA menentukan optimal dm untuk sebuah blok dalam anchor frame ψ1
adalah dengan membandingkannya dengan seluruh kandidat blok B’m dalam
tracked frame ψ2 dalam area pencarian yang telah ditetapkan dan mendapatkan satu
dengan error minimal. Perpindahan antara dua blok adalah MV yang telah
diestimasi.

Gambar 6.3 Prosedur pencarian EBMA

I Made Oka Widyantara, IGAK Diafari Djuni H. 52


Lab. Sistem Komunikasi – Prak. Pengolahan Sinyal Multimedia

Daerah pencarian adalah simetris dengan memperhatikan blok sekarang yaitu


sampai RX piksel arah horizontal (kiri dan kanan) dan sampai RY piksel arah vertikal
(atas dan bawah). Jika rentang dinamik gerak adalah sama pada arah horizontal dan
vertical, maka RX = RY = R. Akurasi pencarian ditentukan oleh stepsize pencarian.
Normalnya stepsize adalah sama digunakan baik pada arah horizontal maupun
vertical. Cara paling sederhana, stepsize adalah satu piksel, dan ini dikenal sebagai
integer-pel accuracy search
Perhatikan Gambar 6.3, asumsikan ukuran blok adalah N  N piksel, rentang
pencarian R piksel arah horizontal dan vertical. Dengan stepsize 1 piksel, maka
jumlah total blok matching kandidat untuk setiap frame pada frame anchor adalah
(2R+1)2. Jika jumlah operasi untuk menghitung MAD untuk setiap estimasi
kandidat adalah N2, maka jumlah operasi untuk mengestimasi MV setiap blok
adalah (2R+1)2N2. Untuk frame berukuran M  M, maka terdapat (M/N)2 blok.
Jumlah operai total untuk sebuah frame adalah M2(2R+1)2N2.

6.3.5 Fractional Accuracy Search Block Matching Algorithm


Untuk meningkatkan akurasi gerak, sebuah pencarian dengan akurasi pecahan
piksel dapat dilakukan. Permasalahannnya dengan penggunaan stepsize pecahan
adalah tidak adanya titik-titik sampel dalam tracked frame yang bersesuaian dengan
titik-titik sample di anchor frame. Sebuah teknik interpolasi bilinear digunakan
untuk menyisipkan titik-titik sample tersebut.
Untuk merealisasikan sebuah step size dengan 1/K piksel, tracked frame
diinterpolasi dengan factor K. Sebagai contoh, untuk K = 2, skema estimasi gerak
ditunjukan pada Gambar 6.4, dan metode ini dikenal sebagai half-pel accuracy
search.

I Made Oka Widyantara, IGAK Diafari Djuni H. 53


Lab. Sistem Komunikasi – Prak. Pengolahan Sinyal Multimedia

Gambar 6.4 Pencocokan block dengan akurasi setengah piksel

Berikut adalah algoritma prediksi akurasi setengah piksel menggunakan


interpolasi bilinear.

Posisi piksel-integer (full-pixel)


Posisi piksel-setengah (half-pxel)

(6.6)

6.4 Langkah-langkah Percobaan


1. Sebelum menjalankan percobaan, baca terlebih dahulu script m-file yang
terdapat di folder work pada Matlab. Pastikan difolder work terdapat:
EBMA_main.m, EBMA_integer.m, EBMA_half.m dan
MV_function.m. Disamping itu, pastikan juga file frame target dan frame
referensi tersedia di folder ini.
2. EBMA_main.m adalah program utama untuk membentuk estimasi gerak
menggunakan EBMA. EBMA_main.m akan memanggil fungsi
EBMA_integer(..) atau EBMA_half(…) untuk mengeksekusi EBMA

I Made Oka Widyantara, IGAK Diafari Djuni H. 54


Lab. Sistem Komunikasi – Prak. Pengolahan Sinyal Multimedia

akurasi integer atau half-pel. EBMA_main.m juga akan memanggil fungsi


MV_function(…) untuk memplot medan gerak yang sudah diestimasi.
3. Seluruh program Matlab dapat di lihat menggunakan Matlab Editor.
4. Pada EBMA_main.m, beberapa variable dapat dirubah untuk membentuk
estimasi medan gerak diantara dua frame video, seperti inputan frame target dan
frame referensi yang digunakan, serta jumlah rentang pencarian arah vertical
dan horizontal dalam estimasi gerak.

6.4.1 Exhaustive Block Matching Algorithm (EBMA) dengan akurasi


pencarian full piksel (integer-pel accuracy search)

1. Buka program EBMA_main.m, dan sebelum dijalankan memperhatikan


varibel-variabel berikut :
a. Gunakan dua file masukan: ‘foreman66.Y’ dan ‘foreman69.Y’

frame1=fread(fopen('foreman66.y'),[dx,dy]);
frame2=fread(fopen('foreman69.y'),[dx,dy]);

b. Panggil fungsi EBMA_integer() dan gunakan preset block size (=16)


and search range (=16)

bsize=16; vsrange=16; hsrange=16;

%for integer pel EBMA:


[mvy,mvx,pimg]=EBMA_integer(img1, img2, dy, dx,
bsize, vsrange, hsrange, mvy, mvx, pimg);

%for half-pel BEMA


%[mvy,mvx,pimg]=EBMA_half(img1, img2, dy, dx,
bsize, vsrange, hsrange, mvy, mvx, pimg);

c. Simpan perubahan yang telah dilakukan, dan proses seluruh frame dan
catat/print screen running time, PSNR serta properties data di workspace
matlab

I Made Oka Widyantara, IGAK Diafari Djuni H. 55


Lab. Sistem Komunikasi – Prak. Pengolahan Sinyal Multimedia

>>EBMA_main

d. Selanjutnya, simpan predicted image menjadi “pimg1”, dengan


mengetikkan di command window Matlab

>>pimg1=pimg;

2. Analisis kualitas visual frame prediksi (menggunakan mtode mean opinion skor
(MOS)), PSNR dan running time.

6.4.2 Exhaustive Block Matching Algorithm (EBMA) dengan akurasi


pencarian setengah piksel (half-pel accuracy search)

1. Sekarang kembali buka EBMA_main.m, dan ubahkan variabel-variabel


berikut:
a. Aktifkan baris yang memanggil fungsi EBMA_half(…) dan non aktifkan
fungsi EBMA_integer(..)

bsize=16; vsrange=16; hsrange=16;

%for integer pel EBMA:


%[mvy,mvx,pimg]=EBMA_integer(img1, img2, dy,
dx, bsize, vsrange, hsrange, mvy, mvx, pimg);

%for half-pel BEMA


[mvy,mvx,pimg]=EBMA_half(img1, img2, dy, dx,
bsize, vsrange, hsrange, mvy, mvx, pimg);

b. Simpan perubahan yang telah dilakukan, dan proses seluruh frame dan
catat/print screen running time, PSNR serta properties data di workspace
matlab

>>EBMA_main

I Made Oka Widyantara, IGAK Diafari Djuni H. 56


Lab. Sistem Komunikasi – Prak. Pengolahan Sinyal Multimedia

c. Selanjutnya, simpan predicted image menjadi “pimg2”, dengan


mengetikkan di command window Matlab,

>>pimg2=pimg;

2. Analisis kualitas visual frame prediksi (menggunakan mtode mean opinion skor
(MOS)), PSNR dan running time
3. Bandingkan hasil yang diperoleh dengan hasil ketika menggunakan fungsi
EBMA_integer(), metode manakah yang lebih akurat (diukur dari nilai
PSNR dan running time.

6.4.3 Optimasi Exhaustive Block Matching Algorithm (EBMA) dengan


akurasi pencarian full piksel (integer-pel accuracy search)
1. Edit program EBMA_main,m, dengan merubah beberapa variable beikut :
a. Ubahlah rentang pencarian arah horizontal menjadi “8”. Juga ubah fungsi
EBMA_half(…) kembali ke EBMA_integer(…) untuk menjalankan
EBMA dalam akurasi integer.

bsize=16; vsrange=16; hsrange=8;

%for integer pel EBMA:


mvy,mvx,pimg]=EBMA_integer(img1, img2, dy, dx,
bsize, vsrange, hsrange, mvy, mvx, pimg);

%for half-pel BEMA


%[mvy,mvx,pimg]=EBMA_half(img1, img2, dy, dx,
bsize, vsrange, hsrange, mvy, mvx, pimg);

b. Simpan perubahan yang telah dilakukan, dan proses seluruh frame dan
catat/print screen running time, PSNR serta properties data di workspace
matlab

>>EBMA_main

I Made Oka Widyantara, IGAK Diafari Djuni H. 57


Lab. Sistem Komunikasi – Prak. Pengolahan Sinyal Multimedia

c. Simpan predicted image menjadi “pimg3”, dengan mengetikkan di


command window Matlab

>>pimg3=pimg;

d. Bandingkanlah hasil yang diperoleh dengan metoda EBMA_integer()


dengan rentang pencarian =16. Manakah metoda yang lebih akurat.

6.5 Tugas Tambahan


1. Tambahkan teori penunjang untuk memperjelas konsep tentang teknik
kompreso video generic.
2. Untuk EMBA dengan akurasi pencarian integer, hitunglah jumlah total
operasi per frame dan jumlah operasi per detik jika laju frame yang
digunakan aalah 30 fps.
Catatan: Resolusi frame masukan dapat dilihat di workspace matlab.

I Made Oka Widyantara, IGAK Diafari Djuni H. 58

Anda mungkin juga menyukai