¿Cuál es el razonamiento fundamental para el suavizado usando múltiples muestras aleatorias dentro de un píxel?

12

En los gráficos, es común tomar múltiples muestras dentro de los límites de un píxel y combinarlas (lo más común es hacer un promedio) para obtener un color de píxel de muestra final. Esto tiene el efecto de suavizar una imagen.

Por un lado, esto tiene sentido para mí porque lo que estás haciendo efectivamente es integrar el color del píxel sobre el área que representa el píxel. En esta línea de pensamiento, promediar muestras "aleatorias" parece ser la configuración ideal para hacer la integración de Monte Carlo. ("aleatorio" podría ser estratificado, basado en ruido azul, secuencias de baja discrepancia, etc.)

Por otro lado, esto se siente mal (o al menos no tan correcto como podría ser) desde el punto de vista del procesamiento de la señal digital. Desde ese punto de vista, parece que estamos tomando muchas muestras y luego reducimos la muestra usando un filtro de cuadro (cuadro borroso) para obtener el valor final de píxeles. Desde ese punto de vista, parece que lo ideal sería usar un filtro sinc en lugar de promediar las muestras. Pude ver que el filtro de caja es una aproximación más barata al pensamiento simple a lo largo de estas líneas.

Esto me deja un poco confundido. ¿Es correcta la idea central de que estamos integrando el área de píxeles y el promedio? ¿O es que estamos disminuyendo el muestreo y deberíamos usar sinc, pero estamos usando un filtro de caja porque es rápido?

¿O es algo completamente diferente?

Un poco relacionado: Anti-aliasing / Filtrado en Ray Tracing

Alan Wolfe
fuente
Estoy encontrando algunas respuestas aquí: groups.csail.mit.edu/graphics/classes/6.837/F04/lectures/…
Alan Wolfe

Respuestas:

9

Desde el punto de vista del procesamiento de la señal, está muestreando una señal de dominio continuo y necesita filtrarla para eliminar las frecuencias más allá del límite de Nyquist. Es ese filtrado lo que lleva a la integración sobre el área de píxeles, o más generalmente, a la integración sobre el soporte de su núcleo antialiasing (que no necesita ser una caja).

Considere su función de representación que toma un punto de muestra en el espacio de la pantalla y devuelve el color encontrado en ese punto. (Por el momento, ignoremos cualquier problema de muestreo aleatorio, y supongamos que devuelve un color renderizado "perfecto" para ese punto específico). Esta función define efectivamente una señal de dominio continuo 2D. O para decirlo de otra manera, define una imagen de resolución infinita , ya que nada impide que esta función tenga características a escalas arbitrariamente pequeñas. En términos de dominio de frecuencia: la función no está limitada en banda; Puede incluir componentes de frecuencias espaciales arbitrariamente altas.x,y

Ahora desea convertirlo a un número finito de píxeles. Al igual que digitalizar una señal de audio, cuando la muestreas, obtendrás alias a menos que primero elimines las frecuencias más allá del límite de Nyquist impuesto por la frecuencia de muestreo. En otras palabras, debe deshacerse de las características más pequeñas que la cuadrícula de píxeles. Para hacer esto, aplica un filtro de paso bajo. El filtro de paso bajo ideal es la función sinc, pero por varias razones prácticas utilizamos otros filtros (que no eliminan perfectamente las frecuencias más allá del límite de Nyquist, pero al menos las atenúan).

El filtrado de paso bajo se realiza por convolución. Si es la función de representación es un núcleo de filtro, entonces podemos definir la imagen filtrada de paso bajo como:k ( x , y )f(x,y)k(x,y)

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

Entonces, la imagen es segura para muestrear, por lo que los valores finales de píxeles se obtienen simplemente evaluando en las coordenadas de píxeles.ffiltered

Si es un filtro de caja, que se ve como dentro de la caja de píxeles y otra parte, entonces esto se simplifica a solo integrar sobre la caja de píxeles. Pero como se señaló, el filtro de caja no es tan bueno y hay mejores opciones como carpa, bicúbicos y filtros gaussianos.kk=1k=0f

De todos modos, ahora que tenemos una integral, podemos usar Monte Carlo para ello y combinarlo con cualquier otra integral que nos gustaría hacer, para iluminación, desenfoque de movimiento, etc. Incluso podemos aplicar muestreo de importancia al factor en la integral, generando muestras para cada píxel que se distribuyen alrededor del centro de píxeles de acuerdo con .kk

Nathan Reed
fuente
Excelente respuesta, como siempre.
ivokabel
4

De hecho, estás haciendo ambas cosas. Está integrando el área y debido a que su resultado sigue siendo muestras discretas, está reconstruyendo la señal para que funcione continuamente. Por lo tanto, el filtrado de orden superior. (También el ojo humano es una muestra discreta, por lo que también reconstruye la señal)

Me llevó una cantidad considerable de tiempo entender esta explicación. Lo que me ayudó fue un artículo de Tony Apodaca titulado The Lore of TDs .

joojaa
fuente
Gracias por el gran enlace! el último enlace en esa página parece sumergirse en esto. En términos prácticos, ¿sabes si hacer algo por encima de un cuadro borroso realmente da mucha diferencia visual? ¿O daría algún impulso a la convergencia?
Alan Wolfe
2
Es el mejor manual para conceptos de representación de gráficos en 3D que he visto (aunque no es tanto sobre cosas físicas o de rastreo, sino de todos modos). Una imagen filtrada de sinc es mucho más nítida que el filtro de caja que da una apariencia muy borrosa. ¿Sería más rápido? Lo dudo.
joojaa
Parece que ese enlace se ha ido ahora. ¿A qué título te refieres como la mejor cartilla 3D que has leído?
johnbakers