Berbagi teknologi

Pembelajaran sistematis pengkodean video H264 (03) proses kompresi data dan konsep terkait

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Catatan: Kami mengacu pada Metode Pembelajaran Lingkaran Emas (Apa itu Aturan Lingkaran Emas? -> Model Aturan Lingkaran Emas, artikel ini menggunakan: mengapa-apa) untuk mempelajari pengkodean video audio H264. Rangkaian artikel ini berfokus pada pemahaman sistem pengetahuan dan metode praktis pengkodean video. Aspek teoritis akan menjelaskan lebih lanjut tentang asal usul konsep dalam audio dan video serta hubungan antar berbagai konsep. Ketahuilah bagaimana keadaannya, ketahuilah mengapa demikian. Pada saat yang sama, penekanan lebih besar diberikan pada pembentukan sistem pengetahuan.

Untuk artikel ini, kami terutama membahas tentang proses kompresi data H.264 dan konsep terkait. Kompresi data H.264 hanya memiliki satu tujuan, untuk mengompres, mengompres, dan mengompres ulang untuk memperkecil ukuran data video sekaligus memastikan kualitas gambar semaksimal mungkin. Jadi sebelum mempelajari kompresi data H.264, kita harus memahami terlebih dahulu: Meskipun ada banyak konsep dan metode yang terlibat dalam proses ini, semua metode dan proses ditujukan untuk tujuan ini: kompresi.

1 Interpretasi proses kompresi data H.264

Proses kompresi data H.264 terutama diringkas sebagai langkah-langkah utama berikut: pembagian makroblok dan pembagian sub-blok -> pengelompokan bingkai -> prediksi bingkai -> transformasi kosinus diskrit integer (DCT) -> kompresi CABAC. Petunjuk perluasan spesifiknya adalah sebagai berikut.

1.1 Bagilah blok makro && bagi menjadi sub-blok

Blok makro: Dapat dipahami bahwa ketika bingkai video dikirim ke buffer encoder H264, encoder membagi blok makro ke dalam setiap gambar. Secara default, pengkodean H264 menggunakan area 16X16 piksel sebagai makroblok (H265 menggunakan area 64X64 piksel).

Efek keseluruhan setelah pembagian makroblok

Pada saat yang sama, pada gambar di atas, kita sebenarnya dapat membagi blok makro 16X16 piksel menjadi sub-blok yang lebih kecil. Ukuran sub-blok bisa 8X16、16X8、8X8、4X8、8X4、4X4 sangat fleksibel. Tujuan dari pembagian lagi menjadi sub-blok adalah untuk mencatat data ini dengan data yang sangat kecil. Setelah blok makro dibagi, semua gambar di cache encoder H264 dapat dikelompokkan.

Pembagian makroblok dan subblok memungkinkan pengkodean video menganalisis dan memproses konten video dengan lebih akurat dan mencapai kompresi data yang lebih efisien. Bingkai video dibagi menjadi blok makro berukuran 16x16 piksel, dan blok makro ini dapat dibagi lagi menjadi blok yang lebih kecil seperti 8x8, 8x4, 4x8, dll. untuk mengakomodasi kompleksitas konten gambar.

1.2 Pengelompokan bingkai

Pengelompokan bingkai (struktur GOP) ditentukan sebelum prediksi intra dan prediksi antar. Dalam proses pengkodean video, pengaturan pengelompokan frame merupakan salah satu langkah awal yang menentukan pengorganisasian dan urutan pengkodean frame video. Tujuan utama pengelompokan frame adalah untuk mengurangi redundansi data. Redundansi data video terutama dibagi menjadi dua kategori:

  • Redundansi data temporal, yang memerlukan penggunaan kompresi prediksi antar-frame, memiliki proporsi yang lebih besar(Karena meskipun kamera menangkap 30 bingkai per detik, dalam banyak kasus, 30 bingkai data ini terkait. Mungkin ada lebih dari 30 bingkai data, dan mungkin lusinan bingkai data sangat terkait erat. Dan untuk korelasinya adalah khususnya Close frame, kita hanya perlu menyimpan keyframe(Saya membingkai)data, frame lainnya(bingkai B dan bingkai P)Semua dapat diprediksi melalui frame ini sesuai aturan tertentu, sehingga data video memiliki redundansi temporal paling banyak).
  • Redundansi data spasial, yang memerlukan penggunaan kompresi prediksi intra-frame, mempunyai proporsi yang relatif kecil.

Langkah-langkah eksekusi pengelompokan bingkai H264:

  1. Setiap kali dua frame yang berdekatan diambil untuk perbandingan makroblok, dan kesamaan antara dua frame dihitung.
  2. Kesamaan dicapai setelah kuantifikasi: Jika piksel dengan perbedaan hanya berada dalam 10% titik, perbedaan kecerahan berubah tidak lebih dari 2%, dan perbedaan kroma hanya berubah dalam 1%, kami yakin gambar tersebut dapat dikelompokkan menjadi satu kelompok.

Ketika pengelompokan selesai, masalah kompresi prediksi frame mulai terpecahkan.

1.3 Kompresi prediksi bingkai

Bagian ini terutama mencakup prediksi intra-frame dan prediksi antar-frame. Prediksi intra-frame adalah dengan mengompresi bingkai gambar statis, memprediksi nilai piksel setiap makroblok melalui 9 mode berbeda, lalu menghitung nilai sisa dengan gambar asli. Dan prediksi antar frame (estimasi gerak dan kompensasi gerak): Untuk frame P dan frame B, cari vektor gerak antara frame atau dua frame sebelumnya melalui estimasi gerak, kemudian lakukan prediksi kompensasi gerak, hasilkan gambar prediksi, dan hitung Sisa dari bingkai saat ini.

Catatan: Urutan prediksi intra dan prediksi antar bergantung pada jenis kerangka kode dan strategi pengkodean. Dalam implementasi encoder video nyata, langkah-langkah ini merupakan bagian dari proses pengkodean dan ditangani secara otomatis oleh encoder. Tidak harus siapa yang menanganinya terlebih dahulu.

1.3.1 prediksi intra

Kompresi prediksi intra-frame: memecahkan masalah redundansi data spasial. Data redundan wilayah udara mengacu pada warna, kecerahan, dll., yang terutama untuk informasi yang tidak sensitif terhadap mata manusia. Pengkodean dikompresi dengan menghapusnya.Prinsip yang digunakan dalam prediksi intra-frame adalah bahwa mata manusia memiliki tingkat pengenalan gambar tertentu. Mata manusia sangat sensitif terhadap kecerahan frekuensi rendah dan kurang sensitif terhadap kecerahan frekuensi tinggi.(Dapat dipahami sebagai ukuran makroblok 16X16. Pada H264, data lain diprediksi melalui 16 piksel teratas dan 16 piksel paling kiri, sehingga informasi representasi piksel yang semula membutuhkan 16*16=256 dapat diubah menjadi 16+ 16-1 =31 piksel untuk mewakili informasi)

1.3.2 Prediksi antar-frame (estimasi gerakan dan kompensasi gerakan)

Kompresi prediksi antarbingkai (estimasi gerakan dan kompensasi): memecahkan masalah redundansi data domain waktu. Terdapat beberapa frame dalam video yang disusun secara linier dalam urutan kronologis. Korelasi antar frame sangat kuat, sehingga banyak data yang dapat dihapus antar frame.Setelah dikompresi akan dibagi menjadi tiga jenis: frame I, frame P, dan frame B.(Penjelasan: Prinsip estimasi dan kompensasi gerakan: Encoder H264 pertama-tama mengeluarkan dua bingkai data video dari header buffer secara berurutan, dan kemudian melakukan pemindaian makroblok. Ketika ditemukan ada objek di salah satu gambar, itu akan Mencari posisi terdekat (di jendela pencarian). Jika benda ditemukan pada gambar lain saat ini, maka vektor gerak benda tersebut dapat dihitung. Gambar di bawah ini adalah posisi bola bilyar setelah pencarian.

Untuk frame P dan frame B, estimasi gerak digunakan untuk mencari vektor gerak antara frame sebelumnya atau dua frame, kemudian dilakukan prediksi kompensasi gerak untuk menghasilkan gambar prediksi, dan sisa frame saat ini dihitung.

1.4 Transformasi kosinus diskrit bilangan bulat (DCTTransformasi Kosinus Diskrit

Langkah ini terutama melakukan transformasi DCT pada sisa prediksi, mengubah korelasi spasial menjadi data yang tidak relevan dalam domain frekuensi, dan kemudian mengkuantisasinya. DCT terutama digunakan untuk kompresi data atau gambar, mengubah korelasi spasial menjadi data yang tidak relevan dalam domain frekuensi dan kemudian mengkuantisasinya.(Penjelasan: Transformasi DCT dapat mengumpulkan lebih banyak informasi penting dari gambar, dan area domain frekuensi serta koefisien yang tidak penting dapat langsung dipangkas)

Ringkasan: Urutan kompresi data frame adalah dengan melakukan kompresi antar-frame dan intra-frame terlebih dahulu, kemudian melakukan transformasi DCT pada data sisa untuk menghilangkan korelasi data dan selanjutnya mengompresi data. Sebagai berikut:

1.5 kompresi CABAC

Kompresi CABAC adalah teknologi kompresi lossless dan metode pengkodean entropi. Ketika CABAC dikompresi dan dikodekan, data frekuensi tinggi didefinisikan sebagai kode pendek dan data frekuensi rendah didefinisikan sebagai kode panjang. Metode ini lebih efisien dibandingkan metode VLC. Metode pengkodean entropi CABAC (Context-Adaptive Binary Arithmetic Coding) digunakan untuk lebih mengompresi koefisien terkuantisasi guna meningkatkan efisiensi kompresi. Di sini, data yang diproses dalam empat langkah sebelumnya dikodekan ke dalam aliran kode akhir menggunakan algoritma pengkodean. Frame terkompresi akhir dibagi menjadi: frame I, frame P dan frame B. Setelah metode kompresi lossless CABAC dijalankan, aliran kode video diperoleh.

2 Konsep terkait dalam proses kompresi data

2.1 Redundansi data dalam ruang dan waktu

Redundansi data spasial dan redundansi data temporal adalah dua konsep dasar dalam kompresi video. Keduanya menggambarkan informasi berulang di dalam dan di antara bingkai video.

Interpretasi Redundansi Spasial

  • Ini mengacu pada kesamaan atau korelasi antara piksel yang berdekatan dalam satu bingkai video, yang mengakibatkan duplikasi data. Karena kesinambungan gambar alami, piksel yang berdekatan cenderung memiliki nilai kecerahan atau warna yang serupa.
  • Contoh umum dari redundansi spasial mencakup area monokrom yang luas, gradien, atau tekstur yang berubah secara perlahan.
  • Algoritme kompresi video mengurangi redundansi spasial melalui prediksi spasial, mengubah pengkodean (seperti DCT) dan teknologi lainnya, mengubah gambar dari domain spasial ke domain frekuensi, dan memusatkan energi pada beberapa koefisien untuk mencapai tujuan kompresi.

Interpretasi Redundansi Temporal

  • Mengacu pada kesamaan yang ada antara frame yang berurutan dalam suatu rangkaian video, yaitu objek atau pemandangan yang sama dalam frame yang berurutan tidak mengalami perubahan visual yang signifikan.
  • Redundansi temporal biasanya terjadi saat kamera tidak bergerak atau saat objek dalam pemandangan bergerak lambat, dengan hanya sedikit area yang berubah pada frame berikutnya dibandingkan dengan frame sebelumnya.
  • Algoritme kompresi video mengurangi redundansi temporal melalui teknik seperti prediksi antar-frame, estimasi gerakan, dan kompensasi gerakan, menggunakan korelasi antara frame sebelumnya dan berikutnya untuk memprediksi dan menyandikan perbedaan antar-frame alih-alih mengkodekan setiap frame sepenuhnya.

2.2 Interpretasi data sisa dan konsep terkait

Dalam kompresi video H.264, data sisa mengacu pada perbedaan antara frame video asli dan frame yang diprediksi. Pada saat yang sama, jika Anda ingin memahami lebih dalam tentang data sisa, Anda perlu memahami konsep berikut, seperti yang ditunjukkan di bawah ini:

  1. bingkai yang diprediksi : Selama proses pengkodean video, prediksi intra (Intra Prediction) atau prediksi antar (Inter Prediction) akan digunakan untuk menghasilkan frame prediksi. Prediksi intra didasarkan pada informasi piksel dari frame saat ini, sedangkan prediksi antar didasarkan pada informasi kompensasi gerakan dari frame sebelumnya atau berikutnya.

  2. bingkai asli: Mengacu pada bingkai gambar asli yang sebenarnya diambil dalam urutan video.

  3. Perhitungan sisa : Data sisa dihitung dengan mengurangkan frame prediksi dari frame aslinya. Data sisa mewakili perbedaan antara frame yang diprediksi dan frame aslinya.

Dengan landasan konsep di atas, kita dapat memahami lebih jauh ciri-ciri data sisa:

  • Data sisa biasanya memiliki keacakan spasial yang tinggi karena kerangka prediksi telah menghilangkan sebagian besar informasi yang berlebihan. Keacakan ini membuat data sisa cocok untuk kompresi lebih lanjut melalui transformasi dan kuantisasi.

  • Setelah data sisa diproses dengan Integer Discrete Cosine Transform (IDCT) dan kuantisasi, jumlah data dapat dikurangi secara signifikan. Transformasi mengubah informasi spasial dua dimensi dari sisa menjadi informasi frekuensi, sementara kuantisasi mengurangi keakuratan koefisien ini dan menghilangkan detail yang tidak terlihat oleh mata manusia.

Tujuan pengkodean data sisa adalah untuk mengurangi bitrate data video dengan tetap menjaga kualitas gambar semaksimal mungkin. Pada saat yang sama, kompresi data sisa yang efektif sangat penting untuk efisiensi pengkodean H.264, karena secara langsung mempengaruhi kualitas video yang dikodekan dan bandwidth penyimpanan atau transmisi yang diperlukan.

2.3 Konsep terkait pengkodean entropi dan interpretasi yang diperluas

Pengkodean entropi adalah teknik kompresi data lossless berdasarkan konsep entropi informasi dan bertujuan untuk merepresentasikan data dengan bit sesedikit mungkin. Ide inti dari pengkodean entropi adalah mengalokasikan lebih sedikit bit ke simbol yang lebih mungkin muncul, dan mengalokasikan lebih banyak bit ke simbol yang lebih jarang muncul. Dengan cara ini, ruang penyimpanan atau bandwidth transmisi yang diinginkan berkurang karena rata-rata bitrate seluruh kumpulan data berkurang.

Pengkodean entropi sering digunakan untuk teks dan beberapa jenis kompresi data tertentu, dan ini dapat meningkatkan efisiensi kompresi secara signifikan, terutama ketika data memiliki distribusi probabilitas yang sangat tidak seragam. Dalam pengkodean kompresi video, metode pengkodean entropi yang paling erat kaitannya dengan kompresi video meliputi:

  • Pengkodean Huffman : Pengkodean Huffman adalah teknologi pengkodean entropi dasar yang digunakan dalam banyak standar kompresi video (seperti seri JPEG, MPEG). Ini memberikan kode panjang variabel untuk setiap simbol melalui pohon Huffman yang dibangun berdasarkan frekuensi kemunculan simbol.
  • Pengkodean Aritmatika : Pengkodean aritmatika diadopsi di beberapa standar kompresi video (seperti JPEG-LS, JPEG 2000). Ia menggunakan interval pecahan untuk mewakili distribusi probabilitas data masukan dan umumnya memberikan efisiensi kompresi yang lebih baik daripada pengkodean Huffman.
  • Pengkodean aritmatika biner adaptif (CABAC) berbasis konteks : CABAC adalah metode pengkodean entropi yang digunakan dalam standar kompresi video H.264/AVC dan H.265/HEVC. Ini menggabungkan konsep pengkodean aritmatika dan adaptasi konteks, dan secara dinamis dapat menyesuaikan model probabilistik pengkodean berdasarkan informasi kontekstual, sehingga mencapai pengkodean yang lebih efisien.
  • Pengodean Panjang Variabel (VLC) : VLC adalah istilah umum yang digunakan untuk menggambarkan metode pengkodean, termasuk pengkodean Huffman, yang menetapkan kode panjang variabel ke simbol. Dalam kompresi video, VLC biasanya mengacu pada metode pengkodean yang digunakan untuk merepresentasikan koefisien transformasi dan sebagainya.

Dalam kompresi video, pengkodean entropi adalah langkah pengkodean terakhir yang digunakan untuk mengkodekan data sisa setelah prediksi intra dan antar. Data sisa adalah selisih antara data asli dan data prediksi dan biasanya memiliki energi yang lebih kecil dan distribusi probabilitas yang lebih tidak merata. Melalui pengkodean entropi, kecepatan bit data sisa ini dapat dikurangi lebih lanjut, sehingga mencapai tujuan kompresi data video.