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
fuente
Respuestas:
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)
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.k k=1 k=0 f
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 .k k
fuente
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 .
fuente