Tugas 2
description
Transcript of Tugas 2
TUGAS IIIBLOCK MATCHING ALGORITHMS
Mata Kuliah Jaringan Telekomunikasi Multimedia
Oleh :
I KADEK SUSILA SATWIKANIM 1491761028
PROGRAM MASGISTERPROGRAM STUDI TEKNIK ELEKTRO-MANAJEMEN BISNIS TELEKOMUNIKASI
PROGRAM PASCASARJANAUNIVERSITAS UDAYANA
DENPASAR2014
Kebutuhan akan file-file multimedia, seperti video, dalam jumlah yang besar,
membutuhkan ruang penyimpanan yang besar. Oleh karena itu, diperlukan sebuah sistem
kompresi yang sesuai agar menghasilkan rasio kompresi yang cukup besar namun tidak
mengurangi kualitas video tersebut. Kompresi merupakan salah satu cara efektif mengatasi
masalah dalam penyimpanan dan pentransmisian suatu data video, dan untuk meningkatkan
efektifitas dari kompresi video tersebut diperlukanlah salah satu metode dimana metode
tersebut akan sangat mempengaruhi kualitas hasil dari pengkompresian video tersebut.
Motion Estimation dan Compensation adalah proses untuk menentukan pergerakan suatu
objek pada sekuens video digital.
Motion Estimation adalah suatu proses untuk menentukan pergerakan suatu objek
pada sekuens video. Umumnya motion tersebut diwujudkan dengan vektor motion pada titik
yang dipilih di dalam frame sekarang dihubungkan dengan frame lain yang disebut dengan
frame referensi. Motion Estimation juag merupakan teknik kompresi Interframe yang
memprediksi sebuah frame dari frame sebelumnya (reference frame), dengan mengestimasi
gerakan blok–blok antar frame tersebut. Frame dibagi menjadi blok–blok yang tidak overlap.
Tiap blok dibandingkan dengan blok–blok berukuran sama, pada frame sebelumnya dengan
melakukan pencocokan blok (block matching).
Motion Compensation menjadi proses pembangkit sebuah prediksi pada sebuah frame
video dengan memindahkan frame referensi. secara umum, prediksi dibentuk pada suatu blok
(blok 8x8) atau macroblok (blok 16x16) data. Penggantian biasanya dilakukan secara konstan
dan garis lurus di atas keseluruhan blok yang sedang diprediksi. Seperti pergantian
digambarkan oleh vektor gerak (motion vektor) dengan dua komponen sesuai dengan
pergeseran sepanjang arah X dan Y.komponen vektor gerak pada umumnya adalah dengan
pergantian-pergantian pixel, biasanya dilakukan pada ketelitian pada sub-pixel. Pergantian
sub-pixel dilakukan dengan menyaring frame referensi dengan penyaringan interpolasi yang
tepat atau cocok.
Pencocokan blok (Block Matching) target dengan blok–blok kandidat pada daerah
pencarian dilakukan dengan besar step tertentu, yang merupakan besar pergeseran dalam
pencarian blok. Jumlah blok kandidat, selain ditentukan oleh ukuran daerah pencarian,
ditentukan pula oleh besarnya step.
1. Exhaustive Search
Algoritma ini dikenal juga dengan nama Full Search, dimana algoritma ini
menghitung cost function pada setiap kemungkinan lokasi pada search window. Sebagai
hasilnya dimana telah ditemukan kemungkinan lokasi terbaik dan memberikan nilai PSNR
tertinggi diantara algoritma block matching lainnya. Kekurangan dari algoritma Exhaustive
Search adalah semakin besar search window yang didapat maka semakin banyak
computations yang dibutuhkan.
2. Three Step Search
Algoritma ini bekerja dimulai dengan langkah mencari lokasi di tengah-tengah dan
menetapkan step size S=4, biasanya untuk pencarian dengan parameter value = 7. Kemudian
mencari delapan lokasi +/- S pixel disekitar lokasi (0,0). Dari sembilan lokasi pencarian
dipilihlah satu lokasi yang memberikan cost terendah dan menjadikannya sebagai titik
pencarian baru. Kemudian ditetapkan step size terbaru S=S/2, dan dilakukan langkah
pencarian yang sama seperti sebelumnya hingga dua pengulangan lagi hingga S=1. Pada poin
tersebut ditemukan lokasi dengan cost function terendah dan macro block pada lokasi
tersebut adalah pilihan terbaik. Perhitungan motion vector tersebut disimpan untuk
ditransmisikan.
3. Simple And Efficient Three Step Search
Algoritma simple and efficient three step search merupakam pengembangan lainnya
dari algoritma three step search yang mengeksploitasi asumsi dari unimodal error surface.
Point utama dari dibalik algoritma ini adalah untuk unimodal surface tidak boleh ada dua
minimum pada arah berlawanan dan karenanya 8 poin pola pencarian yang sudah ditetapkan
TSS dapat dirubah kedalam bentuk ini dan menghemat perhitungan. Algoritma masih
memiliki tiga langkah seperti TSS tapi pengembangannya adalah tiap langkah memiliki lebih
dari dua fase. Area pencarian dibagi menjadi empat kuadran dan algoritma pengecekan dibagi
menjadi 3 lokasi yaitu A, B dan C. A merupakan sumber sedangkan B dan C adalah S=4
yang berlokasi jauh dari A dalam arah orthogonal. Tergantung pada bobot tertentu distribusi
antara tiga pada fase kedua dipilih beberapa poin tambahan. Aturan untuk menentukan
kuadran pencarian untuk fase kedua adalah ketika dipilih poin untuk mengecek dalam fase
kedua, akan ditemukan lokasi dengan bobot terendah dan ditetapkan sebagai sumber.
Kemudian merubah step size serupa dengan TSS dan mengulang prosedur SES diatas hingga
S=1. Lokasi dengan bobot terendah kemudian ditandai motion vector dan ditransmisikan.
Walaupun algoritma ini menyimpan banyak perhitungan bila dibandingkan dengan TSS, hal
ini tidak diterima secara luas dengan dua alasan yaitu error surface tidak ketat unimodal dan
karenanta PSNR yang didapat kurang baik dibanding TSS dan terdapat algoritma lainnya
Four Step Search yang telah dipublikasi setahun sebelumnya yang menyajikan perhitungan
hemat dibandingkan TSS dan memberikan PSNR yang lebih baik.
4. New Three Step Search
New Three Step Search merupakan peningkatan dari hasil Three Step Search dengan
menyediakan skema pencarian pusat bias dan memiliki ketentuan untuk half way stop untuk
mengurangi perhitungan cost. Algoritma ini merupakan salahsatu dari algoritma tercepat
yang diakui dan sering digunakan untuk implementasi standar seperti MPEG 1 dan H.261.
Pada langkah pertama 16 point diperiksa dengan tujuan untuk mencari sumber untuk bobot
terendah menggunakan cost function. Penambahan lokasi pencarian, 8 berjarak S=4 (sama
seperti TSS) dan 8 lainnya berjarak S=1 dari sumber pencarian. Jika cost terendah adalah
pada sumber maka pencarian dihentikan dan motion vector di set (0,0). Jika bobot terendah
adalah pada salahsatu dari 8 lokasi dengan S=1, maka rubah sumber pencarian ke poin
tersebut dan cek untuk bobot yang berdekatan dengan poin tersebut. Lokasi yang
memberikan bobot terendah adalah pendekatan terbaik dan motion vector di set pada lokasi
tersebut. Di sisi lain, jika bobot terendah setelah langkah pertama adalah salahsatu dari 8
lokasi dengan S=4, maka diikuti procedure normal dari TSS.
5. Four Step Search
Serupa dengan New Three Step Search, Four Step Search (4SS) juga menggunakan
sistem pencarian bias terpusat dan memiliki ketentuan penghentian setengah jalan. Four Step
Search menetapkan pola tetap yaitu S=2 untuk langkah pertama, tidak
mempedulikanbagaimana nilai dari parameter pencarian p tersebut, sehingga akan terlihat
sembilan lokasi dalam window 5x5. Jika bobot terendah ditemukan pada pusat pencarian
window maka pencarian dilanjutkan ke langkah empat. Jika bobot terendah ada di salahsatu
dari delapan lokasi kecuali pusat, maka lokasi tersebut dijadikan pusat baru dan berpindah ke
langkah kedua, dimana pencarian window masih pada lebar 5x5. Tergantung pada dimana
letak bobot terendah, pencarian mungkin berakhir pada pengecekan bobot pada 3 atau 5
lokasi.
6. Diamond Search
Algoritma diamond search sama seperti algoritma four step search, tapi pola pencarian
poin berubah dari bentuk kotak ke bentuk diamond dan tidak ada batasan dari jumlah langkah
yang dapat ditempuh oleh algoritma tersebut. Diamond search menggunakan dua tipe berbeda
dari fixed pattern yaitu Large Diamond Search Pattern (LDSP) dan Small Diamond Search
Pattern (SDSP). Sama seperti pada FSS, langkah pertama menggunakan LDSP dan jika bobot
terendah ada pada pusat lokasi maka kita lanjutkan ke langkah empat. Langkah konsekuensi,
kecuali langkah terakhir juga sama dan menggunakan LDSP. Langka terakhir menggunakan
SDSP disekitar sumber pencarian baru dan lokasi dengan bobot terendah adalah pilihan yang
terbaik. Sebagai pola pencarian tidak terlalu kecil atau terlalu besar dan fakta bahwa tidak ada
batasan untuk jumlah langkah, algoritma ini dapat menemukan minimum global yang sangat
akurat. Hasil akhirnya akan melihat PSNR yang mendekati ES sedangkan beban komputasi
harus secara signifikan berkurang.
7. Adaptive Rood Patern Search
Algoritma adaptive rood patern search menggunakan fakta bahwa motion dalam
frame pada umumnya adalah koheren. Misalnya jika macro block di sekitar current macro
block bergerak dalam arah tertentu maka ada kemungkinan besar bahwa current macro block
juga akan memiliki motion vector yang sama. Algoritma motion vector dari macro block
bergerak ke kiri untuk memprediksi motion vector dirinya sendiri. Sebagai tambahan untuk
pengecekan lokasi yang ditunjukkan dengan prediksi motion vector, juga dilakukan
pengecekan pada jalur pola pendistribusia poin. Pencarian pola jalur selalu dilakukan pada
langkah pertama, dimana secara langsung ditempatkan pencarian pada area dimana terhadap
kemungkinan terbesar untuk menemukan matching block yang baik. Poin yang memiliki
bobot terendah akan menjadi sumber dari langkah pencarian subsequent dan pola pencarian
dirubah ke SDSP. Prosedurnya adalah tetap melakukan SDSP hingga poin dengan bobot
paling sedikit ditemukan pada pusat SDSP. Peningkatan lebih lanjut pada algoritma dapat di
cek untuk Zero Motion Prejudgment, menggunakan pencarian mana yang berhenti
dipertengahan jika poin dengan bobot paling sedikit sudah berada pada pusat dari jalur pola.
Keuntungan utama dari algoritma ini dibandingkan dengan diamond search adalah jika
prediksi motion vector adalah (0,0) tidak akan memboroskan waktu komputasi dalam
melakukan LDSP, lebih baik langsung menggunakan SDSP. Selanjutnya jika prediksi motion
vector berjauhan dari pusat maka komputasi ARPS disimpan lagi dengan langsung
melangkah ke sekitarnya dan menggunakan SDSP dimana DS memerlukan waktu untuk
melakukan LDSP.
Code Matlab :
% This script uses all the Motion Estimation algorithms written for the% final project and save their results.% The algorithms being used are Exhaustive Search, Three Step Search, New% Three Step Search, Simple and Efficient Search, Four Step Search, Diamond% Search, and Adaptive Rood Pattern Search.%%% Aroh Barjatya% For DIP ECE 6620 final project Spring 2004 close allclear all % the directory and files will be saved based on the image name% Thus we just change the sequence / image name and the whole analysis is% done for that particular sequence imageName = 'caltrain';mbSize = 16;p = 7; for i = 0:30 imgINumber = i; imgPNumber = i+2; if imgINumber < 10 %imgIFile = sprintf('C:/FastME/caltrain/gray/caltrain%d.ras', imageName, imgINumber); imgIFile = sprintf('C:/FastME/%s/gray/%s00%d.ras',imageName, imageName, imgINumber); elseif imgINumber < 100 imgIFile = sprintf('C:/FastME/%s/gray/%s0%d.ras',imageName, imageName, imgINumber); %imgIFile = sprintf('C:/FastME/caltrain/gray/caltrain%d.ras',imageName, imgINumber); end if imgPNumber < 10 %imgPFile = sprintf('C:/FastME/caltrain/gray/caltrain%d.ras', imageName, imgPNumber); imgPFile = sprintf('C:/FastME/%s/gray/%s00%d.ras',imageName, imageName, imgPNumber); elseif imgPNumber < 100 %imgPFile = sprintf('C:/FastME/caltrain/gray/caltrain%d.ras',imageName, imgPNumber); imgPFile = sprintf('C:/FastME/%s/gray/%s0%d.ras',imageName, imageName, imgPNumber); end imgI = double(imread(imgIFile)); imgP = double(imread(imgPFile));
imgI = imgI(:,1:352); %imgI = imgI(:,1:176); imgP = imgP(:,1:352); %imgP = imgP(:,1:176); % Exhaustive Search [motionVect, computations] = motionEstES(imgP,imgI,mbSize,p); imgComp = motionComp(imgI, motionVect, mbSize); ESpsnr(i+1) = imgPSNR(imgP, imgComp, 255); EScomputations(i+1) = computations; % Three Step Search [motionVect,computations ] = motionEstTSS(imgP,imgI,mbSize,p); imgComp = motionComp(imgI, motionVect, mbSize); TSSpsnr(i+1) = imgPSNR(imgP, imgComp, 255); TSScomputations(i+1) = computations; % Simple and Efficient Three Step Search [motionVect, computations] = motionEstSESTSS(imgP,imgI,mbSize,p); imgComp = motionComp(imgI, motionVect, mbSize); SESTSSpsnr(i+1) = imgPSNR(imgP, imgComp, 255); SESTSScomputations(i+1) = computations; % New Three Step Search [motionVect,computations ] = motionEstNTSS(imgP,imgI,mbSize,p); imgComp = motionComp(imgI, motionVect, mbSize); NTSSpsnr(i+1) = imgPSNR(imgP, imgComp, 255); NTSScomputations(i+1) = computations; % Four Step Search [motionVect, computations] = motionEst4SS(imgP,imgI,mbSize,p); imgComp = motionComp(imgI, motionVect, mbSize); SS4psnr(i+1) = imgPSNR(imgP, imgComp, 255); SS4computations(i+1) = computations; % Diamond Search [motionVect, computations] = motionEstDS(imgP,imgI,mbSize,p); imgComp = motionComp(imgI, motionVect, mbSize); DSpsnr(i+1) = imgPSNR(imgP, imgComp, 255); DScomputations(i+1) = computations; % Adaptive Rood Patern Search [motionVect, computations] = motionEstARPS(imgP,imgI,mbSize,p); imgComp = motionComp(imgI, motionVect, mbSize); ARPSpsnr(i+1) = imgPSNR(imgP, imgComp, 255); ARPScomputations(i+1) = computations; endsubplot (2,1,1);plot(ESpsnr,'k','linewidth',2);hold on;plot(TSSpsnr,'b','linewidth',2);hold on;plot(SESTSSpsnr,'r','linewidth',2);hold on;plot(NTSSpsnr,'g','linewidth',2);hold on;plot(SS4psnr,'y','linewidth',2);hold on;
plot(DSpsnr,'c','linewidth',2);hold on;plot(ARPSpsnr,'m','linewidth',2);hold on;grid on;xlabel('Frame Number');ylabel('PSNR');title('Perbandingan Permfomasi PSNR dan Computations Algoritma Block Matching','fontsize',12); subplot (2,1,2);plot(EScomputations,'k','linewidth',2);hold on;plot(TSScomputations,'b','linewidth',2);hold on;plot(SESTSScomputations,'r','linewidth',2);hold on;plot(NTSScomputations,'g','linewidth',2);hold on;plot(SS4computations,'y','linewidth',2);hold on;plot(DScomputations,'c','linewidth',2);hold on;plot(ARPScomputations,'m','linewidth',2);hold on;grid on;xlabel('Frame Number');ylabel('Computations');legend('TSS','SESTSS','NTSS','SS4','DS','ARPS'); %save dsplots2 DSpsnr DScomputations ESpsnr EScomputations TSSpsnr ... %TSScomputations SS4psnr SS4computations NTSSpsnr NTSScomputations ... %SESTSSpsnr SESTSScomputations ARPSpsnr ARPScomputations
Tabel Nilai Computations
Frame Numbe
rARPS DS ES NTSS SESTSS SS4 TSS
1 9,758182
18,56182
207,4109
21,68 16,09091
19,70909
23,77091
2 9,818182
18,40364
207,4109
21,75636
16,05818
19,62364
23,72545
3 9,869091
18,46545
207,4109
21,65455
16,05455
19,63091
23,72364
4 9,763636
18,51273
207,4109
22,12182
16,12909
19,67636
23,69091
5 9,918182
18,68 207,4109
21,85636
16,03818
19,79091
23,69455
6 9,725455
18,61818
207,4109
22,17818
16,05273
19,74182
23,73273
7 9,970909
18,68364
207,4109
22,60727
16,03091
19,78545
23,72545
8 10,17636
18,84182
207,4109
22,83455
15,99455
19,90545
23,8
9 9,898182
18,72364
207,4109
23,17273
15,97818
19,82545
23,73818
10 10,03455
18,70364
207,4109
22,48 15,96909
19,83273
23,71636
11 9,956364
18,74909
207,4109
22,69636
16,01273
19,84545
23,74182
12 10 18,47273
207,4109
23,01273
15,99091
19,85273
23,70182
13 9,972727
18,32727
207,4109
23,45273
15,98727
19,85818
23,76545
14 10,16727
18,37455
207,4109
24,11818
15,92545
19,65818
23,78
15 10,16182
18,38727
207,4109
24,22909
15,94182
19,46545
23,72909
16 10,31273
18,33455
207,4109
24,59091
16,04727
19,48182
23,71091
17 10,08727
18,03273
207,4109
24,27273
16,16364
19,46182
23,77455
18 10,3 17,97273
207,4109
25,2 16,18727
19,35091
23,73091
19 10,10727
18,33636
207,4109
26,08545
16,06909
19,41273
23,70727
20 9,987273
18,28727
207,4109
25,76 16,07818
19,36545
23,70545
21 10,07091
18,31818
207,4109
24,36545
16,00545
19,46727
23,66909
22 10,10727
18,08364
207,4109
23,68 15,96182
19,65636
23,69091
23 10,06909
18,20909
207,4109
23,64364
15,95455
19,65455
23,71636
24 10,10545
18,23636
207,4109
23,06 15,98909
19,69091
23,72364
25 9,914545
18,31091
207,4109
22,72364
16,01273
19,71818
23,70545
26 10,01818
18,23818
207,4109
22,74909
16,04727
19,70364
23,71636
27 10,19818
18,29455
207,4109
22,16 16,05636
19,57818
23,68364
28 10,11818
18,18364
207,4109
22,25091
15,98 19,57091
23,73455
29 10,02727
18,16 207,4109
21,83455
15,94545
19,67455
23,73636
30 10,02182
17,92909
207,4109
22,08545
15,99273
19,61091
23,76545
31 9,84 17,89273
207,4109
21,62 15,97455
19,55273
23,74
Tabel Nilai PSNR
Frame Numbe
rARPS DS ES NTSS SESTSS SS4 TSS
128,9537
429,4048
929,5160
128,7085
926,8844
629,3965
527,0570
4
229,1335
529,1421
129,3725
628,6483
426,6325
629,1388
526,7766
3
329,3871
329,3678
329,6156
928,9353
126,6943
329,3454
426,8867
7
429,0318
929,0404
529,4598
128,8760
826,5861
629,1651
926,9531
4
528,9107
229,1979
729,3532
228,6744
326,7039
829,1916
227,0914
6
628,9253
128,9718
129,2793
628,3418
726,6540
728,9443
626,9773
6
728,3640
128,3464
328,5708
927,6969
726,2811
828,4031
926,6421
8
827,9356
727,9793
628,2617
527,4677
725,8699
827,9352
826,4284
5
9 27,286327,3657
527,6255
526,9084
6 25,866727,4065
326,2225
7
1026,7731
427,0029
527,2599
126,5976
325,5241
327,0163
325,7044
9
1126,9887
227,2518
527,4808
726,8083
925,7405
5 27,247725,7952
9
1227,2936
527,3728
327,8084
527,0823
325,9723
627,4941
826,0782
6
1327,3945
627,3750
627,5510
526,6532
1 25,862227,4337
826,1804
1
14 27,2527,3519
827,5481
1 26,390725,7910
727,3606
926,2344
6
1527,1337
527,1638
827,4225
7 26,303525,8866
927,1601
726,2048
4
1627,1624
927,2242
127,3819
326,5912
326,0939
727,2381
9 26,3879
1727,1267
1 27,2622 27,528926,6149
2 26,114327,2881
626,5214
8
18 27,275827,2829
727,5409
126,5623
726,3322
327,3313
726,7261
1
1927,3394
627,4408
927,7139
7 26,606926,6996
327,4829
526,9190
4
20 28,041528,1361
328,3258
226,9691
827,0110
928,1846
827,2402
7
2127,6279
5 27,690427,9674
726,7664
326,3291
927,7160
326,7541
9
2227,0864
927,2072
627,4016
526,4468
325,9065
127,2036
826,1330
9
2326,9792
126,9441
427,1829
526,1769
525,6226
226,9393
725,7042
4
2426,7470
926,6333
626,9689
4 26,246625,3398
526,6663
625,5996
9
2526,8606
227,0589
327,3141
426,5613
925,5927
727,0800
525,7485
2
2626,6661
626,8320
327,1752
826,5113
825,4606
826,9312
925,7119
5
2726,8765
427,0085
127,1804
7 26,626225,4804
927,0062
325,7597
1
2826,5336
326,6402
226,8073
526,4120
6 25,258626,6351
6 25,581
2926,5549
826,6445
227,0298
426,2452
725,2476
226,6198
225,6250
4
3025,8830
925,9653
726,4019
925,8931
624,6934
825,9776
325,0139
6
3126,4390
426,4688
726,7352
326,3251
724,9761
926,4220
925,5683
2
Dari gambar diatas dapat dilihat untuk nilai PSNR terbaik dihasilkan oleh metode
Exhaustive Search. Ini dikarenakan metode Exhaustive Search melakukan seleksi secara
menyeluruh dengan mencari semua kemungkinan poin di dalam window pencarian hingga
mendapatkan hasil terbaik. Akan tetapi jika dilihat dari grafik computations, metoda
Exhaustive Search memilik nilai yang sangat tinggi dengan kata lain waktu yang diperlukan
untuk proses seleksi itu sangat lama. Jika window pencarian semakin besar maka algoritma
Exhaustive Search akan menghasilkan nilai computations yang tinggi atau waktu seleksi
semakin lama. Gambar dibawah ini menunjukkan grafik selain algoritma Exhaustive Search.
Jika dilihat gambar diatas terlihat algoritma Four Step Search, Diamond Search dan
Adaptive Rood Patern Search mendekati nilai PSNR Exhaustive Search dimana Exhaustive
Search menghasilkan nilai PSNR yang paling tinggi diantara keenam algoritma lainnya. Ini
berarti ketiga algoritma tersebut memiliki kemampuan pencarian yang hampir sama dengan
Exhaustive Search. Sedangkan untuk computations, algoritma Adaptive Rood Patern Search
memiliki nilai computations paling kecil. Ini berarti jika dikaitkan nilai PSNR dan
Computations maka dapat disimpulkan algoritma Adaptive Rood Patern Search merupakan
algoritma terbaik dalam proses block matching. Pada algoritma New Three Step Search,
dimana pada frame awal menghasilkan nilai computations lebih kecil daripada TSS namun
antara frame ke 15 sampai 20 mulai mengalami peningkatan nilai. Peningkatan tersebut
mungkin disebabkan karena pada proses pencarian poin dengan bobot terkecil pada frame
nomor 15 hingga 20, bobot terendah setelah langkah pertama terdapat pada salahsatu dari 8
lokasi dengan S=4, maka diikuti langkah berikutnya adalah mengikuti procedure normal dari
TSS.