libro procesamiento imagenes

72
ING. HERNAN VARGAS NOLIVOS UTM ENFOQUE PRACTICO AL PROCESAMIENTO DE IMÁGENES DIGITALES Y LAS GRAFICAS POR COMPUTADORA I. PROGRAMACION ORIENTADA A OBJETOS 1.1. INTRODUCCIÓN Hoy en día todos los sistemas de computadora están creados con la técnica descubierta en los años 60 que es la programación orientada a objetos, menos los sistemas de tiempo real. 1.2. RESEÑA HISTORICA - Antes la programación era lineal, lo cual no era muy eficiente, códigos muy largos, en esta era surgen los GOTO Y LOS PROCEDIOS, para mejorar esta técnica aparece la programación estructurada. - Con en pasar de los tiempos la programación evoluciona y nace la programación estructurada aquí ya se utiliza nuevas técnicas tales como los procedimientos y funciones aquí ya desaparece los GOTO (mala programación) - Con el pasar de los tiempos en la década de los 60 nace una nueva técnica que viene a mejorar las dos anteriores (Programación Orientada a Objetos) que no es mas que representar las imágenes de las cosas que no hemos visto como objetos (simular los objetos que nos rpdean). OBJETOS SISTEMA DE ADMINISTRACIÓN INSTITUCIONAL ESTUDIANTE PROFESOR EMPLEADOS

Upload: christian-torres

Post on 16-Jun-2015

432 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Libro procesamiento imagenes

ING. HERNAN VARGAS NOLIVOS UTM

ENFOQUE PRACTICO AL PROCESAMIENTODE IMÁGENES DIGITALES Y LASGRAFICAS POR COMPUTADORA

I. PROGRAMACION ORIENTADA A OBJETOS

1.1. INTRODUCCIÓN

Hoy en día todos los sistemas de computadora están creados con la técnicadescubierta en los años 60 que es la programación orientada a objetos, menoslos sistemas de tiempo real.

1.2. RESEÑA HISTORICA

- Antes la programación era lineal, lo cual no era muy eficiente,códigos muy largos, en esta era surgen los GOTO Y LOSPROCEDIOS, para mejorar esta técnica aparece la programaciónestructurada.

- Con en pasar de los tiempos la programación evoluciona y nace laprogramación estructurada aquí ya se utiliza nuevas técnicas talescomo los procedimientos y funciones aquí ya desaparece los GOTO(mala programación)

- Con el pasar de los tiempos en la década de los 60 nace una nuevatécnica que viene a mejorar las dos anteriores (ProgramaciónOrientada a Objetos) que no es mas que representar las imágenesde las cosas que no hemos visto como objetos (simular los objetosque nos rpdean).

OBJETOS

SISTEMA DE ADMINISTRACIÓNINSTITUCIONAL

ESTUDIANTE

PROFESOR

EMPLEADOS

Page 2: Libro procesamiento imagenes

ING. HERNAN VARGAS NOLIVOS UTM

1.3. CONCEPTOS BÁSICOS GENERALES DE LAPROGRAMACIÓN ORIENTADA A OBJETOS

Es una técnica de programación que utiliza objetos como bloques deconstrucción como por ejemplo: “La construcción de una casa en donde losobjetos son los bloques”.

La comunicación entre los objetos, se establece por medio de los mensajes.

La Programación Orientada a Objetos son los mismos Struct (estructura dedatos) solo que se agregan los procedimientos y funciones sobre los datos.

El hecho de que los procedimientos y funciones trabajen sobre una clase , sedebe buscar errores solo sobre esa clase, mientras que en la programaciónestructurada y lineal se busca errores sobre todo el programa

1.3.1. OBJETOS.-

Son tipos de datos abstractos definidos por el programador donde seespecifican los datos y las operaciones que se pueden realizar sobre ellos.

Es una entidad donde se definen los atributos o características (datos) y lasformas de operar sobre ellos, la estructura interna es oculta a cualquier otraparte del programa.

Es la concepción material de la clase.

1.3.2. MENSAJE.-

No son mas que las peticiones que hace un objeto a otro para que este tengaun comportamiento determinado.

La comunicación de los objetos se basa en la técnica cliente / servidor dondeun objeto se convierte en cliente y el otro objeto servidor o viceversa.

Comunicación entre los objetos Ej: Pedir como objeto que se paren a losalumnos (como objetos).

1.3.3. METODOS.-

No son mas que procedimientos y funciones.

Un método determina como tiene que actuar el objetos cuando recibe unmensaje y permite almacenar la información en sus atributos, también puedeenviar mensajes a otros objetos solicitando determinado comportamiento.

Ej: Si se quema los archivos y computadores del registro civil nos deberánentregar otra C.I., otros nombre otra dirección, es como encontrar un métodopara almacenar esa información, tomando en cuenta que somos objetos.

Page 3: Libro procesamiento imagenes

ING. HERNAN VARGAS NOLIVOS UTM

1.3.4. CLASES.-

Es un tipo de datos definidos por el programador que determina los atributos ymétodos de los objetos con características comunes.

Ejemplo:

ESTUDIANTES CLASE COMUN

PERSONASPROFESORES

Es la abstracción de los objetos donde se definen que características tienen losobjetos en general

“Struct” define la clase

A;B;C son objetos de la clase “Struct”.

1.3.5. ENCAPSULAMIENTO.-

Es la forma que utiliza la P.O.O para proteger la información o programación delos objetos. La única forma que se puede acceder a esa información es deacuerdo a algún mensaje que actúa sobre los atributos establecidos.

Ej: Los Yogas pueden detener el corazón utilizando algún método mental locual no es explicable por la ciencia médica, la otra manera de detener elcorazón sería abrir el cuerpo para sacar el corazón y detenerlo, locualestaríamos “violando el encapsulamiento”.

1.3.6. HERENCIA.-

Posibilidad que tienen los objetos de adquirir propiedades de otros objetos (elnuevo hereda del ancestro) Ej: El hombre los hojos se parecen a su mamáal heredar el pelo (propiedades) y camina como el papá (método).

En programación la herencia es a nivel de clases y se crean los objetos con lascaracterísticas de las clases.

1.3.6.1 HERENCIA SIMPLE.-

Un objeto hereda de otro. Ejemplo: los perros heredan características del perroque se cruzó con la hembra.

Como ya habíamos dicho anteriormente que el lenguaje de programación enPascal no soporta la herencia múltiple, para lo cual hace lo siguiente parasolucionar el problema.

Page 4: Libro procesamiento imagenes

ING. HERNAN VARGAS NOLIVOS UTM

El acceso a un objeto se realiza directamente con la siguiente sintaxisaccedemos a un objeto.

1.3.6.2 HERENCIA MÚLTIPLE

Un objeto hereda atributos de dos clases Ej: hombre hereda atributos de dospersonas (padre y madre).

Nota: en Delphi o en Object Pascal Orientado a Objetos no soporta la multi-herencia por que complica la programación.

A continuación se describe gráficamente las dos clase de herencia que existeen la programación.

A

CB

D

A A

A

BPone un objeto de tipo C seduplica A, pero elcompilador quita el códigorepetido

CA

Objeto “C”.método

HerenciaSimple

A

CB

D

A A

HerenciamúltipleC

A

B

A

Page 5: Libro procesamiento imagenes

ING. HERNAN VARGAS NOLIVOS UTM

Nota: Pascal no soporta la herencia múltiple, C no soporta la programaciónorientada a objetos, C++ si soporta la P.O.O y además soporta la multi-herencia.

Una persona con atributos definidos es u objeto.

Clase.- Abstracto “Persona”

Clase_A = Integer

B: Clase_A

En teoría la clase no ocupa memoria

Sintaxis:

Objeto: Clase

a : Integer

Con el nombre “a” tienen valor los atributos y por lo tanto tiene 2 byte enmemoria.

1.3.7. POLIMORFISMO DE UN OBJETO.-

Objetos de clases distintas actúan de distinta manera ante un mismo mensaje;Un objeto responde de diferente manera a un mensaje.

En C++ es muy versátil por lo cual se puede dar una sobrecarga de operadores

TAREAConsultar que es herencia , Encapsulamiento, polimorfismo

A

CB

D

A A

A

B

C

Herenciamúltiple enC++

A

CB

D

A A

D eliminauna AC

A

B

A

Page 6: Libro procesamiento imagenes

ING. HERNAN VARGAS NOLIVOS UTM

El perro llama a su método y camina en cuatro patas

La Gallina llama a su método y camina en dos patas

El hombre llama a su método camina en dos pies

Los métodos son polifórmicos, mientras que los objetos no

1.4. CLASES Y OBJETOS EN DELPHI

¿Cómo en Delphi o Pascal se interpretan los objetos?

El objetos B va a tener acceso a la interface de A, o sea al procedure de A yno al procedure de B

En Delphi las palabras reservadas son: Uses, Type, var, constantes, private,protected, public, end, bejín, inherited, virtual, override

Animalescaminen Método

Caninos Aves Homosapien

Perro Gallina Hombre

ANombre:Interface:Procedure AImplementationProcedure B

BUses A

BIntUses A

A

CIntUses A, B

Page 7: Libro procesamiento imagenes

ING. HERNAN VARGAS NOLIVOS UTM

¿CÓMO SE DEFINEN LAS CLASES?

Las clases no son mas que un tipo de datos en Pascal

SINTAXIS

Type

Nombre_Class = Class(Nombre_Clase_Heredada)

________________________

________________________

________________________

Esto es público por defecto, noasí en C++ es privado.

Private

________________________

________________________

________________________

Se define lo que es privado dela clase o sea los atributos ymétodos que no son públicos

Protected

________________________

________________________

________________________

Public

________________________

________________________

________________________

End;

Aquí van solo los métodos si sepone algún atributo, violo elEncapsulamiento.

Un objeto es un record con métodos (Estructura de datos)

¿COMO DEFINIMOS LOS OBJETOS?

Definimos a un objeto de tipo Nombre_Clase como se definen las variables enPascal

Page 8: Libro procesamiento imagenes

ING. HERNAN VARGAS NOLIVOS UTM

Sintaxis

Nombre_Objeto: Nombre_Clase;

CREAR UN OBJETO EN MEMORIA

Reservamos memoria a un objeto, y se nos devuelve una dirección o punterode ese objeto.

Sintaxis

Nombre_Objeto = Nombre_Clase.Create;

Todas las clases en Pascal tienen que heredar de algún tipo de clase, si no setiene de quien heredar se debe heredar d la clase mas general Tobject, estaclase tiene métodos constructores y destructores que son internos

Sintaxis

Nombre_Clase = Class (TObject).

DESTRUIR UN OBJETO

El punto es la única manera de dirigirse a los métodos de un objeto en estecaso “Destruy”

Sintaxis

Nombre_Objeto.Destruy;

Cuando destruyo un objeto estoy liberando memoria y cuando lo creo reservomemoria

DECLARAR UN OBJETO

Nombre_Objeto: Nombre_Clase;

Sintaxis General de las clases

Type

Nombre_Class = Class(Nombre_Clase_Heredada)

________________________

________________________

________________________

Esto es público por defecto, noasí en C++ es privado.

Page 9: Libro procesamiento imagenes

ING. HERNAN VARGAS NOLIVOS UTM

Private

________________________

________________________

________________________ Se define lo que es privado dela clase o sea los atributos ymétodos que no son públicosProtected

________________________

________________________

________________________

Public

________________________

________________________

________________________

End;

Aquí van solo los métodos si sepone algún atributo, violo elEncapsulamiento.

Ejemplo:

Crear un objeto “Punto “ en el cual necesitamos coordenadas en X y en Y

Nota crear un Unit 2 para la creación del objeto Tpunto y en el Unit 1 del t Formcrear un formulario que tenga la siguiente interfaz

X

Y

X + Y

Crear

Calcular

Destruir

Page 10: Libro procesamiento imagenes

ING. HERNAN VARGAS NOLIVOS UTM

unit Unit2;

interface

type

TPunto=class(TObject)

private

x,y:integer;

public

procedure set_x(nx:integer);

procedure set_y(ny:integer);

function get_x():integer;

function get_y():integer;

function calcular():integer;

end;

implementation

procedure TPunto.set_x(nx:integer);

begin

x:=nx;

end;

procedure TPunto.set_y(ny:integer);

begin

y:=ny;

end;

function TPunto.get_x:integer;

begin

get_x:=x;

end;

function TPunto.get_y:integer;

Page 11: Libro procesamiento imagenes

ING. HERNAN VARGAS NOLIVOS UTM

begin

get_y:=y;

end;

function TPunto.calcular:integer;

begin

calcular:=get_x+get_y;

end;

end.

Este código es el que se auto genera por el codigo del Tform del Uni1

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

StdCtrls, Unit2;

type

TForm1 = class(TForm)

EditX: TEdit;

EditY: TEdit;

EditCalc: TEdit;

ButCrear: TButton;

ButCalcular: TButton;

ButDestruir: TButton;

procedure ButCrearClick(Sender: TObject);

procedure ButCalcularClick(Sender: TObject);

procedure ButDestruirClick(Sender: TObject);

private

Punto:TPunto;

Page 12: Libro procesamiento imagenes

ING. HERNAN VARGAS NOLIVOS UTM

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.ButCrearClick(Sender: TObject);

begin

Punto:= TPunto.Create;

Punto.set_x(StrtoInt(EditX.Text));

Punto.set_y(StrtoInt(EditY.Text));

end;

procedure TForm1.ButCalcularClick(Sender: TObject);

begin

EditCalc.Text:=IntToStr(Punto.calcular);

end;

procedure TForm1.ButDestruirClick(Sender: TObject);

begin

Punto.Destroy

end;

end.

Tarea extra clase:

Crear la clase rectángulo y la clase círculo que permita calcular el área en Unitdistintos.

Crear una clase pila que permita insertar y extraer elementos de la misma(hacer un array siguiendo el concepto de pila(métodos get_tope y pila_vacía)).

Page 13: Libro procesamiento imagenes

ING. HERNAN VARGAS NOLIVOS UTM

II. El Procesamiento de Imágenes Digitales y lasGráficas por Computadora

- Introducción al Procesamiento de Imágenes y las Gráficas por Computadora

Principales aplicaciones

Algoritmos para el trazado de rectas

Analizador Diferencia Digital (DDA)

Algoritmo de Bresenham

2.1. Principales aplicaciones del Procesamiento deImágenes y las Gráficas por Computadora

Diseño Asistido por Computadora (CAD)

Gráficas, diagramas y modelos

Arte por computadora

Animación por computadora

Interfases gráficas con el usuario

Gráficas para uso doméstico

Procesamiento de imágenes

2.2. Algoritmos para el trazado de rectas

Los algoritmos utilizados para el trazado de rectas se basan en la ecuación dela recta:

y = m x + b

siendo m la pendiente y b la intercepción en y

Debido a que un segmento de recta puede ser definido por 2 puntos (x0, y0) y(x1,y1), los valores de m pueden determinarse como:

m = y1 – y0

Page 14: Libro procesamiento imagenes

ING. HERNAN VARGAS NOLIVOS UTM

x1 – x0

2.3. Algoritmo DDA

También se conoce como Algoritmo básico incremental. Se incrementaunitariamente una coordenada y se calcula la otra, es decir; se obtienen nuevosvalores de xi, yi en cada iteración, haciendo cálculos incrementales basados enlos pasos precedentes.

Para una línea con pendiente positiva: m 1

xi+1 = xi + 1yi+1 = yi + m

¿Por qué?

y = mx + byi+1 = m(xi + 1) + b = mxi + b + m = yi + m

siendo m = y1 – y0x1 – x0

Algoritmo:

1. Entrar los valores de x0, y0, x1, y12. y = y03. m = (y1 – y0)/(x1 – x0)4. Para x = x0 hasta x1 con incremento 1

4.1 Escribir pixel (x, round(y))4.2 y = y + m

Debido a que m es un número real cualquiera, se debe redondear al enteromás cercano, para cada valor de y calculado.

Para una línea con pendiente positiva m >1, el cambio de un pixel en x, puedeprovocar incrementos en y de 2 o más pixeles, dejando huecos en el dibujo

Se invierten los papeles de x e y

yi+1 = yi + 1xi+1 = xi + 1

m

Algoritmo:

1. Entrar los valores de x0, y0, x1, y12. x = x03. m = (x1 – x0)/(y1 – y0)4. Para y = y0 hasta y1 con incremento 1

4.1 Escribir pixel ( round(x), y)4.2 x = x + m

Page 15: Libro procesamiento imagenes

ING. HERNAN VARGAS NOLIVOS UTM

El algoritmo DDA tiene como inconveniente fundamental, que trabaja conaritmética flotante, lo que ocasiona imprecisiones y demoras en la solución.

Ambos casos analizados, m 1 y m > 1, suponen que se trata de un línea queva de izquierda a derecha. Si se trata de una línea que va de derecha aizquierda, es decir, x0 > x1, entonces:

Para m 1:xi+1 = xi - 1yi+1 = yi – m

Para m > 1:yi+1 = yi - 1xi+1 = xi - 1

m

Ejercicio para el Laboratorio 1:

Elabore un programa que permita el trazado de rectas utilizando DDA, analicelos casos extremos, para pendiente m = 0 y m = infinito

2.4. Algoritmo de Bresenham:

Es más efectivo para el trazado de líneas debido a que elimina el trabajo conaritmética flotante, hallando las coordenadas enteras más próximas a latrayectoria real de la recta utilizando aritmética entera. Para dibujar el próximopixel, se tienen cuenta el punto medio entre los pixeles analizados.

Partiendo de la ecuación de la recta con pendiente dada:

y = mx + b= (dy/dx) x + b= dy x + dx b

Creando f(x,y):f(x,y) = dy x – dy y + dx b (1)

Para 0 < m < 1 y x0 < x1

Page 16: Libro procesamiento imagenes

ING. HERNAN VARGAS NOLIVOS UTM

xp,yp

A partir de la función (1)

f(xp+1,yp+½) = dy(xp + 1) – dx(yp + ½) + dxb= dyxp + dy – dxyp –dx/2 + dxb

Eliminando los términos que corresponden a la ecuación de la recta,obtenemos :

dy – dx/2

para eliminar la aritmética flotante se multiplica por 2 y se obtiene el parámetrod:

d = 2dy – dx

Si d<0 la recta está por debajo del punto medio, por lo tanto se escoge el pixel ESi d>0 la recta está por encima del punto medio, por lo tanto se escoge el pixel NESi d = 0 se escoge E por convenio.

Este algoritmo trabaja adelantado un paso por lo que es necesario hallar elpróximo pixel entre los siguientes candidatos.

f(xp+2, yp + ½) y f(xp+2, yp + 3/2)

xp,yp

Obteniéndose

de = 2dydne = 2(dy – dx)

Algoritmo para 0<m<1 y x0<x1

1. dx = x1 – x02. dy = y1 – y03. d = 2dy – dx4. de = 2dy5. dne = 2(dy – dx)6. x = x07. y = y08. escribir pixel(x,y)9. Mientras x < x1

Page 17: Libro procesamiento imagenes

ING. HERNAN VARGAS NOLIVOS UTM

9.1 Si d<= 0 entonces d = d + desino d = d + dney = y + 1

9.2 x = x+19.3 escribe pixel (x,y)

Algoritmo para 0<m<1 y x0>x1

1. dx = x1 – x02. dy = y1 – y03. d = 2dy – dx4. de = 2dy5. dne = 2(dy – dx)6. x = x07. y = y08. escribir pixel(x,y)9. Mientras x > x1

9.1 Si d<= 0 entoncesy = y - 1d = d + dne

sino d = d + de9.2 x = x -19.3 escribe pixel (x,y)

En la conferencia anterior se estudió el algoritmo de Bresenham para el trazadode rectas en el caso de pendiente positiva entre 0 y 1 y x0 < x1 y pendientepositiva entre 0 y 1 y x0 > x1. Ahora se estudiarán los restantes casos.

Pendiente -1 m 0 y x0 < x1

xp,yp E

SE

Es necesario calcular nuevamente los parámetros d, de y dse, para determinarlas relaciones entre los puntos medios y la recta a trazar. Se parte de la funciónobtenida f(x,y)

f(xp +1, yp –1/2) = dy(xp + 1) – dx(yp – ½) + dxb= dyxp + dy – dxyp + dx/2 + dxb

Extrayendo la diferencia con la función original se obtiene:

dy + dx/2

Eliminando la aritmética flotante:

d = 2dy + dx

Page 18: Libro procesamiento imagenes

ING. HERNAN VARGAS NOLIVOS UTM

Para obtener la obtener la realción de la recta con los próximos pixelescandidatose se calcula de y dse

f( xp + 2, yp – ½ ) = 2dy + dx/2= 4dy + dx

de = 4dy + dx – dde = 4dy + dx – 2dy – dxde = 2dy

f( xp + 2, yp – 3/2 ) = 2dy + 3dx/2= 4dy + 3dx

dse = 4dy + dx – ddse = 4dy + 3dx – 2dy – dxdse = 2dy + 2dxdse = 2(dy + dx)

Algoritmo para -1 m 0 y x0 < x1

10. dx = x1 – x011. dy = y1 – y012. d = 2dy + dx13. de = 2dy14. dse = 2(dy + dx)15. x = x016. y = y017. escribir pixel(x,y)18. Mientras x < x1

18.1 Si d<= 0 entoncesd = d + dsey = y - 1

sino d = d + de18.2 x = x+118.3 escribe pixel (x,y)

Para el caso en que -1 m 0 y x0 > x1

NW

W xp,yp

Page 19: Libro procesamiento imagenes

ING. HERNAN VARGAS NOLIVOS UTM

Algoritmo para -1 m 0 y x0 > x1

1. dx = x1 – x02. dy = y1 – y03. d = 2dy + dx4. de = 2dy5. dse = 2(dy + dx)6. x = x07. y = y08. escribir pixel(x,y)9. Mientras x > x1

9.1 Si d<= 0 entoncesd = d + de

sinoy = y + 1

d = d + dse9.2 x = x - 19.3 escribe pixel (x,y)

Pendiente m>1

En este caso, al igual que en el algoritmo incremental, se intercambian losvalores de x e y para eliminar la posibilidad de huecos.

N NE

xp,yp

Calculando d

F(xp + ½, yp + 1) = dy(xp + ½ ) – dx(yp + 1) + dxb= dy/2 – dx

d = dy – 2dx

Calculando dn

F(xp + ½, yp + 2) = dy/2 – 2dx= dy – 4dx

Page 20: Libro procesamiento imagenes

ING. HERNAN VARGAS NOLIVOS UTM

dn = dy – 4dx – ddn = -2dx

Calculando dne

F(xp +3/2 , yp + 2) = 3dy/2 – 2dx= 3dy – 4dx

dne = 3dy – 4dx – ddne = 2dy - 2dxdne = 2(dy – dx)

Algoritmo para m>0

1. dx = x1 – x02. dy = y1 – y03. d = dy - 2dx4. dn = -2dx5. dne = 2(dy - dx)6. x = x07. y = y08. escribir pixel(x,y)9. Mientras y > y1

9.1 Si d<= 0 entoncesd = d + dnex = x + 1

sino d = d + de9.2 y = y + 19.3 escribe pixel (x,y)

Page 21: Libro procesamiento imagenes

ING. HERNAN VARGAS NOLIVOS UTM

III. Trazado de círculosLos parámetros básicos que definen una circunferencia, son las coordenadasde centro (xc,yc) y el radio r. Teniendo en cuenta la simetría de lascircunferencias. Un punto determinado de la circunferencia, tiene sus puntossimétricos que pueden ser dibujado a la vez, solo intercambiando coordenadasy cambiando el signo de los valores.

Un punto (x,y) en un octavo de circunferencia, puede generar 7 más:

3.1. Subprograma CirclePoint

Procedure CirclePoint(xc, yc, r, x, y : Integer)BeginPutpixel(xc + x, yc + y);Putpixel(xc - x, yc + y);Putpixel(xc + x, yc - y);Putpixel(xc - x, yc - y);Putpixel(xc + x, yc + y);Putpixel(xc - x, yc + y);Putpixel(xc + x, yc - y);Putpixel(xc - x, yc - y);

End;

3.2. Algoritmo de Bresenham para el trazado de circunferencias

Se selecciona el pixel que está más cerca de la trayectoria de la circunferenciaa trazar. Considerando una circunferencia con centro en (0,0), se calculan lospuntos de un octavo de circunferencia y los restantes puntos se obtienenteniendo en cuenta el criterio de simetría. Se originan pasos desde x= 0 hasta x= y, siendo la coordenada inicial (0,r).

Partiendo de la función de una circunferencia:

F(x,y) = x2 + y2 – r2

Para saber cuál es el pixel más cercano se evalúa la función en el punto medio,obteniéndose el parámetro d

Page 22: Libro procesamiento imagenes

ING. HERNAN VARGAS NOLIVOS UTM

xp,yp E

SE

Calculando d

F(1, r-1/2 ) = 5/4 – r

Para eliminar la aritmética flotante, se introduce d = h + ¼

h + ¼ = 5/4 – rh = 1 – r

La comparación d<0 sería h < -1/4, pero esta comparación no se sustituye porh < 0 para eliminar el trabajo con aritmética flotante.

Algoritmo

1. x = 02. y = r3. leer xc4. leer yc5. d = 1-r6. de = 37. dse = -2r + 58. CirclePoint (xc,yc,x,y)9. Mientras y > x

9.1 Si d < 0 entoncesd = d + dede = de + 2dse = dse + 2

sinod = d + dsey = y-1de = de +2dse = dse + 4

9.2 x = x + 19.3 Circlepoint(xc,yc,x,y)

Tarea de Laboratorio

1. Elabore un programa para trazado de rectas por Bresenham incluyendotodas las variantes

2. Elabore un programa para el trazado de círculos por Bresenham

Page 23: Libro procesamiento imagenes

ING. HERNAN VARGAS NOLIVOS UTM

IV. TRANSFORMACIONES

Transformaciones de coordenadas de ventana a viewport

Transformaciones bidimensionales:

Traslación

Cambio de escala

Rotación

Reflexión

4.1. Transformaciones de coordenadas

Cuando se desea representar un objeto del mundo real en la computadora,primeramente se utiliza un sistema de coordenadas del mundo real, es decir,en el caso del plano; se puede utilizar cualquier sistema de coordenadasCartesianas que sea conveniente. Cuando el objeto a dibujar ha sidodebidamente procesado, se procede a realizar una transformación decoordenadas del mundo real a las coordenadas de pantalla.

4.1.1. Ventana

Es un área rectangular especificada en coordenadas del mundo real, donde(xwmin,ywmin) es la esquina inferior izquierda de la ventana y (xwmax, ywmax)es la esquina superior derecha de la ventana.

ywmax

ywmin

xwmin xwmax

Page 24: Libro procesamiento imagenes

ING. HERNAN VARGAS NOLIVOS UTM

ViewPort

Es el área rectangular en la pantalla, donde se va a representar la imagen encerrada enla ventana. El viewport utiliza coordenadas de l dispositivo donde se va a hacer larepresentación, en este caso; la pantalla. (xvmin, yvmin) es la esquina inferior izquierday (xvmax, yvmax) la esquina superior derecha.

yvmax

yvmin

xvmin xvmax

El viewport, al igual que la ventana, puede ser cualquier área de la pantalla. Cuando seutilizan coordenadas normalizadas para el viewport, el sistema gráfico, será mucho másindependiente del dispositivo.

1

ViewPort

0 1

Antes de realizar cualquier despliegue de imagen, es necesario utilizar losprocedimientos que establecen las coordenadas de ventana y viewport.

Para una misma imagen, se pueden definir varias ventanas y viewports. En lamedida que las ventanas son más pequeñas, puede lograrse un acercamientoo nivel de detalle del objeto en cuestión.

4.1.2. Ecuaciones de transformación de coordenadas de ventanaa viewport:

Esta transformación garantiza que se conserven las proporciones relativas delos objetos en la ventana del mundo real. Esta tranformación se hará para cadapunto significativo del objeto a dibujar.

Se debe cumplir que:

Page 25: Libro procesamiento imagenes

ING. HERNAN VARGAS NOLIVOS UTM

xw - xwmin = xv – xvminxwmax – xwmin xvmax – xvmin

yw - ywmin = yv – yvminywmax – ywmin yvmax – yvmin

Despejando de ambas ecuaciones a xv y yv se obtienen las coordenadas delpunto en el viewport:

Para la transformación de coordenadas de viewport a ventana, basta condespejar en cada fórmula a xw y yw, respectivamente.

Tarea de Laboratorio:

Elabore los procedimientos

SetWindows (xwmin, ywmin, xwmax, ywmax) SetViewPort(xvmin, yvmin, xvmax, yvmax) GetWindows (xwmin, ywmin, xwmax, ywmax) GetViewPort (xvmin, yvmin, xvmax, yvmax) WindowToViewPort y ViewPortToWindow

Recuerde que en las ecuaciones de transformación, no se tuvo en cuenta queen el sistema de coordenadas de la pantalla, la y crece hacia abajo, téngalo encuenta para la elaboración de los procedimientos WindowToViewPort yViewPortToWindow. Elabore un programa que dibuje una casa utilizando el linedel compilador.

4.2. Transformaciones bidimensionales básicas

4.2.1. Traslación:

Es el movimiento en línea recta de un objeto, de una posición a otra. Un puntose traslada de (x,y) a (x’, y’) a través de un factor de traslación Tx y Ty

y

(x,y) (x’,y’)Ty

xTx

x’ = x + Tx

xvminxwminxwxwminxwmax

xvminxvmaxxv

yvminywminywywminywmax

yvminyvmaxyv

Page 26: Libro procesamiento imagenes

ING. HERNAN VARGAS NOLIVOS UTM

y’ = y + Ty

4.2.2. Cambio de escala:

Esta transformación permite alterar el tamaño de los objetos. Para escalar unpunto, se multiplican las coordenadas (x, y) por un factor de escala Sx en x yun factor de escala Sy en y, obteniéndose (x’, y’)

y

(x,y) (x’,y’)Sy

xSx

x’ = x * Sxy’ = y * Sy

Para valores positivos (diferentes de uno) de Sx y Sy se aumenta el tamaño delobjeto y para valores negativos, disminuye.

4.2.3. Rotación:

Esta transformación permite la rotación de objetos alrededor de un punto dadoun ángulo de rotación. Se analizará la rotación alrededor del centro decoordenadas.

(x’, y’)

r (x, y)

r

Las ecuaciones de transformación se obtienen de las relaciones entre los lados de lostriángulos rectángulos y los ángulos mostrados.

x’ = r cos ( + ) = r cos cos - r sen seny’ = r sen ( + ) = r sen cos + r cos sen

También:

x = r cos y = r sen

Page 27: Libro procesamiento imagenes

ING. HERNAN VARGAS NOLIVOS UTM

Expresando las ecuaciones x’ y y’ en función de x e y:

x’ = x cos - y sen y’ = y cos + x sen

Los valores positivos de indican una rotación contraria a las manecillas del reloj.

4.2.4. Representación de matrices y coordenadas homogéneas

Generalmente en las aplicaciones gráficas es necesario hacer una sucesión detransformaciones. Por ejemplo, puede necesitarse hacer una traslación de unobjeto, luego una rotación y a continuación; un cambio de escala. Más eficazque realizar una por una de las transformaciones, es calcular el resultado finalde la secuenciación de transformaciones, representando cada transformaciónde forma matricial.

Para esto se utilizan las coordenadas homogéneas, donde una posicióncoordenada (x,y) se representa mediante la triada [xh, yh, w]

En las transformaciones analizadas, w= 1.

Traslación

[x’ y’ 1] = [x y 1] 1 0 00 1 0Tx Ty 1

Siendo la matriz de traslación, la matriz T

T = 1 0 00 1 0Tx Ty 1

En forma compacta se expresa:

P’ = P * T

P’ [x’ y’ 1]P [x y 1]

Para calcular el punto resultante de la traslación de (x,y) con factores de traslación Tx yTy no es buena práctica utilizar un procedimiento que explícitamente multiplica unvector por una matriz, debido a que esto implica la ejecución de sumas y productosinnecesarios. El procedimiento para trasladar un punto dadas sus coordenadas y losfactores de traslación, sería:

Procedure Trasladar(x,y,Tx,Ty: Integer; Var xp, yp: Integer);Beginxp := x + Tx;yp := y + Ty;

Page 28: Libro procesamiento imagenes

ING. HERNAN VARGAS NOLIVOS UTM

end;

Cambio de escala

[x’ y’ 1] = [x y 1] Sx 0 00 Sy 00 0 1

P’ = P * S

S = Sx 0 00 Sy 00 0 1

Procedure Escalar (x, y, Sx, Sy: Integer; Var xp, yp: Integer);Beginxp = x * Sx;yp = y * Sy;

end;

Rotación

[x’ y’ 1] = [x y 1] cos sen 0-sen cos 00 0 1

P’ = P * R()

R() = cos sen 0-sen cos 00 0 1

Procedure Rotar (x, y, sita: Integer; Var xp, yp: Integer);Beginxp := x * cos (sita) - y * sen (sita);yp := y * cos (sita) + x * sen (sita);

end;

Secuenciación de transformaciones

Cualquier sucesión de transformaciones puede representarse a través de unamatriz de transformación compuesta calculando el producto de las matrices detransformación involucradas.

Ejemplo:

Page 29: Libro procesamiento imagenes

ING. HERNAN VARGAS NOLIVOS UTM

Rotación de un punto alrededor de un punto arbitrario (xr, yr) un ángulo sita. Enesta operación están involucradas 3 transformaciones:

1. Trasladar el centro de rotación al origen de coordenadas Tx = -xr y Ty = -xr2. Rotar alrededor del origen de coordenadas un ángulo sita3. Trasladar el punto a su posición original Tx = xr y Ty = yr

1 0 0 cos sen 0 1 0 00 1 0 * -sen cos 0 * 0 1 0-xr -yr 1 0 0 1 xr yr 1

M = T(-xr,-yr) * R(sita) * T(xr,yr)

Para realizar una secuenciación de transformaciones en programa, se tiene encuenta que:

[x’ y’ 1] = [x y 1] a d 0b e 0c f 1

Como se observa, no son necesarias todas las sumas y productos del vectorpor la matriz, sino que son de interés, solo las dos primeras columnas de lamatriz. Por lo tanto, las ecuaciones explícitas para calcular las coordenadastransformadas son:

x’ = ax + by + c y’ = dx + ey + f

En el programa, se debe mantener una matriz, que se inicializa en:

0 0 00 0 00 0 1

Los elementos de las dos primeras columnas se van actualizando en lasucesión de transformaciones.

Tarea de laboratorio:

Programe los subprogramas correspondientes a las transformaciones básicas:TraslaciónRotaciónCambio de escalaElabore un programa que permita realizar la rotación de un cuadrado alrededorde un punto dado.

Page 30: Libro procesamiento imagenes

ING. HERNAN VARGAS NOLIVOS UTM

V. Algoritmos de corte

5.1. Cohen – Sutherland para el corte de líneas

Cuando se dibuja un área determinada de una ventana en un viewport (puertade visión), solo debe dibujarse la parte de la imagen que está dentro de laventana y lo que está por fuera, se desprecia.

Cuando se define una ventana se realiza el corte a la ventana y luego se dibujaen el viewport. También se puede hacer la transformación de coordenadas demundo real a viewport y luego hacer el corte en coordenadas del dispositivo.

El corte de líneas a desarrollar, se basa en cortar contra las coordenadas deventana del mundo real. Esto implica:

xwmin x xwmax

ywmin y ywmax

Los pasos para el dibujo de un área determinada de ventana, serían:

Entrada de Dibujar en viewportcoordenadas el resultado del cortede ventana

Transformación de la visión

Algoritmo de Cohen – Sutherland para el corte de líneas

Y P4 Y

P3 Ventana VentanaP5 P6 P5 P6

P7 P8 P7’ P8’P9 P9

P10 P10’

X XAntes del corte Después del corte

El algoritmo determina cuáles rectas están totalmente dentro de la ventana,totalmente fuera y cuáles están parcialmente dentro y deben ser cortadas.

Cortecontraventana

Transformaciónde coordenadasde ventana aviewport

Page 31: Libro procesamiento imagenes

ING. HERNAN VARGAS NOLIVOS UTM

Las líneas que están parcialmente dentro de la ventana, deben ser cortadashallando el punto de intersección entre la recta y el lado de la ventana con a lacual intercepta.

Pasos para el corte y dibujo del área dentro de la ventana:

Determinar cuáles líneas se recortarán Hallar los puntos de intersección de estas líneas con la ventana Transformar las coordenadas de los puntos que determinan los segmentos

de recta dentro de la ventana, a coordenadas de viewport Dibujar en coordenadas de viewport

Algoritmo:

1. Cada extremo de las líneas de un dibujo, es asignado a un códigobinario de 4 dígitos, llamado código de región

2. Las regiones se establecen en relación a las fronteras de la ventana

1001 1000 1010

0001 0000 0010

0101 0100 0110

Disposición de los bits de derecha a izquierda

Bit 1 izquierda

Bit 2 derecha

Bit 3 abajo

Bit 4 arriba

Un valor de 1 en cualquier posición de bit, indica que el punto está en esaregión. Dentro de la ventana el código de región es 0000. El valor de cada bitpara cada punto se determina comparando con las coordenadas de ventana: elbit 1 es 1 si x < xwmin y así sucesivamente.

Page 32: Libro procesamiento imagenes

ING. HERNAN VARGAS NOLIVOS UTM

1. Determinar cuáles líneas están completamente fuera de la ventana ycuáles están completamente dentro:

Si ambos puntos de la línea tienen código de región 0000, la línea estácompletamente dentro de la ventana y no hay que cortarla

Si ambos puntos de la línea tienen 1 en la misma posición del bit, la líneaestá completamente fuera de la ventana y se elimina del dibujo

Cualquier otro caso, es una línea que debe cortarse, por lo que es necesariohallar los puntos de intersección. Estas líneas pueden o no atravesar elinterior de la ventana.

P2

P2’

ventana

P1’P3

P3’ P1

P4

1) Realizar el corte de líneas determinando los puntos de intersección conlas rectas que definen a la ventana:

x = xwmin x = xwmax

y = ywmin y = ywmax

Se utiliza la ecuación de la recta en cuestión dada por 2 puntos (x1,y1) y(x2,y2)

La coordenada y del punto de intersección se calcula:

y = y1 + m (x – x1)

x = xwmin o x = xwmax

La coordenada x del punto de intersección se calcula:

x = x1 + (y – y1)/m

y = ywmin o y = ywmax

Procedimiento para el corte por Cohen – Sutherland

Var

Page 33: Libro procesamiento imagenes

ING. HERNAN VARGAS NOLIVOS UTM

xwmin, xwmax, ywmin, ywmax : real;

procedure Clip_a_line(x1, y1, x2, y2 : real);typeboundaries = (left, right, bottom, top);code = array [boundaries] of boolean;

varcode1, code2 : code;done, diaplay : boolean;m : real;

color: Integer;

procedure encode (x, y: real; var c : code);beginif x < xwmin then c[left] := true

else c[left] := false;

if x > xwmax then c[right] := trueelse c[right] := false;

if y < ywmin then c[bottom] := trueelse c[bottom] := false;

if y > ywmax then c[top] := trueelse c[top] := false;

end;

function accept (c1, c2 : code) : boolean;vark : boundaries;

begin

{ si un punto tiene true en su código no es posible aceptación trivial}

accept := true;for k := left to top do

if c1[k] or c2[k] then accept := false;end;

function reject (c1, c2 : code) : boolean;vark : boundaries;

Begin

{Si los puntos extremos tienen true que concuerdan, se desprecia la línea}

reject := false;for k := left to top do

if c1[k] AND c2[k] then reject := true;

end;

Page 34: Libro procesamiento imagenes

ING. HERNAN VARGAS NOLIVOS UTM

procedure swap_if_needed (var x1, y1, x2, y2 : real; var c1, c2 : code);Begin

{asegura que x1,y1 es un punto fuera de la ventana y c1 es su código}

end;

Begin {Clip_a_line}done := false;display := false;while NOT done doBegin

Encode (x1, y1, code1);Encode ( x2, y2, code2);

If accept (code1, code2) thenBegin

Done := true;Display := true;

EndElseIf reject (code1, code2) then done := true

ElseBegin {hallar la intersección }

{ asegurar que x1,y1 está fuera de la ventana}

swap_if_needed (x1, y1, x2, y2, code1, code2);m := (y2 – y1)/(x2 – x1);if code1[left] thenBegin

y1 := y1 + (xwmin – x1) * m;x1 := xwmin;

end {cruza hacia la izquirda}elseif code1[right] thenBegin

y1 := y1 + (xwmax – x1) * m;x1 := xwmax;

end {cruza hacia la derecha}elseif code1[bottom] thenBegin

x1 := x1 + (ywmin – y1) / m;y1 := ywmin;

end {cruza hacia abajo}elseif code1[top] thenBegin

x1 := x1 + (ywmax – y1) / m;y1 := ywmax;

end {cruza hacia arriba}

Page 35: Libro procesamiento imagenes

ING. HERNAN VARGAS NOLIVOS UTM

end {hallar intersección}end ; {while}

if display thenline(x1, y1, x2, y2, color);

end; {Clip_a_line}

Tarea de Laboratorio:

Defina un dibujo simple de una casa en coordenadas del mundo real. Elaboreun programa que permita definir diferentes ventanas y realice el corte porCohen – Sutherland.

5.2. Sutherland – Hodgman para el corte de polígonos.

Los polígono pueden recortarse, procesando cada línea con el algoritmoestudiado para el corte de líneas. Cuando la frontera del polígono recortado,define un área por rellenar, debe generarse las líneas que faltan.

Antes del corte Después del corte

El algoritmo estudiando debe modificarse para que queden las áreas cerradasy luego puedan ser rellenadas por algún algoritmo de relleno de superficies.

Algoritmo de Sutherland – Hodgman para el recorte de polígonos

1. Las áreas del polígono se definen especificando una secuencia de ordenada devértices

Page 36: Libro procesamiento imagenes

ING. HERNAN VARGAS NOLIVOS UTM

2. Cada vértice se compara contra una frontera de la ventana3. Los vértices dentro de la arista de la ventana actual, se salvan para recortarse contra

la siguiente frontera. Los vértices fuera de la arista se desprecian4. Si se va de un punto interior de la arista a uno exterior, se salva la intersección de la

línea con la frontera de la ventana y así con las otras variantes.I

S P S P

P S

P I SSalvar P Salvar I No salvar Salvar I,P

5. Cada punto salvado pasa al subprograma de corte. Se salva un vértice o unaintersección, solo después de haber sido procesado contra todas las fronteras.

6. Se dibujan los nuevos vértices del polígono

Debido a que al cortar un polígono cóncavo contra una ventana rectangular,puede obtenerse como resultado más de un polígono, las áreas separadas seunen con líneas conectivas.

Algoritmo de Sutherland – Hodgman para corte de polígonos cóncavos yconvexos

TypePoint = array [1.. maxpoints] of real;

Procedure polygon_clip(n : Integer; x, y : point; var m : Integer; var xout, yout : point);ConstBoundary_count = 4;

TypeVertex = array [1..2] of real;Boundary_range = 1.. boundary_count;

Vark : Integer;p : vertex;s, first_point : array [1.. boundary_count] of vertex;new_edge : array [1.. boundary_count] of boolean;

function inside ( p : vertex; edge : boundary_range ) : boolean;Begin{retornar true si el vértice p está dentro de la arista de la ventana}end;

function cross ( p, s : vertex; edge : integer) : boolean;Begin{ retornar true si el lado ps de polígono interseca la arista de la ventana}

end;

procedure output_vertex (p : vertex);

Page 37: Libro procesamiento imagenes

ING. HERNAN VARGAS NOLIVOS UTM

beginm := m + 1;xout[m] := p[1];yout[m] := p[2];

end;

procedure find_intersection ( p, s : vertex; edge : boundary_range; var i : vertex);Begin{ retornar en el parámetro i la intersección de ps con la arista de la ventana}

end;

procedure clip_this ( p : vertex; edge : boundary_range);vari : vertex;

Begin{ salvar el primer punto recortado contra una arista de la ventana}if new_edge[edge] thenBeginfirst_point [edge]:= p;new_edge[edge] := false;

endelse{si ps cruza la arista de la ventana, hallar la intersección, recortar la interseccióncontra la siguiente arista de la ventana}if cross ( p, s[edge], edge) thenBeginfind_intersection ( p, s[edge], edge, i);if edge < boundary_count thenclip_this ( i, edge + 1)

elseoutput_vertex (i);

end; {si ps cruza la arista}

{actualizar el vértice salvado}s[edge] := p;

{ si p está dentro de la arista de la ventana, recortar contra la siguiente arista}if inside (p , edge) thenif edge < boundary_count thenclip_this (p, edge + 1)

elseoutput_vertex (p);

end; { clip_this}

procedure clip_closer;{ para cada arista de la ventana, recorta la línea que conecta el último

vértice salvado y el primer punto procesado contra la arista }

vari : vertex;

Page 38: Libro procesamiento imagenes

ING. HERNAN VARGAS NOLIVOS UTM

edge : integer;

Beginfor edge := 1 to boundary_count doif cross ( s[edge], first_point[edge], edge ) thenBegin

find_intersection (s[edge], first_point[edge], edge, i);if edge < boundary_count then

clip_this (i, edge + 1)elseoutput_vertex (i)

end { si s y el primer punto punto cruzan la arista }end; { clip_closer }

Begin {polygon_clip}m := 0; { número de vértices de salida }for k := 1 to boundary_count donew_edge[k] := true;

for k := 1 to n do { coloca cada vértice en la serie }Beginp[1] := x[k];p[2] := y[k];clip_this (p, 1) { corta contra la primera arista de la ventana }

end;clip_closer;

end; {polygon_clip}

Tarea de Laboratorio:

Basado en el algoritmo de corte de polígonos estudiado, elabore el objetopolígono.

Incorpore el algoritmo de corte de polígonos a su biblioteca y elabore unprograma para comprobar su uso.

Elabore el subprograma rectangle(x0,y0,x1,y1,color)

Page 39: Libro procesamiento imagenes

ING. HERNAN VARGAS NOLIVOS UTM

VI. RELLENO DE POLÍGONOS

Rellenado de rectángulos Rellenado de polígonos cóncavos y convexos por el algoritmo “Scan Line”

(Línea de exploración)

6.1. Rellenado de rectángulos

Este algoritmo es muy simple y evidente y podría interpretarse como:

Para y= ymin hasta ymaxPara x = xmin hasta xmax

Escribirpixel(x,y,color)

Si se consideran las fronteras para el caso en se desea dibujar rectángulosconsecutivos sin reescribir sobre las mismas líneas:

Para y= ymin hasta ymax - 1Para x = xmin hasta xmax - 1

Escribirpixel(x,y,color)

Ambos algoritmos pueden modificarse utilizando una sola estructura repetitiva yun procedimiento de trazado de line

6.2. Rellenado de polígonos por “Scan Line”

Polígono convexo Polígono cóncavo

Este algoritmo utiliza una línea de rastreo o exploración para ir llenando losespacios interiores del polígono. Utiliza un algoritmo incremental paradeterminar la intersección de la línea de rastreo con las tramas del polígono, apartir de las intersecciones anteriores. Este algoritmo se ejecuta encoordenadas de viewport.

Algoritmo general:

1. Buscar los interceptos de la línea de exploración con los lados del polígono2. Ordenar los interceptos en orden creciente de las abscisas (x)

Page 40: Libro procesamiento imagenes

ING. HERNAN VARGAS NOLIVOS UTM

3. Dibujar los pixeles entre 2 interceptos, utilizando la regla de la paridad impar paradeterminar si un pixel es interior o no.

Paso 3 del algoritmo:

La regla de paridad impar plantea que la paridad al inicio es par y cadaintercepto encontrado invierte la paridad. Solo se dibuja cuando la paridad esimpar.

1. Si avanzando de izquierda a derecha se encuentra un intercepto fraccionario y seestaba dentro del polígono; se redondea el valor del intercepto hacia abajo. Si seestaba fuera del polígono se redondea hacia arriba para garantizar que el pixel seainterior.

2. Si el extremo izquierdo de un tramo es entero, se toma como interior y se dibuja, elderecho es exterior.

3. Un vértice ymax de un lado es considerado solamente si es su vez, ymin de otro ladoadyacente

4. Las líneas horizontales inferiores se dibujan mientras que las superiores no.

11 D10 F98 E765 C43 A21 B

1 2 3 4 5 6 7 8 9 10 11 12 13 Scan Line y = 2

Paso 1 del algoritmo:

Buscar los interceptos de la scan line con los lados del polígono

Para calcular el nuevo intercepto de la scan line con un lado del polígono, setiene en cuenta el intercepto anterior:

xi+1 = x1 + 1/m m = (ymax – ymin)/(xmax – xmin)

Este incremento en x puede ser expresado como una fracción condenominador:

ymax – ymin

Page 41: Libro procesamiento imagenes

ING. HERNAN VARGAS NOLIVOS UTM

Se puede evitar la aritmética flotante, manteniendo el numerador y observandoque la parte fraccionaria es mayor que 1 cuando el numerador es mayor que eldenominador. Es en este caso cuando hay que incrementar x.

Algoritmo:

1. x = xmin2. numerador = xmax – xmin3. denominador = ymax – ymin4. incremento = denominador5. Para y = ymin hasta ymax

5.1 escribirPixel (x, y, color)5.2 incremento = incremento + numerador5.3 Si incremento > denominador

5.3.1 x = x+15.3.2 incremento = incremento – denominador

Algoritmo de la Tabla de Lados Activos (AET)

1. Crear Tabla de Lados Globales con la siguiente estructura de nodo

Ymax Xmin 1/m

Ymax coordenada y máxima del ladoXmin coordenada x de la y mínima del ladom pendiente de la recta que representa a dicho lado

Cada lado se incorpora solo una vez en la lista en la posición correspondiente a la ymínima

En una lista, los lados están ordenados en orden creciente de las x de la ymin

Para el ejemplo anterior, la Tabla de Lados Global (ET) es:

9

8

7 9 7 -5/2 11 7 6/4

6

5 11 13 0

4

3 9 2 0

2

1 3 7 -5/2 5 7 3/2

Page 42: Libro procesamiento imagenes

ING. HERNAN VARGAS NOLIVOS UTM

2. Una vez creada la Tabla de Lados Global se trabaja con la Tabla deLados Activos según el algoritmo:

1. y = primera ymin cuya lista de lados no esté vacía (1 en el ejemplo)2. Inicializar la Tabla de Lados Activos (AET) en vacía3. Repetir hasta que ET y AET estén vacías

3.1 Mover la lista de ordenada y de la ET a la AET3.2 Ordenar la AET según las x3.3 Dibujar los pixeles en la scan line y con las x de la AET3.4 Y = y + 13.5 Eliminar de laAET los lados cuyas ymax = y3.6 Calcular los nuevos valores de x

Utilizando el algoritmo con el ejemplo anterior:

y = 1AB BC

3 7 -5/2 5 7 3/2

Dibujar (7,1)

y = 2AB BC

3 9/2 -5/2 5 17/2 3/2

Dibujar (5,2) – (8,2)

y = 3

Debido a que ymax del AB es 3 se elimina este lado de la AET y en la ET en la y = 3 seencuentra el lado FA que se adiciona a la AET ordenando en orden creciente de las x

FA BC

9 2 0 5 10 3/2

Dibujar (2,3) – (9,3)

Tarea de Laboratorio:

Programar el algoritmo de Scan Line para el relleno de polígonos.

Elabore las primitivas rectangle(x0,y0,x1,y1) y polygon(vertex,list_vertex)

Elabore un programa para ejemplificar el uso de las primitivas y elrelleno

Page 43: Libro procesamiento imagenes

ING. HERNAN VARGAS NOLIVOS UTM

VII. La tercera dimensión

Sistema de coordenada tridimensional Modelación de sólidos Algunos métodos de modelación

- Parametrización de primitivas- Representación de recorrido- Representación de frontera- Representaciones de particionamiento espacial:

- Descomposición celular- Enumeración del espacio ocupado- Octrees

- Geometría conductiva de sólidos

Introducción

La tercera dimensión en Gráficas por Computadora, permite la representaciónde objetos sólidos del mundo real o el diseño de estos objetos desde lacomputadora. Los objetos pueden modelarse de diferentes formas, ya sea porestructuras de líneas y vértices, por superficies planas, por superficies curvas,etc.

Las descripciones de sólidos se especifican utilizando un sistema decoordenadas reales tridimensional y se proyectan y dibujan, sobre un sistemabidimensional como es la pantalla de la computadora.

Sistema de coordenadas tridimensionales

Sistema de la mano derecha:

Yy

P

X xz

Z

En 3D un punto está representado por sus tres coordenadas P(x,y,z)

Para representar un objeto del mundo real o reproducir un objeto sólidoen la pantalla, se siguen los siguientes pasos:

Page 44: Libro procesamiento imagenes

ING. HERNAN VARGAS NOLIVOS UTM

1. Representar el objeto en memoria, utilizando algún modelo derepresentación de sólidos

2. En dependencia del tipo de proyección que se valla a hacer del objeto(perspectiva o paralela), realizar las transformaciones de normalización parallevar al objeto a un volumen canónico.

3. Realizar el corte de polígonos del sólido contra el volumen canónico4. Eliminar las líneas y superficies ocultas5. Obtener los parámetros del objeto resultado de la proyección6. Realizar la transformación de coordenadas de ventana a viewport7. Dibujar el objeto ya proyectado8. Realizar el relleno de polígonos según un modelo de iluminación

Modelación de sólidos

La Geometría es la parte de las Matemáticas que estudia las propiedades ymedidas de la extensión. En muchas aplicaciones es necesario modelar losobjetos sólidos para distinguir las superficies, delimitar los interiores yexteriores, etc., es decir, definir su geometría para poder procesar suspropiedades.

Si un objeto sólido puede ser modelado de forma tal que se captureadecuadamente su geometría, entonces se puede realizar sobre él, un conjuntode operaciones útiles antes de ser manufacturado. Puede predecirse si unobjeto intercepta a otro, si el brazo de un robot alcanzará a determinado objeto,si una herramienta de corte cortará solo lo deseado, etc.

En la simulación de mecanismos físicos es necesario calcular propiedadescomo volumen, centro de masa, etc. Una representación satisfactoria de unobjeto sólido puede hacer posible la generación de instrucciones automáticaspara máquinas herramientas controladas por computadoras, para crear esosobjetos.

La modelación de sólidos permite:

- Conocer la geometría de los objetos sólidos- Determinar las posiciones relativas entre objetos- Calcular propiedades físicas como volumen, centro de masa, etc.- Representación gráfica realista de los objetos- Simulación de mecanismos físicos

1. Parametrización de primitivas

Utiliza sólidos tipos, definidos como primitivas que contienen un conjunto deparámetros que permiten su reproducción diversa según dichos parámetros, esdecir, para obtener otro sólido del mismo tipo, solo es necesario cambiar losvalores de los parámetros.

Primitiva Nuevo sólido

Page 45: Libro procesamiento imagenes

ING. HERNAN VARGAS NOLIVOS UTM

Parámetros:

- Largo- Ancho- Profundidad

2. Representaciones de recorrido

Consiste en la creación de sólidos a partir de la traslación o extrucción a travésde un eje o de la rotación alrededor de un eje.

Trayectoria en el plano Extrucción a lo largo de un jej

Trayectoria en el plano Revolución alrededor de un eje

3. Representación de frontera

Los objetos son descritos en términos de sus superficies fronteras: vértices,aristas y caras.

Las superficies planas están limitadas por polígonos mientras que las curvasson aproximadas a un conjunto de superficies planas.

Page 46: Libro procesamiento imagenes

ING. HERNAN VARGAS NOLIVOS UTM

Ejemplo:

Vértices Aristas CarasV1 V1-V2 V1-V2-V3_v4V2 . .. . .Vn Vn-1-Vn Vn-2-Vn-1-Vn

Los vértices en las caras se definen de forma tal que por regla de la manoderecha, se obtenga la normal en la dirección hacia el exterior del sólido.

4. Representaciones de particionamiento espacial

El sólido está compuesto por una colección de sólidos adjuntos que no seinterceptan y no necesariamente son del mismo tipo.

4.1Descomposición celular:

A partir de un conjunto de células primitivas, se forman los objetos sólidos. Lascélulas primitivas son generalmente paramétricas.

Primitiva Primitiva

4.2Enumeración del espacio ocupado

Las células primitivas son idénticas y forman una red regular. La célula másutilizada es el cubo. Para definir un objeto en la red de células, se especificaqué célula está ocupada por el mismo.

Page 47: Libro procesamiento imagenes

ING. HERNAN VARGAS NOLIVOS UTM

4.3Octrees

Es una variante jerárquica de la enumeración del espacio ocupado. Se suponeque el espacio está parcialmente ocupado y se subdivide en 8 cubos que seránsubdivididos a su vez en 8, si están parcialmente ocupados por los objetos, encaso contrario, no se subdividen.

Existe un criterio para determinar cuándo no se continúa particionando debidoal tamaño del cubo y para determinar si una célula pequeña, está parcialmenteocupada o no por el objeto.

4.4Geometría conductiva de sólidos

Los objetos se almacenan como árboles en cuyas hojas se en cuentranprimitivas y en los nodos se encuentran operaciones booleanas.

Page 48: Libro procesamiento imagenes

ING. HERNAN VARGAS NOLIVOS UTM

VIII. Vistas en 3D Necesidad de las proyecciones geométricas planas. Proyecciones paralelas y perspectivas

8.1. Introducción

Debido a que los objetos tridimensionales serán representados en unasuperficie plana como es la pantalla del monitor de la computadora, esnecesario lograr una proyección de dichos objetos en un plano bidimensional.

De forma general, una proyección transforma los punto situados en un sistemade dimensión n, en puntos de un sistema de dimensión n-m (m>0).

8.2. Proyecciones

Existen dos métodos básicos para proyectar objetos tridimensionales sobre unasuperficie bidimensional:

Proyección en paralelo Proyección en perspectiva

Cuando se realiza una proyección se obtiene una vista determinada del objetoen dependencia de los parámetros de la proyección.

8.2.1. Proyecciones en paralelo

Plano de proyección

Las vistas que se obtienen de esta proyección, dependen del ángulo que seforma entre la dirección de proyección y el plano de proyección. Si la direcciónde la proyección es perpendicular al plano de proyección, es proyecciónortogonal y si no; es proyección oblicua.

Page 49: Libro procesamiento imagenes

ING. HERNAN VARGAS NOLIVOS UTM

Ortogonal

Se clasifican en:Clásicas:

El plano de proyección es paralelo a uno de los planos coordenados paraobtener las tres vistas clásicas:

Planta Frontal Lateral

Si el plano de proyección no es paralelo a ninguna de las caras del objeto, o loque es lo mismo; no es perpendicular a ninguna de sus aristas, entonces setrata de una proyección axonométrica.

Axonométricas

En estas proyecciones varían las distancias y los ángulos del objeto, pero seconserva el paralelismo. Se clasifican en:

Isométricas Dimétricas Trimétricas

Isométricas: Acorta la distancia de los ejes en la misma medida

Dimétricas: Las distancias de dos de los ejes se acortan en la misma medida

Trimétricas: Las distancias en los tres ejes, se acortan de manera desigual

Proyecciones oblicuas:

En estas proyecciones el plano de proyección es paralelo a una de las aristasdel objeto pero no es perpendicular a la dirección de la proyección.

Se clasifican en: Caballera Cabinete

Page 50: Libro procesamiento imagenes

ING. HERNAN VARGAS NOLIVOS UTM

Caballera:

La dirección de la proyección forma un ángulo de 45º con el plano deproyección y no se producen acortamientos

α =45º

Las componentes de la dirección de la proyección referidas al sistema son:

x’, y’, z’: (cos α, sen α, 1)

Cabinete o militar

Se produce un acortamiento a la mitad de las líneas paralelas al eje z y es másrealista

x’, y’, z’: (cos α, sen α, 2)

8.2.2. Proyecciones perspectivas

En estas proyecciones no se trabaja con la dirección de la proyección, sino conun centro de proyección situado a una distancia finita del plano de proyección,creándose un efecto visual parecido al producido por el sistema de visiónhumano.

El tamaño de los objetos es inversamente proporcional a la distancia que lossepara del centro de proyección. Las distancias, ángulos y el paralelismo delobjeto, varían en la proyección, excepto los ángulos y paralelas que seencuentran en una cara paralela al plano de proyección.

Page 51: Libro procesamiento imagenes

ING. HERNAN VARGAS NOLIVOS UTM

a Plano de proyección

a’

centro de proyecciónb b’

Las proyecciones perspectivas se clasifican en:

Simple escorzo:

Se obtiene al proyectar un paralelepípedo con una cara paralela al plano deproyección. En dicha cara se conservan los ángulos y las paralelas mientrasque en las otras caras las paralelas tienden a interseptarse en un solo punto. Aesta proyección también se le llama proyección con un punto de fuga.

Doble escorzo:

Se obtiene al proyectar un paralelepípedo con una arista paralela al plano deproyección. Sólo se conserva el paralelismo para las rectas paralelas al planode proyección. Se observan dos puntos donde tienden a interceptarse lasrestantes aristas por lo que esta proyección se conoce también comoproyección con dos puntos de fuga.

Page 52: Libro procesamiento imagenes

ING. HERNAN VARGAS NOLIVOS UTM

Triple escorzo

En esta proyección no hay ni arista ni cara paralela al plano de proyección porlo que no se conservan las distancias, ángulos ni paralelismo y se observantres puntos de fuga.

Vistas

La vista es el resultado de seleccionar los parámetros de la proyección endependencia del tipo de proyección, y obtener la vista del objeto según esosparámetros.

Parámetros de la vista para fijar el sistema de coordenadas del plano deproyección

El plano de proyección queda determinado por:

PR Punto de referencia de la vista, se encuentra en el plano de proyección ycoicide con el origen del sistema del plano de vista

Page 53: Libro procesamiento imagenes

ING. HERNAN VARGAS NOLIVOS UTM

N Vector normal al plano de proyección

DV Es un vector que expresa la dirección vertical. La proyección de estevector en el plano de proyección determina el eje Y del sistema del plano de lavista

Obtención de los ejes coordenados del sistema de la vista:

1. Z’ coincide con N2. El producto vectorial de Z’ con un vector cualquiera (0,1,0) (dirección del

eje Y) determina la coordenada X’3. El producto vectorial Z’ x X’ determina el eje Y’

Para facilitar el proceso de obtención de la vista, se obtiene un volumen devisión canónico

Parámetros del sistema de coordenadas de la vista para determinar laproyección y el volumen de visión canónico:

Proyección perspectiva

Page 54: Libro procesamiento imagenes

ING. HERNAN VARGAS NOLIVOS UTM

Proyección paralela

Parámetros de la proyección

Umax, Vmax esquina superior derecha de la ventana en el plano de vistaUmin, Vmin esquina inferior izquirda

ZF coordenada Z del plano frontalZP coordenada Z del plano posteriorCP Centro de proyección en proyección perspectiva. En paralela: DP = CV – CPCV centro de la ventana

CV = ((Umax + Umin)/2, (Vmax + Vmin)/2, 0)

Volúmenes de visión canónicos

Page 55: Libro procesamiento imagenes

ING. HERNAN VARGAS NOLIVOS UTM

Proyección paralela

Proyección perspectiva

Page 56: Libro procesamiento imagenes

ING. HERNAN VARGAS NOLIVOS UTM

IX. FOTOMOSAICOS EN LAS IMÁGENESDIGITALES

9.1. Percepción de colores

El ojo tiene dos tipos de receptores: bastones y conos. Los bastones transmitendiferentes intensidades de gris y los conos le permiten al cerebro percibir latonalidad de los colores. Existen tres tipos de conos, el primero es sensible a laluz rojo/naranja, el segundo a la luz verde y el tercero a la luz azul/violeta.Cuando un cono es estimulado, el cerebro percibe el color correspondiente. Porejemplo, cuando los conos verdes son estimulados, se percibe el color verde;cuando los conos rojo/naranja son estimulados, se percibe el color rojo. Si sonestimulados simultáneamente ambos tipos de conos, los verdes y losrojo/naranja, se percibe el color amarrillo. El ojo no puede diferenciar entre uncolor amarillo espectral, y alguna combinación de rojo y verde. Lo mismosucede con nuestra percepción de los colores cian, magenta, y los otroscolores espectrales intermedios. Debido a esta respuesta fisiológica, el ojopuede percibir una amplia gama de tonalidades por medio de la variación desolo tres colores: rojo, verde y azul. Cualquier color puede ser espectralmenteanalizado usando un prisma para determinar sus intensidades primarias derojo, verde y azul.

9.2. Imágenes digitales

La digitalización de imágenes es el proceso por medio del cual se convierte unaimagen en un formato interpretable por las computadoras. Una imagen digitalse puede obtener utilizando cámaras fotográficas digitales, escáneres, etcétera.En la década de los ochenta solo era posible utilizar cuatro colores en laspantallas de las computadoras. Esto evolucionó rápidamente y actualmente seutilizan millones de colores.

Una imagen digital es un arreglo de dos dimensiones de píxeles ( pictureelement ) y un píxel es la unidad mínima que conforma una imagen digital.

9.3. Representación de colores en imágenes digitales.Normalmente, los colores primarios son el rojo, el amarillo y el azul, y a partir de lamezcla de estos se crean los otros colores. Sin embargo, en las imágenes digitaleslos colores primarios son el rojo (Red), el verde (Green) y el azul (Blue) y se tilizanlas intensidades de luz para obtener nuevos colores. Esto dio lugar al sistemaRGB.Una imagen digital está compuesta por una matriz bidimensional de elementosRGB. En imágenes digitales de color verdadero, se utilizan 8 bits (1byte) pararepresentar la intensidad de cada componente o canal de color, y por ser 3componentes por color, se necesitan 24 bits (3 bytes) para formar un solo color, loque es equivalente a un píxel. Entonces, una imagen de 10 x 10 píxe les utiliza2400 bits o sea 300 bytes.Siguiendo el esquema de 1 byte por cada componente o canal, y sabiendo que elvalor máximo que puede ser representado por 1 byte es 255, la intensidad de una

Page 57: Libro procesamiento imagenes

ING. HERNAN VARGAS NOLIVOS UTM

canal está en un rango de 0 a 255, por lo que un píxel estará compuesto por tresdiferentes intensidades de R, G y B en un rango de 0 a 255.

El sistema RGB no es el único utilizado en las imágenes digitales. Se hancreado diversos sistemas para representar los colores según la aplicación. Elsistema RGB es nativo de las computadoras, pero no siempre es el másadecuado. Es un sistema aditivo porque el color blanco se logra mezclando lostres colores rojo, verde y azul, y el negro es la ausencia de color. Por elcontrario, en el sistema CMY (Cyan, Magenta, Yellow) utilizado para los mediosimpresos, expresa las intensidades de los colores cian, magenta y amarillo, esun sistema sustractivo porque el color negro se logra mezclando los trescolores y el blanco es la ausencia de color.

En el sistema RGB el blanco es RGB (255, 255, 255) y el negro es RGB (0, 0,0), en donde los valores entre paréntesis son las intensidades de cada uno delos canales RGB. RGB(255,0,0), RGB(0,255,0) y RGB(0,0,255) representan elrojo, el verde y el azul respectivamente. Al mezclar el color rojo con el azul seobtiene el color morado, RGB(255, 0, 255). Se pueden crear todos los coloresdisponibles variando las intensidades de las componentes RGB.

Otro sistema es el YUV, que fue adoptado por National Television SystemCommitee (NTSC) para la transmisión de señales de televisión a color. Supropósito es hacer uso de las características del ojo humano para maximizar lautilización de un ancho de banda definido. El sistema visual humano es mássensible a los cambios de intensidad del color que a los cambios de latonalidad. Existe una formula para convertir de un sistema de representaciónde colores a otro. En la conversión no se pierde la información sino serepresenta de una forma distinta.

9.4. Resolución de las imágenes digitales

La resolución es un factor que se utiliza para convertir las dimensiones de unaimagen física a píxeles de una imagen digital y viceversa. Si una fotografía esdigitalizada a 300 dpi (Dots Per Inch) o puntos por pulgada, significa que porcada pulgada de la fotografía física original se van a obtener 300 píxeles en laimagen digitalizada. Si se imprime una imagen a 75 dpi, quiere decir que porcada 75 píxeles se imprimirá una pulgada sobre papel.

9.5. El proceso de creación de fotomosaicosNotación y vocabularioA continuación se encuentra una lista de la notación y el vocabulario utilizadosCuadro Una división de la imagen original. La imagen

original es dividida en partes iguales a lasque se les llamaran cuadros.

C (x, y) Cuadro localizado en x, y dentro de la matriz decuadros que conforman la imagen original.

W y H El ancho y el alto de un cuadro.X y Y Columna y fila.RGB(r,g,b) Un color en formato RGB con sus

correspondientes componentes rojo, verde yazul. Ejemplo: RGB(100, 25, 210)

Page 58: Libro procesamiento imagenes

ING. HERNAN VARGAS NOLIVOS UTM

Imagen original La imagen que será transformada enfotomosaico.

Colección deimágenes

El conjunto de imágenes que sirven de entrada alprograma para reemplazar la imagenoriginal.

Fotomosaico final oresultado

La imagen original convertida enfotomosaico.

9.5.1. Creación de fotomosaicos

La creación de un fotomosaico involucra métodos de alteración de imágenes yel reconocimiento de las mismas. En el Diagrama 1 se presenta el bosquejo delproceso de creación de fotomosaicos.

Entrada

El proceso de creación de fotomosaicos necesita como mínimo:La imagen original que será convertida en un fotomosaico.Una colección de imágenes que se utilizaran para reemplazar la imagen original.

Salida

El proceso dará como resultado un fotomosaico en donde la imagen original esreemplazada completamente por una parte o toda la colección imágenes.

Proceso

Algoritmo general

El proceso para la creación de fotomosaicos parte de la siguiente idea:

Page 59: Libro procesamiento imagenes

ING. HERNAN VARGAS NOLIVOS UTM

Reemplazar los segmentos de una imagen con otras imágenes decaracterísticas

similares. El proceso puede apreciarse en el cuadro del algoritmo 1, el cualpuede

resumirse en los siguientes pasos:

Dividir la imagen original en cuadros.Por cada cuadro:Buscar en la colección de imágenes la imagen que más similitud tenga al cuadrooriginal.Remplazar el cuadro con la imagen encontrada.

Algoritmo general para fotomosaicos.

Según el Algoritmo 1, es necesario definir el número de columnas y filas quetendrá el fotomosaico, para determinar el número de cuadros. Si se quiereobtener por ejemplo un fotomosaico de 1280 por 1000 píxeles con cuadros de128 por 100 píxeles cada uno, se debe dividir la imagen original en 100cuadros distribuidos en 10 columnas y 10 filas.

En el Algoritmo 1, la función diferencia indica que tan diferentes son dosimágenes. Si el valor de la función diferencia es cero significa que lasimágenes son idénticas. Entre más grande es el valor de la función, lasimágenes son más distintas entre si. La mejor imagen será aquella que dé elmenor valor al ser comparada con el cuadro de la imagen original utilizando lafunción diferencia. Esta es la parte más importante del proceso, por lo que enla implementación esta función debe ser especialmente eficiente. Es ejecutadapor cada imagen de la colección de imágenes por cada cuadro en elfotomosaico.

Page 60: Libro procesamiento imagenes

ING. HERNAN VARGAS NOLIVOS UTM

La función reemplazar del Algoritmo 1, es la función que reemplaza un cuadrode la imagen original definida en el primer parámetro y lo sustituye con laimagen del segundo parámetro. En la implementación esta función essimplemente copiar y pegar una imagen origen a una imagen destino.

En el Diagrama 2 se aprecia el procedimiento para procesar un cuadro delfotomosaico.

Diagrama 2.

9.5.2. Reconocimiento de imágenes

La función diferencia es la base del reconocimiento de imágenes; indica ladistancia entre dos imágenes. Existen diversas estrategias para reconocimiento

de imágenes digitales de acuerdo al tipo de aplicación y de los recursos delsistema. Utilizando los conceptos derivados del OCR (Optical CarácterRecognition), el primer paso para comparar dos imágenes es vectorizar cadaimagen y cada cuadro para luego, comparar las formas de los objetosresultantes. El proceso de vectorización consiste en definir imágenes utilizandola geometría y funciones matemáticas. Los algoritmos existentes para esteproceso consumen una gran cantidad de recursos, y la metodología parareconocer la similitud entre estos objetos resulta muy compleja.

La manera más directa de comparar un cuadro la imagen original con unacolección de imágenes, es comparar cada píxel del cuadro de la imagenoriginal con su correspondiente píxel en la imagen de la colección imágenes, yacumular las distancia entre cada pareja de píxeles para determinar la distanciageneral entre las dos imágenes. Aunque esta es una estrategia relativamentebuena para comparar imágenes, la cantidad de comparaciones necesarias esmuy grande. Por cada comparación debe calcularse la distancia entre lospíxeles de las dos imágenes y por cada pareja de píxeles debe compararsecada uno de los tres canales RGB.

Método lineal

La distancia D entre dos píxeles está dada por:

D=(R)+(G)+(B)

Esta distancia es calculada por cada píxel y por cada canal de color en lasimágenes comparadas.

Metodo lineal

Page 61: Libro procesamiento imagenes

ING. HERNAN VARGAS NOLIVOS UTM

Método cuadrático

Se puede acentuar el efecto de la diferencia de cada píxel utilizando unadiferencia cuadrática o distancia euclidiana.

D2=(R)2+(G)2+(B)2

Como el objetivo es encontrar un valor significativo que nos indique que tandiferentes son dos imágenes, podemos eliminar el cálculo de la raíz cuadradadebido al siguiente teorema matemático:

Si a2 > b2 entonces a > b

Este requiere más procesamiento que el método lineal pero es el más utilizadopor la calidad de sus resultados. Puede acentuarse aun mas la diferenciautilizando diferentes potencias en la fórmula, pero usualmente no es necesario.

En estos métodos presentados, se asume que las dos imágenes – parámetrotienen las mismas dimensiones y que cada píxel esta compuesto por trescanales de color RGB.

Método Compuphase

El grupo de investigación Compuphase en Holanda, determinóexperimentalmente una fórmula que se aproxima mejor a nuestra percepcióndecolores. (http://www.compuphase.com/cmetric.htm)

Page 62: Libro procesamiento imagenes

ING. HERNAN VARGAS NOLIVOS UTM

Este método requiere mucho mas capacidad de procesamiento que los dosanteriores y sus resultados no difieren mucho, por lo que debe utilizarse solo sise requiere de mayor precisión en la selección de imágenes.

9.5.3. Calidad de los fotomosaicos

La mejor herramienta para determinar la calidad de una forma de arte visualesel sentido de la vista, sin embargo, este es muy subjetivo. Es necesario definirun parámetro para poder comparar fotomosaicos de manera objetiva y asídeterminar si una técnica esta siendo efectiva o no. Un parámetro puede ser elpromedio de las diferencias encontradas en el proceso de cada cuadro de laimagen. Esta medida de comparación se puede usar únicamente paracomparar los resultados de distintas técnicas sobre una misma imagen original.

En la Gráfica 3 se encuentran fotomosaicos creados con técnicas que aún nohan sido introducidas pero sirven de ejemplo para explicar la calidad de losfotomosaicos. El fotomosaico (b) se creo utilizando filtro de colores y alteraciónde las imágenes, reporto una diferencia acumulada mayor al mosaico del literal(c) pero evidentemente produce un mejor efecto por tener un color masparecido a la imagen original. El fotomosaico (c) fue creado sin tomar en cuentala información de color, reportó la diferencia acumulada más pequeña ya quese hizo énfasis en la detección de contornos

Page 63: Libro procesamiento imagenes

ING. HERNAN VARGAS NOLIVOS UTM

COMPARACIÓN DE LOS FOTOMOSAICOS

9.5.4. Reduciendo el número de imágenes comparadas

Por cada cuadro se recorre toda la colección de imágenes. A medida que lacolección aumenta, el tiempo necesario para encontrar la mejor imagen paraese cuadro también aumenta. Es necesario clasificar las imágenes según suscaracterísticas de color.

Color promedio

Al alejarnos de una imagen, se llega a una distancia en donde la imagen se vecomo un punto de un solo color. Se puede reemplazar un cuadro de la imagencon una imagen de un color sólido, como se aprecia en la Gráfica 4, y comomenciona Harmon en su artículo. Este color se calcula con el promedio de loscolores en la imagen. Para poder usar el color promedio en la colección deimágenes es necesario calcularlo previo a la ejecución del proceso de creaciónde fotomosaicos.

Algoritmo 4. Color promedio.

Color promedio

Page 64: Libro procesamiento imagenes

ING. HERNAN VARGAS NOLIVOS UTM

Margen de selección

Utilizando un byte por cada canal, existen millones de combinaciones decolores posibles. Al buscar las imágenes en la colección de imágenes con uncolor específico, es posible que no se tenga ninguna imagen con ese color.Entonces se hace necesario definir un rango de colores para filtrar lasimágenes.

Por otro lado, si la colección de imágenes no es muy grande, puede ser que noexistan imágenes que se encuentren dentro del rango definido del filtro,entonces la definición del rango debe ser dinámica; el margen se debe autoajustar hasta que exista por lo menos una imagen en el rango definido.

Page 65: Libro procesamiento imagenes

ING. HERNAN VARGAS NOLIVOS UTM

9.6. Alteración de colores

Si el rango de colores de selección definido en la sección anterior se vuelvemuy grande, es posible que se tengan imágenes con color promedio muydistinto al color promedio del cuadro original que esta siendo procesado. Estopuede corregirse con la alteración de los colores en la imagen que va a sersustituida, pero tratando que sea lo más similar posible al cuadro originalprocesado.

Modificación de color.

El valor de la modificación puede ser muy grande, y las imágenes de loscuadros individualmente podrán verse distorsionadas causando un efectoindeseable, pero el color general del fotomosaico es mejorado.

Page 66: Libro procesamiento imagenes

ING. HERNAN VARGAS NOLIVOS UTM

Diagrama 4.

Procesar Nuevo Cuadro

9.7. Reutilización de imágenes

Si se tiene una colección de imágenes muy pequeña y la imagen original tienemuy poco detalle, es posible que el proceso repita una imagen ya utilizada Esteefecto, en la mayoría de casos no es deseable por estética; a distancia unfotomosaico puede lucir bien pero al acercarse y percibir el detalle, existenseries de imágenes repetidas como puede apreciarse en la Gráfica 5.

Page 67: Libro procesamiento imagenes

ING. HERNAN VARGAS NOLIVOS UTM

Gráfica 5. Reutilización de imágenes.

Este efecto se puede contrarrestar, marcando cada imagen utilizada en lacolección de imágenes y agregar la condición al filtro de selección de imágenesde que las imágenes ya utilizadas una vez no pueden utilizarse nuevamente.Esto puede implementarse fácilmente utilizando un campo de tipo booleancomo bandera en la colección de imágenes. Esta condición obliga a disponerde una colección de imágenes suficientemente grande como para podersustituir toda la imagen original. Al utilizar esta técnica, es posible que lacalidad del fotomosaico sea disminuida ya que con cada cuadro que seprocesa se va disminuyendo la disponibilidad de imágenes.

Page 68: Libro procesamiento imagenes

ING. HERNAN VARGAS NOLIVOS UTM

9.8. Prioridad

Si se utiliza la técnica para evitar la repetición las imágenes ya utilizadas, laimagen se va deteriorando a medida que se procesa la imagen original. Alprocesar los últimos cuadros se tiene una menor disponibilidad de imágenes enla colección de imágenes que en los primeros ya que una buena parte de lacolección de imágenes habrá sido marcada como utilizada. Algunos cuadrosnecesitan especial atención. Debe dárseles prioridad a los cuadros que tenganmás contornos, ya que estos definen las figuras, o a aquellos que tengan unamayor variación de colores. Con la varianza, derivada de cálculos estadísticos, esposible encontrar la variación de colores en los cuadros.

La varianza indica la distancia que hay entre el color promedio de una imagen ycada uno de los píxeles que la componen.

Varianza.

Antes de iniciar con el proceso de elaboración del fotomosaico es necesariocalcular la varianza de cada uno de los cuadros y con esto construir una listade prioridades. Los cuadros con mayor varianza deben ser procesados primeropara que estos tengan una mejor disponibilidad de imágenes. La calidad delfotomosaico es mejorada con esta técnica.

Page 69: Libro procesamiento imagenes

ING. HERNAN VARGAS NOLIVOS UTM

Page 70: Libro procesamiento imagenes

ING. HERNAN VARGAS NOLIVOS UTM

X. BIBLIOGRAFÍA ABRASH, Michael. Michael Abrashs’s Graphics Programming Black

Book Special Edition. Coriolis Group Books. Estados Unidos, 1997. 1342pp.ISBN 1-57610-174-6

ROCHESTER INSTITUTE OF TECHNOLOGY / Department of ComputerScience.Color Conversion Algorithms.http://www.cs.rit.edu/~ncs/color/t_convert.html

RIEMERSMA, Thiadmer. Colour Metric. Holanda. 2001.http://www.compuphase.com/cmetric.htm

KAPLAN, Ian. The Daubechies D4 Wavelet Transform. 2002.http://www.bearcave.com/misl/misl_tech/wavelets/daubechies/

FISCHER, R. Sobel Edge Detectors.http://www.dai.ed.ac.uk/HIPR2/sobel.htm

Page 71: Libro procesamiento imagenes

ING. HERNAN VARGAS NOLIVOS UTM

INDICE

ENFOQUE PRACTICO AL PROCESAMIENTO DE IMÁGENES DIGITALES YLAS GRAFICAS POR COMPUTADORA ..................................................................... 1I. PROGRAMACION ORIENTADA A OBJETOS ................................................... 1

1.1. INTRODUCCIÓN............................................................................................ 11.2. RESEÑA HISTORICA .................................................................................... 11.3. CONCEPTOS BÁSICOS GENERALES DE LA PROGRAMACIÓNORIENTADA A OBJETOS......................................................................................... 2

1.3.1. OBJETOS.-............................................................................................... 21.3.2. MENSAJE.-.............................................................................................. 21.3.3. METODOS.- ............................................................................................ 21.3.4. CLASES.- ................................................................................................. 31.3.5. ENCAPSULAMIENTO.-......................................................................... 31.3.6. HERENCIA.-............................................................................................ 31.3.6.1 HERENCIA SIMPLE.- ............................................................................ 31.3.6.2 HERENCIA MÚLTIPLE ......................................................................... 41.3.7. POLIMORFISMO DE UN OBJETO.-..................................................... 5

1.4. CLASES Y OBJETOS EN DELPHI................................................................ 6________________________ .................................................................................. 9________________________ .................................................................................. 9

II. El Procesamiento de Imágenes Digitales y las Gráficas por Computadora .......... 132.1. Principales aplicaciones del Procesamiento de Imágenes y las Gráficas porComputadora .............................................................................................................. 132.2. Algoritmos para el trazado de rectas .............................................................. 132.3. Algoritmo DDA.............................................................................................. 142.4. Algoritmo de Bresenham:............................................................................... 15

III. Trazado de círculos............................................................................................. 213.1. Subprograma CirclePoint ............................................................................... 213.2. Algoritmo de Bresenham para el trazado de circunferencias ......................... 21

IV. TRANSFORMACIONES .................................................................................. 234.1. Transformaciones de coordenadas.................................................................. 23

4.1.1. Ventana................................................................................................... 234.1.2. Ecuaciones de transformación de coordenadas de ventana a viewport: . 24

4.2. Transformaciones bidimensionales básicas.................................................... 254.2.1. Traslación: .............................................................................................. 254.2.2. Cambio de escala: ................................................................................... 264.2.3. Rotación:................................................................................................. 264.2.4. Representación de matrices y coordenadas homogéneas ....................... 27

V. Algoritmos de corte ................................................................................................ 305.1. Cohen – Sutherland para el corte de líneas..................................................... 305.2. Sutherland – Hodgman para el corte de polígonos......................................... 35

VI. RELLENO DE POLÍGONOS............................................................................ 396.1. Rellenado de rectángulos................................................................................ 396.2. Rellenado de polígonos por “Scan Line” ....................................................... 39

VII. La tercera dimensión .......................................................................................... 43Vértices Aristas Caras............................................................................................. 46VIII. Vistas en 3D ....................................................................................................... 48

8.1. Introducción.................................................................................................... 488.2. Proyecciones................................................................................................... 48

Page 72: Libro procesamiento imagenes

ING. HERNAN VARGAS NOLIVOS UTM

8.2.1. Proyecciones en paralelo ........................................................................ 488.2.2. Proyecciones perspectivas ...................................................................... 50

IX. FOTOMOSAICOS EN LAS IMÁGENES DIGITALES................................... 569.1. Percepción de colores ..................................................................................... 569.2. Imágenes digitales .......................................................................................... 569.3. Representación de colores en imágenes digitales........................................... 569.4. Resolución de las imágenes digitales ............................................................. 579.5. El proceso de creación de fotomosaicos......................................................... 57

9.5.1. Creación de fotomosaicos....................................................................... 589.5.2. Reconocimiento de imágenes ................................................................. 609.5.3. Calidad de los fotomosaicos ................................................................... 629.5.4. Reduciendo el número de imágenes comparadas ................................... 63

9.6. Alteración de colores ...................................................................................... 659.7. Reutilización de imágenes .............................................................................. 669.8. Prioridad ......................................................................................................... 68

X. BIBLIOGRAFÍA.................................................................................................... 70