Apa alasan mendasar anti aliasing menggunakan beberapa sampel acak dalam satu piksel?


12

Dalam grafik, adalah umum untuk mengambil beberapa sampel dalam batas-batas piksel dan menggabungkannya bersama-sama (umumnya hanya melakukan rata-rata) untuk warna piksel sampel akhir. Ini memiliki efek anti aliasing gambar.

Di satu sisi ini masuk akal bagi saya karena apa yang Anda lakukan secara efektif adalah mengintegrasikan warna piksel di atas area yang diwakili piksel. Dalam alur pemikiran ini, rata-rata sampel "acak" tampaknya merupakan pengaturan yang ideal, untuk melakukan integrasi monte carlo. ("acak" dapat distratifikasi, berbasis noise biru, urutan perbedaan rendah dll)

Di sisi lain, ini terasa salah (atau setidaknya tidak seakurat mungkin) dari sudut pandang pemrosesan sinyal digital. Dari sudut pandang itu, rasanya seperti kami mengambil banyak sampel dan kemudian downsampling menggunakan kotak filter (kotak blur) untuk mendapatkan nilai piksel akhir. Dalam hal itu, sepertinya hal yang ideal untuk dilakukan adalah menggunakan penyaringan sinc daripada rata-rata sampel. Saya bisa melihat bahwa filter kotak adalah pendekatan yang lebih murah untuk pemikiran yang tulus di sepanjang garis-garis ini.

Ini membuat saya sedikit bingung. Apakah ide inti bahwa kami mengintegrasikan area piksel dan rata-rata sudah benar? Atau apakah kita downsampling dan harus menggunakan sinc, tetapi menggunakan filter kotak karena cepat?

Atau itu sesuatu yang lain sama sekali?

Sedikit terkait: Anti-aliasing / Filtering di Ray Tracing


Jawaban:


9

Dari sudut pandang pemrosesan sinyal, Anda mengambil sampel sinyal domain kontinu, dan Anda perlu memfilternya untuk menghilangkan frekuensi di luar batas Nyquist. Penyaringan inilah yang mengarah pada pengintegrasian area pixel — atau lebih umum, pengintegrasian atas dukungan kernel antialiasing Anda (yang tidak harus berupa kotak).

x,y

Sekarang Anda ingin mengonversinya ke jumlah piksel yang terbatas. Sama seperti mendigitalkan sinyal audio, ketika Anda mengambil sampelnya, Anda akan mendapatkan aliasing kecuali Anda terlebih dahulu menghilangkan frekuensi di luar batas Nyquist yang dikenakan oleh laju sampling. Dengan kata lain, Anda harus menyingkirkan fitur yang lebih kecil dari pixel grid. Untuk melakukan ini, Anda menerapkan filter low-pass. The yang ideal low-pass filter adalah fungsi sinc, tetapi karena berbagai alasan kepraktisan kita menggunakan filter lainnya (yang tidak sempurna menghilangkan frekuensi di luar batas Nyquist, tapi mereka setidaknya menipiskan mereka).

f(x,y)k(x,y)

ffiltered(x,y)=f(x,y)k(xx,yy)dxdy

Maka gambar aman untuk sampel, sehingga nilai-nilai piksel akhir didapat dengan hanya mengevaluasi pada koordinat piksel.ffiltered

Jika adalah filter kotak, yang terlihat seperti di dalam kotak piksel dan tempat lain, maka ini menyederhanakan untuk hanya mengintegrasikan atas kotak piksel. Tetapi seperti yang disebutkan, filter kotak tidak begitu bagus dan ada pilihan yang lebih baik seperti filter tenda, bikubik, dan Gaussian.k = 1 k = 0 fkk=1k=0f

Bagaimanapun, sekarang kita memiliki integral, kita dapat menggunakan Monte Carlo untuk itu dan menggabungkannya dengan integral lain yang mungkin ingin kita lakukan — untuk penerangan, blur, dan sebagainya. Kita bahkan dapat menerapkan sampling penting ke faktor dalam integral, dengan menghasilkan sampel untuk setiap piksel yang didistribusikan di sekitar pusat piksel sesuai dengan .kkk


Jawaban yang bagus, seperti biasa.
ivokabel

4

Anda sebenarnya melakukan kedua hal tersebut. Anda mengintegrasikan area dan karena hasil Anda masih berupa sampel diskrit, Anda merekonstruksi sinyal untuk membuatnya berfungsi secara berkelanjutan. Oleh karena itu semakin tinggi penyaringan pesanan. (Juga mata manusia adalah sampler diskrit sehingga juga merekonstruksi sinyal)

Butuh banyak waktu bagi saya untuk menerima penjelasan ini. Hal yang membantu saya adalah makalah karya Tony Apodaca berjudul The Lore of TDs .


Terima kasih atas tautannya! tautan terakhir pada halaman itu tampaknya langsung membahas hal ini. Secara praktis, apakah Anda tahu kalau melakukan sesuatu di atas blur benar-benar memberi banyak perbedaan visual? Atau akankah hal itu memberi dorongan pada konvergensi?
Alan Wolfe

2
Ini primer terbaik untuk konsep rendering grafik 3D yang pernah saya lihat (Tough ini tidak begitu banyak tentang hal-hal berbasis fisik atau melacak tetapi tetap). Gambar yang disaring dengan tulus jauh lebih tajam daripada kotak filter memberikan tampilan dan nuansa yang sangat kabur. Akankah konvergen lebih cepat, saya ragu.
joojaa

Sepertinya tautan itu hilang sekarang. Judul apa yang Anda maksud sebagai 3d primer terbaik yang pernah Anda baca?
johnbakers
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.