Saya perlu gambar dalam faktor secara horizontal dan secara vertikal ( , < ).
Saya ingin menggunakan filter low-pass yang terbatas sebelum downsampling.
Bagaimana saya harus menentukan parameter filter low-pass ( dan Gaussian ) untuk mendapatkannya sebagai fungsi dan ?
Secara khusus, saya menarik dalam kasus di mana .
image-processing
gaussian
Ben-Uri
sumber
sumber
Jawaban:
Anda harus berpikir tentang perubahan frekuensi Nyquist antara kedua gambar. Jika frekuensi Nyquist dari gambar asli adalah N, gambar downsampled akan memiliki frekuensi Nyquist yang lebih rendah, xN, di mana x terkait dengan rasio ukuran antara gambar akhir dan gambar awal. Anda perlu menghapus frekuensi spasial yang lebih tinggi dari xN pada gambar asli sebelum menurunkannya.
Spektrum daya Gaussian di ruang gambar, juga merupakan Gaussian di ruang frekuensi. Jika kita mengabaikan dimensi kedua untuk sesaat, Gaussian di ruang gambar didefinisikan sebagai exp (-x ^ 2 / s ^ 2), di mana x mewakili piksel Anda. Ini dipetakan ke ruang frekuensi sebagai exp (-w ^ 2 * s ^ 2), di mana w adalah frekuensi. Parameter sigma menunjukkan bahwa Gaussian luas dalam ruang gambar, sesuai dengan Gaussian sempit dalam ruang frekuensi.
Anda ingin memilih parameter sigma yang menghasilkan nilai yang sangat rendah dalam ruang frekuensi pada frekuensi yang sesuai dengan frekuensi Nyquist dari gambar sampel bawah.
sumber
Sudah ditunjukkan bahwa dan m harus dipilih berdasarkan σ .n m σ
Saya telah menghabiskan beberapa waktu berpikir tentang cara memilih terbaik. Berikut ini pertimbangan saya. tl; dr: Mungkin saya melakukan kesalahan, tetapi σ 2 ≈ 3,37 sepertinya pilihan yang baik untuk down-sampling dengan faktor 2.σ σ2≈ 3.37
sumber
Jika Anda melakukan perampingan besar (katakanlah 2x, 3x, 4x) Anda dapat melakukan rata-rata piksel untuk mencapai anti-aliasing yang baik. Itulah sebabnya mengapa anti-aliasing menggunakan banyak CPU / GPU tambahan untuk membuat video game terlihat lebih tajam.
Karena Anda beralih dari gambar 1000x1000 ke gambar 707x707 (hanya contoh untuk faktor skala), Anda benar bahwa aliasing mungkin menjadi masalah.
Untungnya ini adalah masalah yang sudah banyak orang temui dan cukup banyak pekerjaan yang harus diselesaikan. Dalam banyak kasus interpolasi bikubik adalah cara yang harus dilakukan. Ada beberapa contoh bagaimana metode interpolasi yang berbeda terlihat di sini:
http://www.compuphase.com/graphic/scale.htm
Pengubahan ukuran OpenCV memiliki beberapa metode bawaan:
http://opencv.willowgarage.com/documentation/cpp/geometric_image_transformations.html#cv-resize
Jika Anda telah bermain-main dengan beberapa metode interpolasi tersebut dan mereka tidak berfungsi dengan baik, silakan posting beberapa jenis gambar sumber sampel dan gambar hasil sampel yang menunjukkan kekurangan. Kami membutuhkan ini untuk mendiagnosis masalah dan mencoba dan menemukan solusi yang baik untuk itu.
sumber
Saya tidak punya jawaban yang bagus untuk Anda, tetapi ada 2 opsi yang bisa Anda coba:
sumber
sumber