obtención de la imagen 1. representación y manipulación de la escena. 2. definir la cámara y...
TRANSCRIPT
Discretización
• CRT o pantalla: Formado por pixels. 1. on-off
2. Niveles de gris.
3. Coloreados.
Discretización
• Es una matriz, problemas: 1. Pérdida de información.
2. Pueden aparecer huecos o falta de continuidad.
3. Aliasing.Aliasing. Nuestro cerebro busca símiles (alias).
4. Gran cantidad de cálculo. Circuitos integrados.
Líneas y curvas. Algoritmos incrementales
• Para rectas con pendiente entre 0 y 1 (ecuación explícita).
• Basándose en el pixel anterior.
• Multiplicación, suma y redondeo.
• Uso muy frecuente y debe ser muy eficiente.
kmx)y(x xx iii-i 11
m)y(xmkmxk) m(xkmx)y(x iiiii 111
Líneas y curvas. Algoritmos incrementales
Asumimos que la pendiente está entre 0 y 1
Líneas y curvas. Algoritmos incrementales
• No vale para circunferencias, ni duplicando el número de pixels.
Líneas y curvas. Algoritmos incrementales
• Hay que completar los datos con los anteriores.
Algoritmos DDA
• Basándonos en la ecuación diferencial de 1er. orden.
• Solución mediante métodos numéricos.
• Forma:
• Como ejemplo Euler:
• Por tanto:
y ) y(xF(x,y) y conocido siendo 00
i
i
x
yy
x xx
x)y,F(xyy
ii
iiiii
1
1
Distancia entre la línea y el centro del pixel = Error asociado a ese pixel
Algoritmo de Brasenham
• Caso a:
• Como :
• Por tanto:
r.yr
r).(yintrr
iii
iiii
150
50
1
11
50
5050
150
150
.em
.em.
e.me
ey.myey
i
i
ii
iiiii
myyeyr iiiii 1y
m ermyrye iiiiii 111
Algoritmo de Brasenham
• Caso b:
• Como:
• Por tanto:
r.yr
r).(yintrr
iii
iiii
2501
1501
1
11
i
i
ii
iiiii
em.
.em.
e.me
ey.myey
50
5150
2501
2501
myyeyr iiiii 1y
11111 m ermyrye iiiiii
Relleno de polígonos
• Dibujar los lados es fácil.
• Rellenar el interior no tan fácil.
Relleno de polígonos
• ¿ Punto interno? Teorema de Jordan. – Si la recta que va del punto al infinito corta un número impar de
veces es interno.
Test interno-externo
Relleno de polígonos
• En la práctica hay problemas:
Relleno de polígonos
• La mayoría de los casos:
• Solución: En caso de vértice superior contarlo.
• Línea a línea
Relleno de polígonos: Casos especiales
Toca pixel Pixel fuera
Cambio de paridad
No cambio de paridad
No cambio de paridad
Algoritmo línea a línea
• Tratar las líneas entre Ymax e Ymin .
• Coherencia de la línea. Secuencias.
• Guardar los cortes y utilizarlos de dos en dos.
Algoritmo línea a línea
• Algoritmo: 1. Obtener los cortes de la línea con el polígono.
2. Ordenarlos por x.
3. Tratarlos de par en par.
• ¿ Reutilizar información al cambiar de línea?
Aliasing
• En base a la discretización de un objeto, ver otro distinto.
• Razón principal: representación mediante muestreo.
Aliasing
Dos tipos fundamentales:
•Patrones moire: surgen en el warping de la imagen y en el mapeado de texturas
•Jaggies: surgen en el renderizado
Nótese jaggies en el primer plano
Aliasing (punto)
La pantalla no posee suficiente resolución para marcar el punto
Antialiasing (punto)
Reemplazar el punto por un pixel activo
Aliasing
• Asignamos a todo el pixel el valor que le corresponde al centro.
• En las animaciones pueden aparecer pixels destelleantes.
• Se da mucho en los siguientes casos:
– Cambio de intensidad de luz y/o color
– Parpadeos que pueden ser producidos por objetos pequeños en
las animaciones.
Antiliasing
• Métodos principales de antialiasing: 1. Sobremuestreo o supersampling.
2. Realizar una aproximación de filtros antialiasing 2D y eliminar altas frecuencias.
3. Muestreo estocástico.
• Como el origen es el muestreo, conviene que sea lo más continuo posible. La tecnología es un límite.
Supersampling
• Se realiza en tres pasos: 1. Realizar un muestreo superior a la resolución del dispositivo.
Por cada pixel se calculan nn.
2. Aplicar un filtro al muestreo.
3. Obtenemos la imagen a la resolución del dispositivo.
• A más subpixels más cálculos.
• El incremento de cálculo es del orden de n2. • En la adecuación a pixels reales se puede utilizar un filtro
con pesos.
Supersampling
• Asignando pesos mayores a los subpixels centrales se obtienen mejores resultados.
• Para una imagen de 512512 y utilizando pixels de 55
subpixels habría que realizar 51251225 multiplicaciones y sumas.
• Puede requerir mucha memoria.
Image Filtering: Blurring
original, 64x64 pixels 3x3 blur 5x5 blur
Image Filtering: Edge Detection
horizontal derivative vertical derivative
Figura original
Siluetas dentadas (jagging): •El dibujo de la izquierda representa el muestreo realizado a la imagen original. •La parte de la derecha es la renderizada.•Son muy frecuentes donde existe un mayor contraste entre el interior y exterior de la silueta.
Pérdida del detalle: •A la izquierda se muestran un grupo pequeño de polígonos de la imagen original.•A la derecha se muestra la escena renderizada.
•Puede apreciarse la gran pérdida del detalle
Muestreo de superficies
• Se basa en la geometría interna del pixel.
• Tiene en cuenta las partes del pixel que ocupa cada objeto.
• Calculando lo que ocupa cada objeto asigna la intensidad del pixel.
• Cálculos:
1.Calcular lo que ocupa cada objeto en la superficie correspondiente al pixel.
2.Determinar la visibilidad de esas partes.
3.Calcular la intensidad en función de los que son visibles.
Más que muestrear, lo que hacemos es integrar.
Los números representan la fracción del área que cubre el objeto en dicho pixel.
Funciona bien cuando el objeto se encuentra lejos.
Muestreo estocástico
• Los fotoreceptores del ojo no estan uniformemente distribuidos.
• Cambiamos aleatoriamente los puntos de muestreo.
• Pasos: 1. Obtener muestreo de la imagen asignando a cada punto un
cambio aleatorio.
2. Aplicar un filtro a la muestra del paso anterior a fin de obtener la intensidad de los pixels.
• El cambio introduce ruido en la imagen, pero a su vez disminuye el efecto aliasing.
Muestreo estocástico
• Se adecua bien a los métodos de trazado de rayos o ray-tracing.
• Para Z-buffer y Scanline presenta mas dificultades pero han surgido algoritmos basados en microsuperficies que realizan muestreo estocástico.
Jittering: Elegir un punto aleatoriamente (uniforme) del dominio
Fácil de realizar.
Generalmente se emplea este muestreo estocástico junto a supersampling.
Muestreo más normal: 16 ejemplos/pixel
Muestreo estocástico 256 ej/pixel
Muestreo por línea
Muestreo regular 18 ej/pixel
Muestreo estocástico 16 ej/pixel
Muestreo estocástico 256 ej/pixel
Muestreo estocástico 16 ej/pixel
Muestreo regular 1 ej/pixel
Muestreo lineal