informasi kontak saya
Surat[email protected]
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.
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.
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).
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.
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:
Langkah-langkah eksekusi pengelompokan bingkai H264:
Ketika pengelompokan selesai, masalah kompresi prediksi frame mulai terpecahkan.
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.
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)。
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.
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:
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.
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:
Interpretasi Redundansi Temporal:
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:
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.
bingkai asli: Mengacu pada bingkai gambar asli yang sebenarnya diambil dalam urutan video.
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.
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:
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.