AV1 Next Generation Codec: CDEF Directional Correction Filter



Diposting oleh Monty (monty@xiph.org, cmontgomery@mozilla.com). Diterbitkan 28 Juni 2018.

Jika seseorang belum membaca artikel sebelumnya ... AV1 adalah codec video universal baru yang dikembangkan oleh Alliance for Open Media. Aliansi ini mengambil basis codec VPX dari Google, Thor dari Cisco dan Daala dari Mozilla / Xiph.Org. Codec AV1 lebih unggul dalam kinerja untuk VP9 dan HEVC, yang membuatnya menjadi codec bukan besok, tetapi lusa. Format AV1 bebas dari royalti apa pun dan selamanya akan tetap demikian dengan lisensi lisensi.

Artikel ini disusun sebagai artikel kedua dari serangkaian artikel yang menjelaskan secara rinci fungsi AV1 dan teknologi baru yang mendasari dan pertama kali digunakan dalam produksi. Artikel sebelumnya di Xiph.org menjelaskan fungsi prediksi kecerahan Chroma dari Luma (CfL) . Hari ini kita akan berbicara tentang filter koreksi arah terbatas (Constrained Directional Enhancement Filter). Jika Anda selalu bertanya-tanya apa yang diperlukan untuk menulis codec, kencangkan sabuk pengaman Anda dan bersiaplah untuk pendidikan!

Filter dalam AV1


Di hampir semua codec video, filter korektif digunakan untuk meningkatkan kualitas subjektif dari materi output.

Dengan "filter korektif" yang saya maksud adalah metode yang tidak harus menyandikan informasi gambar atau meningkatkan efisiensi pengkodean objektif, tetapi mereka meningkatkan hasilnya dengan beberapa cara. Filter korektif harus digunakan dengan hati-hati karena biasanya kehilangan beberapa informasi - dan karena alasan ini, filter tersebut terkadang dianggap sebagai metode curang yang tidak dapat diterima sehingga hasilnya terlihat lebih baik daripada yang sebenarnya.

Tapi ini tidak adil. Filter koreksi dirancang untuk menghindari atau menghilangkan artefak tertentu yang tidak terlihat oleh metrik objektif, tetapi jelas bagi mata manusia. Dan bahkan jika kita menganggap filter sebagai bentuk penipuan, codec video yang bagus masih membutuhkan semua "cheat" yang praktis dan efektif yang dapat digunakan.

Filter dibagi menjadi beberapa kategori. Pertama, mereka bisa normatif atau non-normatif . Filter normatif adalah bagian yang diperlukan dari codec; tanpa itu, tidak mungkin untuk memecahkan kode video dengan benar. Filter non-standar adalah opsional.

Kedua, filter berbeda di tempat aplikasi. Ada filter pra-pemrosesan (preprocessing) yang diterapkan pada data input sebelum pengkodean, filter pasca-pemrosesan (pasca pemrosesan) yang diterapkan pada data output setelah pengodean selesai, serta filter dalam loop (loop filter) yang diintegrasikan ke dalam proses pengkodean. Filter pra-pemrosesan dan pasca-pemrosesan biasanya tidak standar dan tidak akan disertakan dalam codec. Dan loop filter adalah normatif menurut definisi. Ini adalah bagian dari codec; mereka digunakan dalam proses optimasi pengkodean dan diterapkan ke frame referensi atau untuk pengkodean antar-frame.



AV1 menggunakan tiga filter korektif peraturan. Yang pertama adalah filter de-blocking untuk menghapus "blocking" - artefak yang jelas di sepanjang tepi blok yang disandikan. Meskipun DCT relatif cocok untuk mengompresi energi dalam gambar alami, masih cenderung mengakumulasi kesalahan di tepi blok. Jika Anda ingat, menghilangkan artefak ini adalah alasan utama mengapa Daala menggunakan transformasi tersusun. Tetapi AV1 adalah codec yang lebih tradisional dengan batas blok yang ketat. Akibatnya, diperlukan filter de-blocking tradisional di sini untuk menghaluskan artefak di tepi blok.


Contoh artefak pada batas blok dalam codec blok DCT tradisional. Kesalahan ini terutama terlihat.

Yang terakhir dari tiga filter adalah filter Loop Restoration. Ini terdiri dari dua filter yang dapat dikonfigurasi dan diganti: filter Wiener dan filter Mandiri. Ini adalah dua filter konvolusional yang mencoba membangun kernel untuk mengembalikan sebagian kualitas gambar input asli yang hilang. Mereka biasanya digunakan untuk pengurangan kebisingan dan / atau koreksi di tepi blok. Dalam kasus AV1, mereka melakukan tugas pengurangan kebisingan umum, menghilangkan kebisingan DCT dasar melalui blur yang dapat disesuaikan.

Di antara mereka ada filter koreksi arah terbatas (Constrained Directional Enhancement Filter, CDEF), yang akan kita bicarakan. Seperti filter loopback, ini menghilangkan artefak dan kebisingan dasar pada sambungan, tetapi tidak seperti filter loopback, ini adalah filter arah. Tidak seperti kebanyakan filter, ini tidak berlaku untuk semua yang ada dalam satu baris, tetapi secara khusus menemukan batas blok. Oleh karena itu, CDEF sangat menarik: ini adalah filter directional pertama yang praktis dan bermanfaat yang digunakan dalam pengkodean video.

Jalan yang panjang dan berliku


Sejarah CDEF belum berkembang dengan mudah. Ini adalah jalan panjang dengan belokan, jalur samping dan jalan buntu. CDEF menyatukan beberapa makalah penelitian, yang masing-masing memberikan ide atau inspirasi untuk filter akhir dalam AV1.

Seluruh titik transformasi blok data piksel menggunakan transformasi DCT dan seperti DCT adalah untuk mewakili blok piksel dengan jumlah sesedikit mungkin. DCT memampatkan energi dengan cukup baik di sebagian besar gambar, artinya cenderung mengumpulkan pola piksel yang tersebar hanya dalam beberapa faktor keluaran penting.

Tetapi ada pengecualian untuk efisiensi kompresi DCT. Misalnya, DCT tidak menerjemahkan batas atau pola arah dengan sangat baik. Jika Anda melihat output DCT dari tepi diagonal yang tajam, maka koefisien output juga membentuk ... diagonal yang tajam! Ini berbeda setelah konversi, tetapi masih ada dalam gambar, meskipun biasanya dalam bentuk yang lebih kompleks daripada di awal. Kompresi sedang turun!


Batas tajam adalah masalah tradisional untuk codec berbasis DCT, karena mereka tidak kompres dengan baik, jika sama sekali. Di sini kita melihat batas tajam (kiri) dan koefisien transformasi DCT (kanan). Energi dari batas awal merambat melalui DCT ke dalam pola riak searah.

Selama dua dekade terakhir, penelitian codec video semakin melihat transformasi, filter, dan metode prediksi, yang pada dasarnya terarah. Para peneliti telah mencari cara untuk menangani perbatasan dan pola dengan lebih baik untuk memperbaiki batasan DCT mendasar ini.

Prediktor directional klasik


Directional intra-prediction mungkin adalah salah satu metode aksi terarah paling terkenal dalam codec video modern. Semua orang akrab dengan mode prediksi arah h.264 dan VP9, ​​di mana codec mentransfer perkiraan pola tertentu ke blok baru berdasarkan piksel sekitarnya dari blok yang sudah diterjemahkan. Tujuannya adalah untuk menghilangkan (atau mengurangi secara signifikan) energi dalam tepi yang keras dan terarah sebelum mengubah blok. Dengan memprediksi dan menghapus fitur yang tidak dapat dikompresi, kami meningkatkan efisiensi keseluruhan codec.


Ilustrasi mode prediksi arah dalam AVC / H.264 untuk blok 4x4. Prediktor memperluas nilai dari strip-pixel tunggal piksel tetangga, mentransfernya ke blok prediksi dalam salah satu dari delapan arah, ditambah mode rata-rata untuk prediksi DC sederhana

Ide yang lebih tua adalah kompensasi gerak. Ini juga merupakan bentuk peramalan terarah, meskipun kita jarang berpikir seperti itu. Mode ini menggeser blok ke arah tertentu, lagi untuk memprediksi dan mengekstraksi energi sebelum DCT berjalan. Offset blok ini terarah dan difilter. Seperti directional intra-predictions, ini menerapkan filter oversampling yang dibangun dengan hati-hati jika offset bukan jumlah piksel bilangan bulat.

Filter arah


Seperti disebutkan sebelumnya, codec video secara aktif menerapkan filter untuk menghapus artefak blok dan kebisingan. Meskipun filter diterapkan pada bidang 2D, filter itu sendiri biasanya bekerja dalam 1D, yaitu, mereka dilakukan secara horizontal dan vertikal secara terpisah.

Pemfilteran terarah memicu filter ke arah selain horisontal dan vertikal. Metode seperti itu sudah umum dalam pemrosesan gambar statis, di mana filter reduksi noise dan efek khusus overlay sering memperhitungkan batas dan arah akun. Tetapi filter directional ini sering didasarkan pada penyaringan output dari transformasi directional. Sebagai contoh, filter pengurangan noise [sedikit usang] yang saya tulis didasarkan pada pohon ganda dari wavelet kompleks .

Tetapi untuk pengkodean video, kami paling tertarik pada filter arah, yang langsung diterapkan pada piksel dalam arah tertentu, daripada memfilter domain frekuensi pada output konversi terarah. Segera setelah Anda mencoba membuat binatang seperti itu, Pertanyaan Besar akan segera muncul: Bagaimana memformalkan arah tertentu selain horisontal dan vertikal, ketika posisi filter tidak lagi terikat dengan piksel pada kisi?

Salah satu pilihan adalah menggunakan pendekatan klasik yang digunakan dalam pemrosesan gambar berkualitas tinggi: mentransformasikan inti filter dan sampel ulang (resample) ruang piksel sesuai kebutuhan. Anda bahkan dapat berdebat bahwa ini adalah satu-satunya jawaban "benar" atau "lengkap". Ini digunakan dalam mengkompensasi gerakan subpixel, di mana tidak mungkin untuk mendapatkan hasil yang baik tanpa pengambilan sampel ulang yang baik, serta dalam peramalan terarah, di mana perkiraan cepat biasanya digunakan.

Namun, bahkan perkiraan cepat mahal dalam hal sumber daya komputasi, jika diterapkan secara universal, jadi disarankan untuk menghindari pengambilan sampel ulang, jika memungkinkan. Harga mahal untuk kecepatan adalah salah satu alasan mengapa directional filter belum diterapkan dalam pengkodean video.

Transformasi terarah


Konversi terarah mencoba untuk memperbaiki masalah DCT dengan pemadatan blok perbatasan pada tingkat transformasi itu sendiri.

Eksperimen dalam bidang ini terbagi dalam dua kategori. Ada transformasi yang menggunakan basis directional dasarnya, seperti wavelet directional. Sebagai aturan, mereka cenderung konversi yang berlebihan / kelengkapan berlebihan, yaitu, mereka menghasilkan lebih banyak output daripada yang mereka terima pada input: biasanya jauh lebih banyak. Ini seperti bekerja di arah yang berlawanan, karena kami ingin mengurangi jumlah data, bukan menambahnya! Tetapi konversi ini masih memampatkan energi, dan encoder masih memilih sebagian kecil dari output untuk pengkodean, jadi dalam kenyataannya ada beberapa perbedaan dari pengkodean DCT lossy yang biasa. Namun, konversi "terlalu penuh" biasanya membutuhkan memori dan sumber daya komputasi yang berlebihan, dan karenanya tidak digunakan dalam codec video populer.

Kategori konversi terarah kedua membutuhkan transformasi tidak langsung yang teratur seperti DCT - dan memodifikasinya, memengaruhi input atau output. Perubahan dapat dilakukan dalam bentuk pengambilan sampel berulang, penggandaan matriks (yang dapat dianggap sebagai bentuk khusus pengambilan sampel berulang) atau juggling dengan urutan data input.

Ide terakhir ini adalah yang terkuat, karena metode ini bekerja dengan cepat. Permutasi angka yang sederhana tidak memerlukan perhitungan matematis.


Dua contoh transformasi dalam arah yang berbeda dengan menata ulang piksel dan koefisien, bukan filter ulang. Contoh diambil dari Survei Transformasi Arah dalam Image Coding , Jicheng Xu, Bing Zeng, Feng Wu

Implementasi dipersulit oleh beberapa kesulitan praktis. Reorientasi alun-alun memberikan tepi diagonal dengan garis dominan vertikal atau horizontal, yang mengarah ke matriks angka non-persegi sebagai input. Secara konseptual, ini bukan masalah. Karena Anda dapat mulai mengubah baris dan kolom secara terpisah satu sama lain, kami cukup menggunakan ukuran DCD 1D yang berbeda untuk setiap baris dan kolom, seperti yang ditunjukkan pada gambar di atas. Tetapi dalam praktiknya, ini berarti bahwa kita akan membutuhkan faktorisasi DCT yang berbeda untuk setiap panjang kolom yang memungkinkan - dan segera setelah departemen pengembangan perangkat keras memahami hal ini, Anda akan dikeluarkan dari jendela.

Ada beberapa cara lain untuk memproses area yang tidak berbentuk bujur sangkar setelah penataan ulang. Anda dapat membuat skema resampling yang menyimpan input square atau hanya bekerja pada output. Sebagian besar artikel tentang konversi arah yang tercantum di bawah ini menawarkan skema yang berbeda untuk ini.

Dan di sinilah kisah transformasi diarahkan pada dasarnya berakhir. Segera setelah Anda menghindari berbagai komplikasi konversi arah dan membuat filter nyata, biasanya tidak berfungsi dalam codec modern karena alasan yang tidak terduga: karena persaingan dengan ukuran blok variabel. Artinya, dalam codec dengan ukuran blok tetap, penambahan transformasi arah memberikan peningkatan efisiensi yang mengesankan. Dan ukuran blok variabel itu sendiri memberikan manfaat yang lebih besar. Tetapi menggabungkan ukuran blok variabel dan transformasi arah menyebabkan hasil yang lebih buruk daripada menggunakan masing-masing metode ini secara individual. Ukuran blok variabel telah menghilangkan redudansi yang digunakan oleh transformasi directional, dan bahkan membuatnya lebih efisien.

Nathan Egge dan saya banyak bereksperimen dengan transformasi arah ketika mengembangkan Daala. Saya memeriksa masalah pada sisi input dan juga pada sisi output, menggunakan perkalian matriks jarang untuk mengubah batas diagonal ke posisi vertikal / horizontal pada output. Nathan menguji pendekatan yang dikenal untuk transformasi arah dengan membangun kembali data input. Kami sampai pada satu kesimpulan: kompleksitas tambahan tidak memberikan manfaat objektif atau subjektif.

Menggunakan transformasi terarah dalam Daala (dan codec lainnya) mungkin merupakan kesalahan, tetapi penelitian ini mengajukan satu pertanyaan yang disebutkan sebelumnya: bagaimana cara dengan cepat menyaring sepanjang perbatasan tanpa pengambilan sampel ulang yang mahal? Jawab: tidak perlu sampel ulang. Perbesar dengan bergerak di sepanjang seluruh piksel terdekat. Memperbesar kernel yang ditransformasi dengan mengatur ulang piksel secara harfiah atau secara konseptual. Pendekatan ini mengarah pada beberapa distorsi (aliasing), tetapi ia bekerja dengan cukup baik dan cukup cepat .

Prediksi Terarah, Bagian 2: Daala Chronicles


Sejarah CDEF dalam codec Daala dimulai dengan upaya untuk melakukan sesuatu yang sama sekali berbeda: prediksi intra directional yang membosankan. Atau setidaknya sesuatu yang normal untuk codec Daala.

Saya menulis tentang skema intra-prediksi Daala di domain frekuensi ketika kami baru saja mulai mengerjakannya. Matematika di sini cukup berhasil; tidak ada alasan untuk khawatir. Namun, implementasi naif membutuhkan sejumlah besar perkalian matriks, yang terlalu mahal untuk codec dalam produksi. Kami berharap bahwa beban komputasi dapat dikurangi dengan urutan besarnya karena penghalusan - penghapusan elemen matriks yang tidak berkontribusi banyak pada perkiraan.

Tapi penipisan tidak berfungsi seperti yang kita inginkan. Setidaknya ketika kami menerapkannya, kehilangan terlalu banyak informasi, membuat teknik ini tidak cocok dalam praktiknya.

Tentu saja, Daala masih memerlukan beberapa bentuk intra-prediksi, dan Jean-Marc Valin punya ide: sebuah codec prediksi otonom yang bekerja dalam domain spasial sejajar dengan codec Daala dalam domain frekuensi. Sebagai semacam symbiont, bekerja bersama-sama, tetapi tidak bergantung pada Daala, itu tidak terbatas pada persyaratan Daala untuk domain frekuensi. Begitulah Intra Paint muncul.


Contoh algoritma prediksi Intra Paint dalam foto Sydney Harbour . Output visual jelas terarah, cocok dengan batas-batas blok dan fitur gambar asli, menciptakan hasil yang bagus (mungkin sedikit aneh) dengan batas yang jelas

Filter Intra Paint bekerja dengan cara baru: filter ini mengkodekan vektor satu dimensi hanya di sepanjang batas blok, dan kemudian menjalankan templat ke arah yang dipilih. Ini seperti menyemprotkan cat, dan kemudian menyebar ke berbagai arah di area terbuka.

Intra Paint tampak menjanjikan dan dengan sendirinya menghasilkan hasil yang luar biasa indah, tetapi sekali lagi ternyata tidak cukup efektif untuk bekerja sebagai alat prediksi internal. Hanya saja tidak mendapatkan bit yang cukup untuk menyandikan informasinya sendiri.


Perbedaan antara foto asli Sydney Harbour dan hasil Intra Paint. Terlepas dari penerbitan Intra Paint yang menyenangkan secara visual, secara objektif, itu tidak bisa disebut sebagai prediktor yang sangat akurat. Perbedaannya cukup signifikan bahkan di sepanjang banyak perbatasan yang tampaknya dibuat dengan baik

“Kegagalan” Intra Paint membawa kami ke ide lain. Meskipun "gambar" ini secara objektif bukan merupakan prediktor yang sangat baik, tetapi secara subjektif sebagian besar terlihat baik. Mungkin menggunakan metode "cat smear" sebagai filter pasca-pemrosesan untuk meningkatkan kualitas visual subjektif? Intra Paint mengikuti dengan sangat baik di sepanjang tepi yang tajam, dan karenanya berpotensi menghilangkan kebisingan yang menumpuk di sepanjang tepi yang paling tajam.Keluar dari ide ini, filter Paint-Dering asli di Daala lahir, yang akhirnya mengarah ke CDEF itu sendiri.

Ada hal lain yang menarik dalam peramalan terarah, meskipun saat ini jalan buntu dalam pengkodean video. David Shlif mengimplementasikan filter pengambilan perbatasan / arah yang menarik yang disebut Edge-Directed Interpolasi(EDI). Codec lain (seperti seri VPx dan, pada suatu waktu, AV1) bereksperimen dengan bingkai referensi yang dikurangi untuk menghemat bit kode, dan kemudian meningkatkan resolusi. Kami berharap bahwa dengan peningkatan resolusi, interpolasi EDI yang ditingkatkan secara signifikan akan meningkatkan teknik ke titik yang akan berguna. Kami juga berharap untuk menggunakan EDI sebagai filter interpolasi sub-pixel yang ditingkatkan untuk mengimbangi gerakan. Sayangnya, ide-ide ini tetap menjadi mimpi yang tidak terpenuhi.

Mengisi lubang, menggabungkan cabang


Saat ini saya telah menggambarkan semua prasyarat dasar yang diperlukan untuk mendekati CDEF, tetapi pada kenyataannya kami terus berkeliaran di padang pasir. Intra Paint menelurkan filter Daala Paint-Dering asli, yang menggunakan algoritma Intra-Paint sebagai post-filter untuk menghilangkan artefak. Ternyata terlalu lambat untuk digunakan dalam codec nyata.

Sebagai hasilnya, kami memperhitungkan pelajaran dari Intra Paint dan meninggalkan eksperimen ke arah ini. Daala meminjam CLPF dari Thor untuk sementara waktu, dan kemudian Jean-Marc membuat filter Deringing yang lebih cepat untuk Daala, berdasarkan pencarian arah batas Intra-Paint (bekerja dengan cepat dan baik), serta Filter Penggantian Bersyarat, filter pengganti bersyarat. CRF dibuat berdasarkan ide-ide filter median dan menghasilkan hasil yang mirip dengan filter bilateral, tetapi pada dasarnya bekerja dalam vektor dan karenanya jauh lebih cepat. Perbandingan filter 7-tap linier dengan filter penggantian bersyarat pada sinyal satu dimensi yang berisik, di mana noise meniru efek kuantisasi pada sinyal asli. Filter noise Daala akhir menggunakan dua filter CRF satu dimensi, filter 7-tap ke arah batas dan filter 5-tap lemah. Kedua filter hanya bekerja pada seluruh piksel tanpa pengambilan sampel ulang. Di sini, filter pengurangan kebisingan Daala menjadi sangat mirip dengan apa yang sekarang kita kenal sebagai CDEF.






Kami baru-baru ini mengusulkan Daala sebagai codec AOM, dan filter perantara ini menjadi eksperimen da1_dering AV1. Cisco juga memperkenalkan filter pengurangan kebisingan, Constrained Low-Pass Filter (CLPF) dari Thor codec. Untuk sementara, kedua filter ada secara paralel dalam rakitan AV1 eksperimental: mereka dapat dimasukkan secara individual atau bahkan bersama-sama. Berkat ini, dalam pekerjaan mereka dimungkinkan untuk melihat sinergi yang berguna, serta kesamaan tambahan filter pada berbagai tahap pekerjaan.

Jadi, kami akhirnya sampai ke CDEF : filter CLPF dari Cisco dan versi kedua dari filter pengurangan kebisingan Daala digabung menjadi satu filter pengurangan kebisingan berkinerja tinggi dengan mempertimbangkan arah batas.

CDEF modern


Filter CDEF sederhana dan sangat mirip dengan filter kami sebelumnya. Ini terdiri dari tiga bagian (pencarian terarah, filter substitusi terbatas / low-pass, dan penempatan tanda co-pixel) yang kami gunakan sebelumnya. Mengingat latar belakang yang panjang, melihat pada CDEF yang sudah selesai, Anda mungkin bertanya, “Apakah hanya itu? Di mana sisanya? " CDEF adalah contoh bagaimana mendapatkan efek yang berguna karena implementasi bagian yang benar, dan bukan karena kompleksitas. Filter yang sederhana dan efektif adalah yang seharusnya.

Arah pencarian


CDEF bekerja dalam arah tertentu, jadi Anda perlu mendefinisikannya. Algoritma ini sama dengan Intra Paint dan Paint-Dering. Ada delapan kemungkinan arah. Delapan kemungkinan arah untuk filter CDEF. Baris bernomor di setiap blok arah sesuai dengan parameter 'k' dalam pencarian arah




Kami menentukan arah filter dengan membuat varian "directional" dari blok input, satu untuk setiap arah, di mana semua piksel di sepanjang garis dalam arah yang dipilih dibawa ke nilai yang sama. Kemudian kita memilih arah di mana hasilnya paling cocok dengan blok sumber. Artinya, untuk setiap arah d, pertama-tama kita menemukan nilai piksel rata-rata di setiap baris k, dan kemudian di sepanjang setiap baris kita meringkas kesalahan kuadratik antara nilai piksel yang diberikan dan nilai rata-rata dari garis piksel ini.


d, . k . k . , , . /

Jadi kita mendapatkan kesalahan kuadratik total, dan kesalahan kuadratik umum terkecil adalah arah yang akan kita pilih. Meskipun contoh di atas tidak hanya itu, dalam kenyataannya tidak perlu mengubah kesalahan kuadrat menjadi dispersi: di setiap arah jumlah piksel yang sama, sehingga keduanya akan memilih jawaban yang sama. Kurang perhitungan!

Ini adalah cara yang intuitif dan panjang untuk menghitung kesalahan arah. Pemesinan dapat disederhanakan dengan persamaan berikut:



Dalam rumus ini E- kesalahan hal- piksel xhal- nilai piksel k- salah satu garis bernomor dalam diagram arah di atas, dan Nd,k- kekuatan set (jumlah piksel di dalamnya) dari garis kuntuk arah d.Persamaan ini dapat disederhanakan dalam praktik. Misalnya, istilah pertama sama untuk masing-masingd . Pada akhirnya, implementasi AV1 CDEF saat ini membutuhkan penambahan 5,875 dan perkalian 1,9375 per piksel dan sangat di-vektorisasi, sehingga total biaya kurang dari 8 × 8 DCT.

Filter Keran


Filter CDEF berfungsi pixel demi pixel di blok lengkap. Arahandmemilih salah satu filter arah, yang masing-masing terdiri dari satu set label filter (yaitu, lokasi piksel input) dan bobot.

Secara konseptual, CDEF membuat filter arah dari dua filter satu dimensi. Filter utama bekerja di sepanjang arah yang dipilih, seperti pada filter noise Daala. Filter sekunder dipicu dua kali pada sudut 45 ° ke primer, seperti pada CLPF Thor.


Arah filter satu dimensi primer dan sekunder sehubungan dengan arah yang dipilih d. Filter utama dimulai pada arah yang dipilih, yang sekunder bekerja pada sudut 45 ° ke arah utama. Setiap piksel dalam blok difilter secara

sama.Filter bekerja pada sudut sedemikian rupa sehingga tanda ideal sering jatuh di antara piksel. Alih-alih mengambil sampel ulang, kami memilih lokasi yang tepat dari piksel terdekat, dengan mempertimbangkan inti simetris filter.

Setiap label dalam filter juga memiliki bobot yang sama. Selama penyaringan, nilai inputnya diberikan ke input, kemudian fungsi kendala diterapkan, kemudian hasilnya dikalikan dengan bobot tetap label, dan nilai output ini ditambahkan ke piksel yang difilter.


Lokasi tanda primer dan sekunder (ketukan) dan bobot tetap (w) dalam arah filter. Untuk tanda primer dan nilai rata-rata gaya a = 2 dan b = 4, sedangkan untuk tanda ganjil a = 3 dan b = 3. Pixel yang disaring ditunjukkan dalam warna abu-abu.

Dalam praktiknya, filter primer dan sekunder tidak bekerja secara terpisah, tetapi digabungkan menjadi satu inti filter, yang dilakukan dalam satu langkah.

Fungsi pembatasan


CDEF menggunakan filter low-pass terbatas di mana nilai setiap label pertama kali diproses oleh fungsi kendala dengan parameter perbedaan antara nilai label dan piksel yang difilterd kekuatan filter Sdan parameter redaman D:



Fungsi pembatasan dirancang untuk mengurangi atau sepenuhnya mengabaikan pemrosesan piksel yang tidak terlalu berbeda dari piksel yang difilter. Dalam rentang yang ditentukan, perbedaan nilai tanda dari piksel pusat sepenuhnya diperhitungkan (yang ditentukan oleh parameter gayaS) Jika perbedaan dalam nilai berada dalam kisaran antara parameterS dan D, maka nilainya melemah. Akhirnya, beri label nilai di luarDbenar-benar diabaikan. Ilustrasi fungsi pembatasan. Dalam kedua gambar, perbedaan (d) antara piksel tengah dan piksel tanda diplot di sepanjang sumbu x. Nilai output dari fungsi kendala ditampilkan di sepanjang sumbu y. Angka di sebelah kiri menunjukkan efek mengubah parameter gaya (S). Gambar di sebelah kanan menunjukkan efek mengubah parameter redaman (D). Nilai output dari fungsi kendala kemudian dikalikan dengan bobot tetap yang terkait dengan setiap posisi label relatif terhadap piksel tengah. Akhirnya, nilai yang dihasilkan (satu untuk setiap label) ditambahkan ke piksel tengah yang difilter, yang memberikan nilai piksel akhir yang difilter. Semua ini diungkapkan dalam rumus berikut: ... di mana








(hal)dan (s)sesuai dengan nilai-nilai set label primer dan sekunder .

Ada beberapa detail implementasi tambahan terkait pembulatan dan kliping. Tetapi mereka tidak begitu penting untuk dipahami. Jika Anda bermaksud menerapkan CDEF, tentu saja, Anda dapat menemukannya dalam deskripsi CDEF lengkap .

Hasil


CDEF dirancang untuk menghilangkan atau mengurangi noise dasar dan artefak dering di tepi tajam gambar tanpa kabur atau rusak. Filter sekarang digunakan dalam AV1 dan memberikan efek halus tetapi konsisten. Mungkin di masa depan akan mungkin untuk lebih mengandalkan CDEF.


Contoh pengurangan noise dan artefak saat menyandikan gambar Buah . Inset pertama menunjukkan area tanpa pemrosesan CDEF, yang kedua menunjukkan area yang sama setelah pemrosesan CDEF

Nilai kuantitatif dari setiap filter korektif harus ditentukan dengan tes subjektif. Metrik objektif tidak boleh diabaikan, tetapi CDEF dirancang untuk memberikan hasil yang melampaui kemampuan alat pengujian objektif primitif seperti PSNR dan SSIM.

Dengan demikian, kami melakukan beberapa putaran pengujian subyektif, pertama selama pengembangan CDEF (ketika Daala Dering dan Thor CLPF masih secara teknis pesaing), dan kemudian melakukan pengujian yang lebih komprehensif dari filter CDEF gabungan. Karena ini adalah filter baru yang sama sekali tidak ada dalam generasi codec sebelumnya, pengujian terutama terdiri dari AV1 dengan CDEF diaktifkan dan AV1 tanpa CDEF.


Hasil Uji AV1 A / B Subyektif dengan CDEF dan AV1 tanpa CDEF untuk Konfigurasi Latensi Tinggi

Hasil subyektif menunjukkan peningkatan yang signifikan secara statistik (p <0,05) dalam tiga dari enam klip. Sebagai aturan, ini sesuai dengan peningkatan efisiensi pengkodean sebesar 5-10%. Ini adalah kemenangan yang cukup besar untuk satu alat yang ditambahkan ke codec yang sepenuhnya matang.

Seperti yang diharapkan, pengujian objektif menunjukkan peningkatan yang lebih sederhana sekitar 1%, namun pengujian objektif hanya berguna sejauh konsisten dengan hasil subjektif. Pengujian subyektif adalah standar emas, dan hasil subjektif cukup jelas.

Pengujian juga menunjukkan bahwa CDEF berkinerja lebih baik jika alat codec tambahan dinonaktifkan selama penyandian. Seperti transformasi terarah, CDEF bersaing untuk mendapatkan manfaat dengan metode AV1 lain yang lebih kompleks. Karena CDEF adalah filter sederhana, kecil, dan cepat, CDEF mungkin akan digunakan di masa mendatang untuk mengurangi kompleksitas encoder AV1. Dalam hal kompleksitas dekoder, CDEF menyumbang 3% hingga 10% dari dekoder AV1, tergantung pada konfigurasi.

Sumber Daya Tambahan


  1. Suite tes derek standar Xiph.Org tersedia di media.xiph.org
  2. Sistem dan metrik pengujian otomatis yang digunakan dalam pengembangan Daala dan AV1: "Apakah kita sudah dikompresi?"
  3. Constrained Directional Enhancement Filter (CDEF) di AV1 . Steinar Midtskogen, Jean-Marc Valin, Oktober 2017
  4. Slide presentasi CDEF untuk ICASSP 2018 , Steinar Midtskogen, Jean-Marc Valin
  5. Filter Dering untuk Daala dan pengembangan lebih lanjut . Jean-Marc Valin. Filter pengurangan noise sebelumnya dibuat ketika mengembangkan Daala codec, yang digunakan untuk membuat CDEF di AV1.
  6. Daala: Mewarnai gambar untuk kesenangan dan kebaikan . Jean-Marc Valin. Filter koreksi yang bahkan lebih awal untuk basis Intra-Paint, yang mengarah pada pembuatan filter pengurangan kebisingan di Daala, yang pada gilirannya menyebabkan CDEF
  7. Intra Paint Deringing Filter . Jean-Marc Valin, 2015. Catatan tentang filter koreksi pengurangan kebisingan yang muncul dari percobaan Intra Paint di Daala
  8. Penyaringan gambar terpandu . Caiming Hye, Jian San, Xiaou Tang, 2013
  9. Transformasi wavelet diskrit adaptif terarah untuk kompresi gambar . Chuo-Ling Chang, Bernd Girod, Transaksi IEEE pada Pemrosesan Gambar, Volume 16, Nomor 5, Mei 2007
  10. Transformasi adaptif terarah untuk berbagi gambar . Chuo-Ling Chang, Ph.D. tesis di Universitas Stanford, 2009. Disertasi ini memberikan tinjauan yang baik tentang bidang transformasi arah pada 2009; Sayangnya, tidak ada salinan online yang tersedia
  11. Konversi pemblokiran adaptif terarah untuk penyandian gambar berwarna . Chuo-Ling Chang, Mina Makar, Sam S. Tsai, Bernd Girod, Transaksi IEEE pada Pemrosesan Gambar, Volume 19, Nomor 7, Juli 2010
  12. Sirkuit DCT berbasis dengan prediksi DC dan pengkodean adaptif . Zhibo Chen, Xiaozhong Xu. Artikel di balik IEEE
  13. Transformasi adaptif terarah untuk prediksi kode residu . Robert Cohen, Sven Klomp, Anthony Vetro, Huifan Sun. Prosiding Konferensi Internasional ke-17 IEEE 2010 tentang Pemrosesan Gambar, 26-29 September 2010, Hong Kong
  14. Transformasi ortogonal orientasi-selektif dengan tumpang tindih . Dietmar Kunz, 2008. Artikel oleh IEEE
  15. Analisis kecepatan-distorsi dari wavelet terarah . Arian Maleki, Boshra Rajay, Hamid Reza Purreza. Transaksi IEEE pada Pemrosesan Gambar, Volume 21, Nomor 2, Februari 2012
  16. Analisis teoritis tren dalam tren dalam transformasi ortogonal terarah . Shogo Murumatsu, Dandan Khan, Tomoya Kobayashi, Hisakazu Kikuchi. Artikel di balik paypal IEEE. Namun, versi singkat tersedia secara gratis.
  17. Tinjauan transformasi arah dalam pengkodean gambar . Jicheng Xu, Bing Zeng, Feng Wu.
  18. Konversi dengan pemfilteran arah untuk kompresi gambar dan informasi antar-bingkai . Xulian Peng, Jicheng Xu, Feng Wu, Transaksi IEEE dalam Pemrosesan Gambar, Volume 19, Nomor 11, November 2010. Artikel oleh IEEE Firewall
  19. Perkiraan dan kompresi menggunakan transformasi orthonormal yang jarang . O. G. Sezer, O. G. Guleruz, Yusel Altunbasak, 2008
  20. Studi yang andal tentang transformasi bersama dua dimensi untuk codec video generasi mendatang . O. G. Cezer, R. Cohen, A. Vetro, Maret 2011
  21. Optimalisasi gabungan berdasarkan sparseness dari satu set transformasi blok dua dimensi ortonormal . Joel Sole, Peng Yin, Yunfei Zheng, Christina Gomila, 2009. Artikel oleh IEEE
  22. Transformasi tumpang tindih terarah untuk pengkodean gambar . Jicheng Xu, Feng Wu, Jie Liang, Wenjun Zhang, Transaksi IEEE pada Pemrosesan Gambar, April 2008
  23. Directional discrete cosine transforms adalah kerangka kerja baru untuk pengkodean gambar . Bing Zeng, Jingjing Fu, Transaksi IEEE pada Sirkuit dan Sistem untuk Teknologi Video, April 2008
  24. Pohon ganda transformasi wavelet kompleks . Ivan Seleznik, Richard Baranyuk, Nick Kingsbury, Majalah Pemrosesan Sinyal IEEE, November 2005

Source: https://habr.com/ru/post/id416049/


All Articles