Apakah Anda perlu menggunakan filter lowpass sebelum memperkecil ukuran gambar?

8

Rupanya interpolasi pixel bicubic baik untuk meningkatkan atau menurunkan gambar (secara real time atau tidak).

Apakah disarankan untuk menggunakan filter lowpass sebelum perampingan, atau apakah pengambilan sampel bikubik menangani masalah alias sama sekali?

Alan Wolfe
sumber
1
Saya agak bingung dengan premis Anda ... bagaimana filter lowpass secara kualitatif berbeda dari downsampling? Maksud saya, saya mendapatkan bahwa algoritme berbeda dan semuanya tetapi mereka berdua mengumpulkan sampel dari piksel tetangga dan menekan frekuensi tinggi. Perbedaan besar adalah resolusi gambar hasil, jika tidak, kedua operasi adalah isomorfik. Sepertinya menerapkan keduanya berlebihan.
Jorge Rodriguez
Nah, inilah yang membingungkan saya. Saya tahu bahwa Anda tidak bisa hanya mengurangi sampel gambar tanpa mendapatkan aliasing. Melakukan interpolasi bikubik piksel saat membuat gambar lebih besar berfungsi dengan sangat baik dan terlihat bagus. Melakukan hal yang sama ketika membuat gambar TAMPILAN lebih kecil untuk bekerja dengan baik, tetapi saya tidak yakin apakah hasilnya cenderung memiliki banyak alias sebagai hasilnya. Saya bertanya-tanya apakah secara teknis, Anda perlu melakukan semacam low pass filter pada gambar sebelum melakukan bicubic sampling, atau apakah bicubic sampling cukup baik dalam praktiknya? Saya bisa melihatnya sebagai filter low pass sendiri mungkin.
Alan Wolfe
1
Makalah Mitchell-Netravali yang saya sebutkan dalam pertanyaan lain membahas ide ini secara khusus - ia menggeneralisasi kubik dan kemudian menemukan parameter yang alias paling sedikit. Itu tidak berarti mereka tidak alias sama sekali, tapi mungkin itu akan mengarahkan Anda ke kubik mana yang digunakan untuk meminimalkan alias.
Jorge Rodriguez

Jawaban:

7

Jika downsampling pass dirancang dengan benar, maka secara efektif akan melakukan penyaringan low-pass sebagai bagian dari downsampling. Tidak perlu untuk operasi filter low-pass yang terpisah.

Pada dasarnya, ketika Anda melakukan downsample, Anda melakukan filter terhadap piksel gambar sumber (resolusi tinggi), tetapi hanya mengevaluasinya di lokasi piksel tujuan (resolusi rendah). Jejak filter ini harus kira-kira berjarak antara piksel tujuan, untuk menghindari informasi yang hilang dengan melompati piksel sumber di-antara. Tetapi itu berarti tapak tapak akan menjadi beberapa piksel sumber lebar, sehingga secara efektif akan melewatkan sumber yang rendah.

Misalnya, anggap Anda menurunkan sampel gambar dengan tepat 10x pada setiap sumbu. Dengan filter kotak (misalnya,), Anda akan menetapkan setiap piksel tujuan ke rata-rata kotak 10x10 piksel sumber. Itu akan menghapus semua fitur yang lebih kecil dari 10px, jadi ini adalah filter low-pass.

Anda menyebutkan interpolasi bikubik; kita harus membuat perbedaan antara pemfilteran dan interpolasi di sini. Interpolasi sesuai untuk upsampling, bukan downsampling. Interpolasi bicubic bekerja dengan memasang patch bicubic spline ke lingkungan piksel 4x4, kemudian mengevaluasi patch pada titik-titik yang diinterpolasi. Meskipun mungkin bekerja cukup baik untuk downsampling gambar dengan faktor kecil (hingga 2x atau lebih), itu akan gagal jika Anda melangkah lebih jauh dari itu. Misalnya, jika downsampling sebesar 10x seperti pada contoh sebelumnya, Anda dapat melihat bahwa bicubic akan kehilangan sebagian besar piksel sumber, dan hasilnya mungkin sangat berbeda.

Di sisi lain, pemfilteran bikubik hanyalah pemfilteran standar, menggunakan kernel yang merupakan fungsi bikubik (berbeda dengan kernel kotak, segitiga, Gaussian, Lanczos, dll.). Kernel Mitchell-Netravali adalah contoh klasik dari jenis ini. Jika digunakan untuk downsampling, kernel harus berukuran tepat untuk penspasian piksel tujuan seperti yang dibahas sebelumnya, dan Anda akan menjumlahkan semua piksel dalam tapak, bukan hanya 4x4 atau lingkungan berukuran tetap lainnya.

Nathan Reed
sumber