PERANCANGAN DEBLOCKING FILTER UNTUK APLIKASI KOMPRESI VIDEO MENGGUNAKAN STANDAR MPEG4/H.264 Andreas Sutanto, S.T.,
[email protected], Dani Fitriyanto, M.T.,
[email protected], Trio Adiono, Ph.D.,
[email protected], Laboratorium IC Design Gedung LPPM ITB, Jalan Ganesha 10, Bandung
ABSTRAK Teknologi broadband dewasa ini berkembang sangat pesat, seiring dengan meningkatnya kebutuhan manusia akan sarana telekomunikasi yang canggih, cepat, dan handal. Salah satu sarana telekomunikasi yang sedang dikembangkan saat ini adalah transmisi video digital, yang memungkinkan penggunanya untuk melakukan komunikasi dalam dua bentuk, yaitu gambar dan suara, dengan mempergunakan berbagai jaringan transmisi, seperti LAN, WiFi, GSM, CDMA, dan sebagainya. Untuk mendapatkan komunikasi yang efisien dan real time, salah satu sarana yang sangat diperlukan adalah kompresi video, sehingga proses transmisi gambar dapat dilakukan pada bit rate yang rendah dengan frame rate yang cukup tinggi. Sebagai akibat dari kompres data tersebut akan muncul efek distorsi dan hal ini sangat berpengaruh pada kualitas gambar yang dihasilkan. Pada penelitian ini akan dirancang sebuah modul Deblocking Filter untuk mengurangi efek distorsi tersebut dengan menggunakan standar kompresi video MPEG4/H.264. Kata kunci: MPEG4/H.264, deblocking filter, macroblock, boundary strength, parameter kuantisasi
1.
PENDAHULUAN
Dewasa ini, teknologi telekomunikasi mengalami perkembangan yang sangat pesat. Kebutuhan manusia akan sarana telekomunikasi yang canggih, cepat, dan handal, menjadi kebutuhan yang tidak dapat ditawar-tawar lagi. Salah satu sarana telekomunikasi yang banyak dikembangkan adalah transmisi video digital. Sarana ini memungkinkan terjadinya komunikasi dalam dua bentuk, yaitu gambar dan suara. Salah satu standar yang banyak digunakan dalam transmisi video digital adalah MPEG4/H.264. Dalam standar ini, terdapat salah satu modul yang bernama Deblocking Filter. Modul ini berfungsi untuk menghilangkan efek distorsi yang timbul dari kompresi yang dilakukan dalam standar ini. Dalam makalah ini, akan disajikan proses perancangan modul Deblocking Filter, mulai dari eksplorasi proses di dalamnya hingga penyusunan block diagram. Dari block diagram ini, selanjutnya dipergunakan dalam proses desain perangkat keras menggunakan VHDL dan nantinya dapat diimplementasikan, baik pada FPGA maupun desain chip rangkaian terintegrasi (IC).
2.
PENGENALAN DEBLOCKING FILTER
2.1. Deblocking Filter dalam MPEG4/H.264 CoDec Deblocking filter merupakan elemen baru dalam standar kompresi video MPEG. Dalam standar MPEG sebelum MPEG4/H.264 (MPEG1, MPEG2, MPEG4/H.261, MPEG4/H.263), elemen ini tidak dijumpai. Fungsi utama dari Deblocking Filter adalah untuk mengurangi distorsi blocking pada setiap decoded macroblock. Pada encoder, deblocking filter diaplikasikan setelah inverse transform dan sebelum proses rekonstruksi dan penyimpanan macroblock untuk prediksi akan datang. Sementara, pada decoder, aplikasi deblocking filter dilakukan setelah inverse transform dan sebelum proses rekonstruksi dan penampilan macroblock. Proses lengkap dari MPEG4/H.264 codec ditunjukkan pada gambar 2.1 dan 2.2.
Prosiding Konferensi Nasional Teknologi Informasi & Komunikasi untuk Indonesia 3-4 Mei 2006, Aula Barat & Timur Institut Teknologi Bandung
434
2.2. Proses Filtering
intra coded dan tidak mengandung coded coefficient, sementara p dan q menggunakan gambar referensi yang berbeda atau jumlah gambar referensi yang berbeda atau memiliki nilai-nilai
GAMBAR 2.1. MPEG4/H.264 ENCODER
GAMBAR 2.3. URUTAN PROSES FILTERING PADA SUATU MACROBLOCK
GAMBAR 2.2. MPEG4/H.264 DECODER
Proses filtering diaplikasikan pada sisi vertikal maupun horizontal dari suatu makroblock 4x4, kecuali pada sisi batas slice (tiap gambar video dikodekan ke dalam satu slice atau lebih), dengan urutan sebagai berikut: 1. Filter 4 batas vertikal pada komponen luma (dengan urutan a, b, c, d pada gambar 2.3). 2. Filter 4 batas horizontal pada komponen luma (dengan urutan e, f, g, h pada gambar 2.3). 3. Filter 2 batas vertikal pada komponen chroma (dengan urutan i, j pada gambar 2.3). 4. Filter 2 batas horizontal pada komponen chroma (dengan urutan k,l pada gambar 2.3).
GAMBAR 2.4. SAMPEL_SAMPEL YANG BERDEKATAN PADA BATAS VERTIKAL DAN HORIZONTAL
Setiap proses filtering mempengaruhi hingga 3-byte sampel pada kedua sisi batas (vertikal dan horizontal). Pada gambar 2.4 diperlihatkan 4-byte sampel pada tiap sisi batas vertikal dan horizontal, p dan q. Penentuan jenis filtering yang akan digunakan dipengaruhi oleh 2 hal, yaitu boundary strength (bS) dan gradient sampel gambar antar batas. Nilai boundary strength berkisar antara 0 – 4 dan ditentukan berdasarkan ketentuan-ketentuan, yang digambarkan dalam diagram alir pada gambar 2.5. Jika p dan atau q intra coded dan batas antara keduanya merupakan batas macroblock, maka filter terkuat diaplikasikan (bS = 4). Jika p dan q intra coded dan batas antara keduanya bukan merupakan batas macroblock, maka filter yang relatif kuat diaplikasikan (bS = 3). Jika p dan q, keduanya, tidak intra coded, sementara p dan q mengandung coded coefficient, maka filter dengan kekuatan medium diaplikasikan (bS = 2). Jika p dan q, keduanya tidak
GAMBAR 2.5. DIAGRAM ALIR PENENTUAN NILAI BOUNDARY STRENGTH
motion vector yang berbeda oleh sebuah sampel luma atau lebih, maka filter yang relative lemah diaplikasikan (bS = 1). Selain keempat kondisi tersebut, maka filter tidak diaplikasikan (bS = 0).
Prosiding Konferensi Nasional Teknologi Informasi & Komunikasi untuk Indonesia 3-4 Mei 2006, Aula Barat & Timur Institut Teknologi Bandung
435
Syarat proses filtering diaplikasikan pada suatu kelompok sampel adalah: 1. bS > 0. 2. |p0 – q0| < α dan |p1 – p0| < β dan |q1 – q0| < β. α dan β merupakan nilai threshold yang didefinisikan di dalam standar MPEG4/H.264, di mana nilainya ditentukan oleh parameter kuantisasi (QP), FilterOffsetA, dan FilterOffsetB.
diakses dan disimpan kembali dari dan ke dalam memori pada proses filter ke- 1, 5, 25, dan 29. Demikian juga untuk data-data yang lain pada macroblock (data 1 – 23). Jumlah akses memori, pada proses ini, tentu saja akan sangat banyak dan memerlukan bandwidth memori yang tinggi. Hal ini kurang efektif mengingat proses pengaksesan dan penyimpanan suatu data dari dan ke dalam memori (SRAM) memerlukan waktu yang cukup lama.
Implementasi filter adalah sebagai berikut: 1. bS ∈ {1 ,2, 3} Filter 4-tahap diaplikasikan dengan input p1, p0, q0, dan q1, menghasilkan output p0’ dan q0’. Untuk komponen luma: Jika |p2 – p0| < β, maka filter 4-tahap yang lain diaplikasikan dengan input p2, p1, p0, dan q0, menghasilkan output p1’. Jika |q2 – q0| < β, maka filter 4-tahap yang lain diaplikasikan dengan input q2, q1, q0, dan p0, menghasilkan output q1’. 2. bS = 4 Jika |p2 – p0| < β dan |p0 – q0| < round(α/4) dan blok luma: p0’ dihasilkan dari filter 5-tahap dengan input p2, p1, p0, q0, dan q1. p1’ dihasilkan dari filter 4-tahap dengan input p2, p1, p0, dan q0. p2’ dihasilkan dari filter 5-tahap dengan input p3, p2, p1, p0, dan q0. selain itu, p0’ dihasilkan dari filter 3-tahap dengan input p1, p0, dan q1. Jika |q2 – q0| < β dan |p0 – q0| < round(α/4) dan blok luma: q0’ dihasilkan dari filter 5-tahap dengan input q2, q1, q0, p0, dan p1. q1’ dihasilkan dari filter 4-tahap dengan input q2, q1, q0, dan p0. q2’ dihasilkan dari filter 5-tahap dengan input q3, q2, q1, q0, dan p0. selain itu, q0’ dihasilkan dari filter 3-tahap dengan input q1, q0, dan p1.
Konfigurasi lain yang lebih efektif untuk urutan pemrosesan data ini adalah advanced filtering order yang diperlihatkan pada gambar 3.3. Konfigurasi ini mengurangi akses data dari dan ke memori, sehingga untuk setiap data blok hanya mengakses data dari dan ke memori sebanyak 2 kali. Sebagai contoh, untuk data "0" akan diakses dari memori pada proses ke- 1 dan 25 dan disimpan kembali setelah proses ke- 2 dan 26. Demikian juga untuk data-data yang lain pada macroblock.
3.
Paralelisasi yang dilakukan di sini adalah memparalel proses yang dilakukan pada blok luma dan blok chroma. Jumlah proses pada blok luma adalah dua kali lipat jumlah proses pada blok chroma dan proses yang terjadi pada kedua blok ini adalah independen, sehingga proses pada blok chroma dapat dilakukan bersamaan dengan proses pada blok luma. Dengan paralelisasi ini, waktu yang dibutuhkan untuk pemrosesan seluruh data dapat direduksi menjadi hanya sebesar waktu yang diperlukan untuk pemrosesan data luma saja.
DESAIN DEBLOCKING FILTER
3.1. Urutan Pemrosesan Data Sesuai dengan konfigurasi dasar pada gambar 2.3, urutan pemrosesan data pada deblocking filter adalah sesuai dengan urutan yang digambarkan pada gambar 3.1. Pada konfigurasi ini, setiap data pada macroblock perlu diakses dan disimpan kembali dari dan ke dalam memori sebanyak 4 kali. Sebagai contoh, data block "0" (pada gambar 3.2) akan
Untuk lebih mengoptimalkan konfigurasi pemrosesan data ini, digunakan urutan seperti pada gambar 3.4. Konfigurasi ini dinamakan 2-D Processing Order. Dengan urutan ini, pengaksesan data dapat dioptimalkan sehingga hanya perlu 1 kali pengaksesan dan penyimpanan data dari dan ke memori. Sebagai contoh, untuk data "0", data diambil dari memori pada proses ke-1, lalu hasilnya digunakan kembali secara berturut-turut untuk proses ke-2 dan ke-3 dan selanjutnya disimpan ke dalam buffer untuk selanjutnya digunakan dalam proses ke11. Setelah proses ke-11, barulah data "0" hasil filtering disimpan kembali ke dalam memori. 3.2. Pemilihan dan Pengembangan Desain Dari ketiga konfigurasi urutan pemrosesan data di atas, dipilih konfigurasi yang terakhir untuk urutan pemrosesan data. Konfigurasi ini dipilih karena memiliki akses memori paling sedikit, sehingga proses filtering menjadi lebih cepat. Dari konfigurasi tersebut, selanjutnya dilakukan paralelisasi proses untuk lebih mengoptimalkan waktu pemrosesan data.
Prosiding Konferensi Nasional Teknologi Informasi & Komunikasi untuk Indonesia 3-4 Mei 2006, Aula Barat & Timur Institut Teknologi Bandung
436
3.3. Diagram Blok Desain Dalam mem-paralel proses dalam deblocking filter ini, dilakukan pemisahan blok desain yang dipergunakan untuk pemrosesan data luma dan data chroma. Diagram blok untuk kedua proses ini ditunjukkan pada gambar 3.5.
GAMBAR 3.1. URUTAN PEMROSESAN DATA MENURUT KONFIGURASI DASAR
GAMBAR 3.2. PENAMAAN BLOCK DATA LUMA DAN CHROMA
GAMBAR 3.3. ADVANCED FILTERING ORDER
GAMBAR 3.4. 2-D PROCESSING ORDER
Diagram blok untuk pemrosesan data luma terdiri atas beberapa bagian sebagai berikut: 1. sram • Lebar data: 32 bit. • Lebar bus data: 32 bit. • Jumlah baris data: 32 baris (sram 0) and 64 baris (sram 1). • Fungsi: menerima dan menyimpan data dari memori eksternal dan juga menyediakan data untuk proses filtering. 2. BUF • Ukuran: 4 x 32 bit. • Fungsi: penyimpan data sementara pada saat proses filtering. 3. MT • Struktur: 16 x register 32 bit • Fungsi: mentranspose suatu blok sebelum dilakukan proses filtering vertical. 4. MUX6to1 • Fungsi: memilih sumber input P. 5. MUX3to1 • Fungsi: memilih sumber input Q. 6. DB LUMA PROC • Fungsi: melakukan proses kombnasional berupa perhitungan untuk proses filtering. 7. sram out • Lebar data: 32 bit. • Lebar bus data: 32 bit. • Jumlah baris data: 32 baris (sram out 0) and 64 baris (sram out 1) • Fungsi: menerima dan menyimpan data dari DB LUMA PROC dan mengirim data ke memori eksternal setelah proses filtering selesai. 8. controller • Fungsi: mengatur seluruh proses filtering dan aliran data dari satu modul ka modul yang lain. Sementara itu, diagram blok untuk pemrosesan data chroma adalah analog dengan fungsi setiap modul pada arsitektur untuk data luma, hanya saja jumlah baris data sram dan sram out untuk arsitektur ini lebih kecil, yaitu 32 baris untuk setiap sram dan sram out. 3.4. Struktur Memori
Prosiding Konferensi Nasional Teknologi Informasi & Komunikasi untuk Indonesia 3-4 Mei 2006, Aula Barat & Timur Institut Teknologi Bandung
437
Struktur memori yang dipergunakan dalam desain deblocking filter ini terdiri atas memori input (SRAM) dan output (SRAM OUT) untuk setiap blok luma dan chroma. Setiap memori input maupun output terdiri atas 2 jenis, yang pertama untuk
GAMBAR 3.5. DIAGRAM BLOK DESAIN DEBLOCKING FILTER
External RAM
SRAM 0
SRAM 1
SRAM OUT 0
SRAM OUT 1
SRAM 2
DB LUMA PROC
SRAM 3
SRAM OUT 2
SRAM OUT 3
DB CHROMA PROC
GAMBAR 3.6. STRUKTUR MEMORI
menyimpan data macroblock dari frame sebelumnya, sementara yang lain untuk menyimpan data macroblock dari frame sekarang. Secara lengkap, struktur memori ini diperlihatkan pada gambar 3.6. 4.
(a) DIAGRAM BLOK LUMA
KESIMPULAN
Dalam proses desain deblocking filter, diperlukan suatu konfigurasi dalam urutan pemrosesan data-data dalam macroblock. Konfigurasi inilah yang menentukan waktu yang akan dikonsumsi oleh proses filtering di dalam desain ini. Dengan menggunakan konfigurasi desain yang optimal dalam pengaksesan memori dan melakukan proses paralelisasi, akan diperoleh suatu desain deblocking filter dengan waktu proses yang optimal pula. 5.
REFERENSI
[1] Sheng, Bin; Gao, Wen; and Wu, Di , "AN IMPLEMENTED ARCHITECTURE OF DEBLOCKING FILTER FOR H.264/AVC", China. [2] Richardson, Iain E. G., "H.264 and MPEG-4 VIDEO COMPRESSION", John Wiley and Sons Ltd., England, 2003.
(b) DIAGRAM BLOK CHROMA
Prosiding Konferensi Nasional Teknologi Informasi & Komunikasi untuk Indonesia 3-4 Mei 2006, Aula Barat & Timur Institut Teknologi Bandung
438