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. 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.
x i  x i-1  1
y(x i )  mx i  k
• Multiplicación, suma y redondeo.
• Uso muy frecuente y debe ser muy eficiente.
y(x i  1 )  mx
i 1
 k  m(x
i
 1 )  k  mx
i
 k  m  y(x i )  m
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: y   F(x,y) siendo y(x 0 )  y 0 conocido
• Como ejemplo Euler:
• Por tanto:
y 
y i
xi
y i  1  y i  F(x i , y i )  x i
x i 1  x i   x
Distancia entre la línea y el centro del pixel = Error asociado a ese pixel
Algoritmo de Brasenham
• Caso a:
ri  1  ri  int (y i  1  0 .5 )  ri
ri  y i  1  0 .5  ri  1
• Como :
ri  y i  e i y y i 1  y i  m
y i  e i  y i  m  0 .5  y i  e i  1
 e i  m  0 .5   e i  1
 0 .5  m  e i  0 .5
m  e i  0 .5
• Por tanto:
e i 1  y i 1  ri 1  y i  m  ri  e i  m
Algoritmo de Brasenham
• Caso b:
ri  1  ri  1  int (y i  1  0 .5 )  ri  1
ri  1  y i  1  0 .5  ri  2
• Como:
ri  y i  e i y y i 1  y i  m
y i  e i  1  y i  m  0 .5  y i  e i  2
 e i  1  m  0 .5   e i  2
0 .5  m  e i  1 .5
0 .5  m  e i
• Por tanto:
e i 1  y 1i  ri 1  y i  m  ri  1  e i  m  1
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
No cambio
de paridad
Cambio de
paridad
Toca pixel
Pixel fuera
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)
Antialiasing (punto)
La pantalla no posee suficiente
resolución para marcar el 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 nn.
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 512512 y utilizando pixels de 55
subpixels habría que realizar 51251225 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
estocástico
16 ej/pixel
Muestreo por
línea
Muestreo
regular
18 ej/pixel
Muestreo estocástico
256 ej/pixel
Muestreo lineal
Muestreo estocástico
16 ej/pixel
Muestreo regular
1 ej/pixel
Descargar

Obtención de la imagen