ImageResize
Fungsi Mathematica mendukung banyak metode resampling .
Tidak akrab dengan daerah ini, di luar tetangga terdekat, bilinear, biquadratic dan bicubic (yang jelas dari namanya), saya tersesat.
Dapatkah Anda mengarahkan saya ke beberapa sumber yang akan menjelaskan perbedaan dasar (matematis) antara metode ini, dan khususnya menunjukkan perbedaan praktis (misalnya dengan menunjukkan gambar sampel di mana pilihan metode benar-benar penting dan memperkenalkan perbedaan yang nyata)?
Saya tidak memiliki latar belakang pemrosesan sinyal, jadi saya lebih suka pengantar yang "lembut" dan ringkas :-)
Saya akan menyalin di sini daftar ImageResize
metode bagi mereka yang "malas" untuk mengklik tautan:
"Terdekat" tetangga terdekat resampling
"Bilinear" interpolasi bilinear
"Biquadratic" interpolasi spline biquadratic
Interpolasi spline bikubik "bikubik"
"Gaussian" resampling Gaussian
"Lanczos" Metode interpolasi multivarian Lanczos
Interpolasi "kosinus" kosinus
"Hamming" mengangkat-kosinus Hamming interpolasi
"Hann" mengangkat interpolasi Hann-cosinus
"Blackman" tiga istilah umum cosinus terangkat
Interpolasi jendela segitiga "Bartlett"
"Connes" kuadratkan interpolasi Welch
Interpolasi kuadratik "Welch"
"Parzen" interpolasi satu demi satu kubik
"Kaiser" interpolasi Bessel modifikasi tanpa urutan yang dimodifikasi
sumber
Jawaban:
Diberikan gambar dengan m , n bilangan bulat, interpolasi gambar itu pada titik sembarang m ′ , n ′ dapat ditulis sebagaisaya( m , n ) m , n m′, n′
Seperti halnya fungsi jendela untuk sinyal temporal, mudah untuk mendapatkan inti dari apa yang dilakukan kernel interpolasi gambar dengan melihat respons frekuensinya. Dari jawaban saya pada fungsi jendela :
Ini cukup banyak berlaku untuk kernel interpolasi. Pilihannya pada dasarnya adalah pertukaran antara penyaringan frekuensi (pelemahan sidelobes), lokalisasi spasial (lebar mainlobe) dan mengurangi efek lain seperti dering (efek Gibbs), aliasing, kabur, dll. Misalnya, kernel dengan osilasi seperti karena kernel sinc dan kernel Lanczos4 akan memperkenalkan "dering" pada gambar, sedangkan resampling Gaussian tidak akan memperkenalkan dering.
Berikut ini contoh sederhana dalam Mathematica yang memungkinkan Anda melihat efek dari berbagai fungsi interpolasi:
Di sini,saya( x , y) , dan saya( m , n ) (kami tidak tahu bagaimana itu diperoleh). Kami akan interpolasisaya( m , n ) dengan 4x untuk memberi saya~( m′, n′) yang ukurannya sama dengan aslinya. Di bawah ini, saya menunjukkan hasil interpolasi ini dan perbandingan dengan gambar sebenarnya:
true
mewakili gambar yang saya anggap setara diskrit dari gambar "tepat"small
mewakili gambar skala yang lebih kecilAnda dapat melihat sendiri bahwa fungsi interpolasi yang berbeda memiliki efek yang berbeda. Terdekat dan beberapa lainnya memiliki fitur yang sangat kasar dan Anda pada dasarnya dapat melihat garis bergerigi (lihat gambar ukuran penuh, bukan tampilan kotak). Bicubic, biquadratic dan Parzen mengatasi hal ini tetapi menimbulkan banyak kekaburan. Dari semua kernel, Lanczos tampaknya (secara visual) menjadi yang paling menarik dan yang melakukan pekerjaan terbaik.
Saya akan mencoba mengembangkan jawaban ini dan memberikan contoh yang lebih intuitif menunjukkan perbedaan ketika saya punya waktu. Anda mungkin ingin membaca artikel yang cukup mudah dan informatif ini yang saya temukan di web (peringatan PDF).
sumber