Parameter filter low-pass untuk downsampling gambar


11

Saya perlu gambar dalam faktor secara horizontal dan secara vertikal ( , < ).sxsysxsy1

Saya ingin menggunakan filter low-pass yang terbatas sebelum downsampling.n×m

Bagaimana saya harus menentukan parameter filter low-pass ( dan Gaussian ) untuk mendapatkannya sebagai fungsi dan ?n,mσsxsy

Secara khusus, saya menarik dalam kasus di mana .sx=sy=1/2


pertanyaan terkait [yang ditanyakan di sini] [1] [1]: stackoverflow.com/questions/3149279/…
isrish

1
Terima kasih, tetapi pertanyaan ini bukan tentang bagaimana menentukan parameter filter sebagai fungsi dari faktor downscaling.
Ben-Uri

Berapa banyak yang ingin Anda filter? Apa tujuanmu

1
Saya ingin menggunakan filter low pass sebelum pengambilan sampel untuk menghindari alias. Saya ingin menyimpan sebanyak mungkin informasi tanpa alias.
Ben-Uri

1
Anda perlu melihat transformasi Fourier dari filter untuk mengetahui seberapa baik itu akan memotong frekuensi aliasing sambil menjaga frekuensi di bawah batas Nyquist dari hasil sampel. Transformasi gaussian adalah gaussian lain, artinya tidak ada cutoff yang tajam. Hampir selalu ada pilihan yang lebih baik.
Mark Ransom

Jawaban:


4

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.


Benar, tetapi bagaimana saya menerjemahkan ini ke kernel konvolusi diskrit? (ini pertanyaannya)
Ben-Uri

lihat hasil edit pls ...
NoNameNo

Terima kasih, tetapi masih ada rumus untuk menemukan sigma sebagai fungsi dari frekuensi maksimum yang seharusnya ada di hasil keluaran?
Ben-Uri

saya tidak tahu formula apa pun.
NoNameNo

1

Sudah ditunjukkan bahwa dan m harus dipilih berdasarkan σ .nmσ

Saya telah menghabiskan beberapa waktu berpikir tentang cara memilih terbaik. Berikut ini pertimbangan saya. tl; dr: Mungkin saya melakukan kesalahan, tetapi σ 23,37 sepertinya pilihan yang baik untuk down-sampling dengan faktor 2.σσ23.37


0

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.


berkomentar, meski cepat, rata-rata piksel bukan solusi ideal untuk kualitas. rata-rata piksel secara efektif menerapkan filter persegi. dalam ruang frekuensi, ini sama dengan mengalikan dengan fungsi sinc yang berosilasi dengan nol penyeberangan pada harmonik Nyquist. ini memiliki dua masalah: 1. itu melemahkan frekuensi tinggi tetapi tidak banyak 2. itu membalikkan fase di setiap sisi lobus lainnya. Baik (1) dan (2) dapat berkontribusi untuk alias.
thang

0

Saya tidak punya jawaban yang bagus untuk Anda, tetapi ada 2 opsi yang bisa Anda coba:

  • σ3σ
  • jika Anda bersedia melakukan perhitungan pengambilan sampel sinyal yang bagus, lalu mengapa tidak menggunakan transformasi Fourier? Ambil FFT gambar Anda, simpan hanya bagian yang sesuai dengan ukuran target Anda, dan balikkan transformasi. Ini akan menerapkan filter anti-aliasing pada spektrum Anda. Jika ada terlalu banyak artefak (riak, dering) untuk Anda, maka terapkan pada spektrum Gaussian filter Anda yang lebarnya sesuai dengan ukuran target Anda.

0

s=1/2

[1,2,1]T[1,2,1]

Anda salah. Apakah Anda lupa faktor skala 0,25? ... dan jika demikian, ini adalah pilihan umum untuk s = 1/2 bukan 1 / sqrt (0,5).
Ben-Uri

Ada komentar tentang pendapat @ Ben-Uri? Sistem menandai pos ini sebagai berkualitas rendah karena panjangnya. Harap pertimbangkan untuk merevisi atau menghapusnya.
Peter K.

1
ss2

ssσσsx,sy
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.