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 :
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 menemukan gambar yang bagus yang mendokumentasikan beberapa di antaranya.
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.
sumber
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.
sumber