Algoritma pengubahan ukuran mana yang dipilih untuk video?


21

Saya menggunakan VirtualDub untuk penyandian dengan pengaturan itu . mengubah ukuran algoritma

Namun saya merekam barang saya di 1920x1080 dan mengubah ukurannya menjadi 1280x720. Sekarang pertanyaannya: algoritma apa yang harus saya pilih saat membuat keputusan yang seimbang antara kualitas dan ukuran file?

Saya selalu menggunakan Lanczos karena itulah yang sudah dikonfigurasikan sebelumnya. Deskripsi itu tidak benar-benar membantu saya dalam pertanyaan saya.

Jawaban:


25

TL; DR

Saat mengambil sampel: Gunakan penyaringan Lanczos atau Spline.

Saat mengambil sampel: Gunakan penyaringan Bicubic atau Lanczos.

Ini didasarkan pada bahan yang saya baca selama bertahun-tahun, dan dari apa yang saya lihat digunakan di industri. Rekomendasi dapat bervariasi tergantung pada jenis konten dan area aplikasi.

Mengapa itu penting?

Dapat diperdebatkan bahwa filter ukuran tidak begitu penting ketika Anda menurunkan skala video. Lebih penting lagi, mereka memiliki dampak pada kualitas ketika upscaling, karena Anda perlu menghasilkan data di tempat yang tidak ada di tempat pertama.

Semua filter ini hanya berdampak kecil pada ukuran file. Karena itu Anda tidak perlu khawatir tentang perbedaan besar di sana.

Faktanya adalah, seperti biasa ketika meng-encode video, bahwa hasilnya sangat tergantung pada bahan sumbernya. Anda tidak selalu dapat memprediksi hasilnya, tetapi lihat saja apa yang paling cocok untuk Anda.

Algoritma yang berbeda

Sebagai contoh, inilah interpolasi bicubic vs bilinear :

     masukkan deskripsi gambar di sini

Lihat bahwa interpolasi bikubik menghasilkan tepi yang lebih halus? Itu pernyataan yang sangat umum ... tetapi Anda dapat menemukan ikhtisar algoritma penskalaan gambar di sini .

  • Interpolasi bilinear menggunakan lingkungan 2x2 piksel dan kemudian mengambil rata-rata piksel ini untuk menginterpolasi nilai baru. Ini bukan algoritma terbaik, tetapi lebih cepat.

  • Interpolasi bikubik menggunakan lingkungan 4x4 piksel, menimbang piksel terdalam lebih tinggi, dan kemudian mengambil rata-rata untuk menginterpolasi nilai baru. Ini - sejauh yang saya ketahui - yang paling populer.

  • Rata-rata area menggunakan pemetaan piksel sumber dan tujuan, rata-rata piksel sumber terkait dengan fraksi piksel tujuan yang dicakup. Menurut halaman ini , itu harus menghasilkan hasil yang lebih baik ketika downsampling.

  • Interpolasi spline dan sinc menggunakan polinomial tingkat tinggi dan karenanya lebih sulit untuk dihitung daripada interpolasi bikubik. Saya tidak berpikir peningkatan keseluruhan dalam waktu pemrosesan layak digunakan.

  • Resampling Lanczos juga melibatkan filter sinc. Ini lebih mahal secara komputasi tetapi biasanya digambarkan sebagai kualitas yang sangat tinggi dan dapat digunakan untuk naik-turun.

  • hqx dan jugafilter 2xSaI digunakan untuk penskalaan pixel-art (mis. emulator game). Saya rasa tidak ada alasan bagus untuk menggunakannya dalam video.

Perbandingan Jeff Atwood

Ternyata Jeff Atwood melakukan perbandingan algoritma interpolasi gambar . Aturan praktisnya adalah menggunakan interpolasi bicubic untuk downsampling dan interpolasi bilinear saat upsampling. Yang mengatakan, ini bukan apa yang biasanya direkomendasikan untuk encoding video - dan beberapa komentator telah menimbulkan keraguan tentang keahlian Atwood di lapangan.

Namun, dia juga menyebutkan bahwa ...

Mengurangi gambar adalah operasi yang sepenuhnya aman dan rasional. Anda hanya mengurangi ketepatan dan resolusi dengan membuang informasi. Jadikan gambar sekecil yang Anda inginkan, dan Anda memiliki kesetiaan lengkap - dalam batas jumlah piksel yang Anda izinkan. Anda akan mendapatkan hasil yang baik apa pun algoritma yang Anda pilih. (Ya, kecuali Anda memilih algoritma Pixel Resize atau Nearest Neighbor.)

Contoh lainnya

Berikut adalah beberapa contoh algoritma interpolasi gambar , termasuk yang saya sebutkan di atas.

Saya juga menemukan dokumen (aturan adegan) dari adegan pengkodean video yang secara eksplisit melarang penyaringan bicubic untuk downsampling. Sebaliknya, mereka mendukung Lanczos, Spline, atau resampling "Blackman".


Saya dulu selalu menggunakan "bicubic tepat A = 100". Pada penginstalan ulang dari program yang diperbarui itu adalah Lanczos default, banyak orang menyukainya. Saya meninggalkannya seperti itu untuk waktu yang lama. Akhirnya saya berkeliling untuk menonton hal-hal yang kemudian dikodekan Lanczos, dan berpikir itu tidak sebagus, set kode berikutnya, saya mengubahnya kembali menjadi bikubik. Saya juga menekan kompresi, saya pikir Lanczos mungkin tampak lebih baik jika saya tidak mencoba untuk mengurangi ukuran data total begitu banyak.
Psycogeek

2
FWIW Saya tidak akan menganggap Jeff Atwood ahli dalam pemrosesan gambar, dan dalam artikel itu dia tidak memeriksa apa pun selain bilinear, tetangga terdekat atau (satu varian tertentu) bikubik. Kebanyakan orang akan menyetujui rekomendasinya untuk menggunakan bilinear ketika memperbesar adalah salah.
thomasrutter

1
@ thomasrutter Terima kasih. Saya setuju dengan Anda — ketika saya menulis ini, saya mungkin tidak tahu banyak tentang pemrosesan gambar seperti yang saya lakukan sekarang. Saya kira saya akan menghapus referensi ke artikel itu dan menemukan beberapa sumber lain.
slhck

8

Saya menemukan gambar yang bagus yang mendokumentasikan beberapa di antaranya.

masukkan deskripsi gambar di sini

Versi ukuran penuh di sini .

Secara umum Anda menginginkan efek penajaman ringan saat membuat gambar yang lebih besar menjadi yang lebih kecil, dan efek buram ringan saat membuat gambar yang lebih kecil menjadi yang lebih besar. Filter MadVR menetapkan default ke Lanczos untuk upscaling dan bicubic untuk downscaling.


2

Anda mengonversi 3x3 piksel asli ke piksel target 2x2.

Jika Anda ingin mempertahankan garis-garis tajam, pilih Lanczos atau sesuatu yang menggunakan lebih banyak piksel di sekitarnya untuk tidak mengaburkan garis-garis tajam (seperti bulu atau pantulan)

Kalau tidak, rata-rata area dll (juga bilinear / trilinear) sudah cukup.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.