Downsampling gambar dengan faktor integer

16

Ketika downsampling gambar dengan faktor bilangan bulat , metode yang jelas adalah mengatur piksel dari gambar keluaran ke rata-rata blok yang sesuai pada gambar input.nn×n

Saya ingat samar-samar setelah membaca di suatu tempat bahwa metode ini tidak optimal (maaf saya tidak ingat rinciannya)

Benarkah ada metode yang lebih baik (dan jika demikian, di mana metode di atas gagal, walaupun tampaknya "jelas" benar)? Saya tidak tahu banyak tentang pemrosesan sinyal, pertanyaan ini hanya menarik minat saya.

Styg Oldenbaum
sumber
jika Anda tidak memiliki latar belakang pemrosesan sinyal, penjelasan orang awam adalah: Ada metode yang lebih baik untuk downsampling. Algoritma downsampling Anda secara teknis akan membuat ukuran piksel gambar lebih kecil oleh N TETAPI algoritma yang dijelaskan di atas akan sangat menurun kualitasnya dibandingkan dengan algoritma downsampling yang lebih baik.
Trevor Boyd Smith

Jawaban:

16

Downsampling gambar mengurangi jumlah sampel yang dapat mewakili sinyal. Dalam hal domain frekuensi, ketika sinyal downsampled, bagian frekuensi tinggi dari sinyal akan alias dengan bagian frekuensi rendah. Ketika diterapkan pada pemrosesan gambar, hasil yang diinginkan adalah hanya mempertahankan porsi frekuensi rendah. Untuk melakukan ini, gambar asli perlu diproses terlebih dahulu (alias difilter) untuk menghapus bagian frekuensi tinggi sehingga aliasing tidak akan terjadi.


Filter digital optimal untuk menghilangkan bagian frekuensi tinggi (dengan cutoff paling tajam) adalah fungsi sinc . Alasannya adalah bahwa representasi domain frekuensi fungsi Sinc adalah 1 yang hampir konstan di seluruh wilayah frekuensi rendah, dan hampir konstan 0 di seluruh wilayah frekuensi tinggi.

tulus(x)=dosa(πx)πx

Respons impuls filter sinc tidak terbatas. Filter Lanczos adalah filter sinc yang dimodifikasi yang melemahkan koefisien sinc dan memotongnya begitu nilai turun menjadi tidak signifikan.


Namun, menjadi optimal dalam domain frekuensi tidak berarti menjadi optimal di mata manusia. Ada metode upsampling dan downsampling yang tidak mematuhi transformasi linear tetapi menghasilkan hasil yang lebih baik daripada yang linear.


Berkenaan dengan pernyataan tentang , penting untuk diingat bahwa selama pengambilan sampel gambar, pilihan korespondensi koordinat antara sinyal resolusi tinggi dan sinyal resolusi rendah tidak sewenang-wenang, juga tidak cukup untuk menyelaraskannya. ke asal yang sama (0) pada garis angka nyata atau diskrit.n×n

Persyaratan minimum dalam korespondensi koordinat adalah itu

  1. Upsampling gambar yang mengandung nilai acak sembarang oleh faktor integer, kemudian downsampling oleh faktor integer yang sama, harus menghasilkan gambar yang sama dengan perubahan minimal secara numerik.
  2. Upsampling / downsampling gambar yang hanya terdiri dari satu nilai seragam, diikuti oleh operasi yang berlawanan, harus menghasilkan gambar yang terdiri dari nilai yang sama secara seragam, dengan penyimpangan numerik minimal.
  3. Menerapkan pasang surut / downsampling berulang kali harus meminimalkan kemungkinan pergeseran dalam konten gambar.
rwong
sumber
Apa yang Anda maksud dengan transformasi fungsi sinc menjadi "hampir" 1 dan 0 di masing-masing wilayah?
@ Tim: Fenomena Gibbs di dekat frekuensi cutoff dari filter sinc.
rwong
2
Resampling Sinc hanya masuk akal pada sinyal yang dirasakan / diproses dalam domain frekuensi, seperti audio. Gambar dirasakan, setidaknya kira-kira, dalam domain spasial (ini masih bisa diperdebatkan; ada kemungkinan bahwa beberapa persepsi pola yang berulang di domain frekuensi) dan setiap transformasi berbasis domain frekuensi menghasilkan distorsi buruk (dering, dll.) Di domain spasial. Pada dasarnya, setiap operasi konvolusi / linier dengan koefisien negatif apa pun akan menghasilkan artefak yang tidak menyenangkan, dan siapa pun dengan semua koefisien nonnegatif akan menghasilkan blur.
R .. GitHub BERHENTI MEMBANTU ICE
6

Anda benar bahwa area-rata-rata cukup dekat dengan "paling benar" yang bisa Anda dapatkan, tetapi masalahnya adalah perilaku yang tidak konsisten ketika menurunkan skala garis lebar-N yang tajam dengan faktor N. Jika lokasi garis disesuaikan modulo N, Anda akan mendapatkan garis 1-piksel yang tajam, tetapi jika kira-kira N / 2 mod N, Anda akan mendapatkan garis yang sangat kabur (lebar 2 piksel pada setengah intensitas). Ini bisa terlihat sangat buruk, dan dengan gamma nonlinear, bahkan akan menghasilkan perbedaan intensitas. (Idealnya semua resampling harus dilakukan dengan gamma yang dikoreksi untuk skala intensitas linier, tetapi dalam praktiknya hampir tidak ada yang melakukannya karena sangat mahal.)

Jika Anda ingin meningkatkan ini, Anda harus terlebih dahulu menerima kenyataan bahwa dalam beberapa kasus tidak mungkin untuk mengurangi keburaman, sehingga satu-satunya cara untuk mendapatkan hasil yang seragam adalah dengan meningkatkan keburaman. Cara yang ideal adalah menggunakan kernel gaussian dengan jari-jari lebih besar dari N / 2, daripada fungsi langkah, sebagai fungsi konvolusi dengan gambar sumber. Namun demikian, cara murah untuk menerapkan pendekatan, jika Anda sudah memiliki implementasi rata-rata area N-by-N, adalah hanya menerapkan konvolusi blur (1 / 4,1 / 2,1 / 4) ke hasil putaran bawah yang dihasilkan oleh sampel yang downsampled gambar.

R .. GitHub BERHENTI MEMBANTU ICE
sumber