Problema de inclusi - PowerPoint PPT Presentation

1 / 20
About This Presentation
Title:

Problema de inclusi

Description:

Si est por encima de P Y antes estaba debajo Entonces. incrementar contador ... comparaciones, dar a mucha casualidad que tengamos una imagen de este tipo, y ... – PowerPoint PPT presentation

Number of Views:83
Avg rating:3.0/5.0
Slides: 21
Provided by: davi1125
Category:

less

Transcript and Presenter's Notes

Title: Problema de inclusi


1
Problema de inclusión en una Curva Digital
  • Por
  • Orellana Muñoz, Alfonso
  • Paz Vicente, Rafael
  • Pérez Medina, Gerardo
  • Rodríguez Naranjo

2
Indice
  • Introducción
  • Consideraciones
  • Solución al Problema
  • Algoritmo propuesto
  • Algoritmo implementado
  • Problemas surgidos
  • Ejemplo de ejecución

3
Introducción
Qué es el problema de la inclusión en una curva
digital? Dada una curva cerrada simple C en la
pantalla del ordenador y un pixel p que no
pertenece a la curva, pretendemos determinar si p
se encuentra o no en la región acotada limitada
por C.
C
p
4
Consideraciones
Curva Digital Hemos considerado como curva
digital una sucesión continua de unos dentro de
la matriz. Curva Digital Cerrada Una curva
digital que estableciendo un sentido al
recorrido, se empieza y termina en el mismo
punto. La curva deberá delimitar el plano en dos
componentes conexas.
5
Consideraciones
Consideraciones

En principio debemos suponer que todo punto de
la curva sólo tiene dos adyacentes, tanto en
4-adyacencia como en 8-adyacencia. Esto es
debido a que se presentan problemas a la hora de
conocer el borde de la imagen. En la explicación
del algoritmo implementado se mostrará las
implicaciones que esta suposición nos acarrea.
6
Consideraciones
Según tengamos 4 u 8 adyacencia tendremos los
siguientes curvas mínimas 0 1 0 1 1 1 1 0
1 1 0 1 0 1 0 1 1 1 8-Adyacencia
4-Adyacencia Además la curva debe estar
completamente contenida dentro de la imagen, es
decir, que el borde de la imagen no corte a la
curva. Sí se permite que la curva sea tangente al
borde de la imagen.
7
Consideraciones
Ejemplo de curva aceptable
Ejemplo de curva incorrecta
8
Consideraciones
Formato del fichero de entrada Se nos debe
proporcionar un fichero de texto que contenga una
matriz binaria que cumpla las restricciones
anteriores, además no debe haber espacios entre
los elementos de una fila de la matriz y no haber
líneas intermedias en blanco entre cada fila. Las
matrices que se usan son de 128 filas por 128
columnas.
9
Solución al Problema
La solución a este problema se basa en contar el
número de cruces de la curva con un camino de
salida desde el punto hasta el borde de la
imagen. Si el número de cruces con la curva es
impar se puede afirmar que el punto está dentro
de la misma. Si es par se obtiene lo contrario,
el punto está fuera de la curva.
5 cruces está dentro.
6 Cruces está fuera.
10
Algoritmo Propuesto
En la documentación Angel Francés nos propone un
algoritmo para implementar esta solución.
Principalmente se basa en un recorrido de todos
los puntos de la curva de forma ordenada y
secuencial. El camino de salida es una línea
horizontal con respecto a la cual se cuentan el
número de veces que se pasa de un punto que esté
por encima hasta otro siguiente que esté por
debajo o viceversa. Esto implica que la
codificación de la curva sea una lista de puntos
ordenados que defina un recorrido secuencial de
la curva.
11
Algoritmo Propuesto
El algoritmo analiza todos los puntos de la
curva, aunque sólo almacena información a cerca
de aquellos cruces que se producen a la derecha
del punto.
5 cruces está dentro.
12
Algoritmo Propuesto
P Punto de origen Para cada punto pc de la
curva Hacer Si pc está a la derecha de P
Entonces Si está por encima de P Y antes
estaba debajo Entonces incrementar
contador Si está por debajo de P Y antes estaba
por encima Entonces incrementar contador Fin
Si Fin Si Fin Para
13
Algoritmo Implementado
No hemos implementado el algoritmo propuesto por
la complejidad que supone pasar de la matriz
binaria a un recorrido de la curva, este problema
no es de nuestro dominio. Además hemos encontrado
un método más fácil y que no desperdicia tanto
cálculo. El cambio introducido, a parte del uso
de la matriz binaria, se basa en que recorremos
el camino de salida, en vez de los puntos de la
curva, contando los puntos de corte.
14
Algoritmo Implementado
P Punto de origen Para cada punto pc del camino
de salida Hacer Si pc corta a la curva
Entonces Si hay puntos adyacentes por encima
de pc Y hay puntos adyacentes por debajo
de pc Entonces incrementar contador Si
NO se trata de una tangencia y no contamos
como cruce Fin Si Fin Si Fin Para
15
Problemas Surgidos
Adyacencia Necesitamos dos funciones distintas
para calcular el número de cruces según se tome 4
u 8 adyacencia. Al calcular los adyacentes
superiores e inferiores, son distintos. X X X
X P P X X X X 4-
Adyacentes 8- Adyacentes
16
Problemas Surgidos
Tangencias se nos presentó un problema al
controlar las tangencias de la curva con el
camino de salida. Este problema puede ser muy
serio ya que nos puede contar como un cruce de
más, y por lo tanto considerar el punto en un
sitio equivocado.
Este problema lo hemos solucionado mediante el
uso de unas gurdas que colocan los contadores de
los adyacentes a 0 solo en el caso de que haya un
cruce y se tome un punto en blanco. En el caso de
que no exista un cruce, como en el punto X los
contadores no se ponen a cero.
X
17
Problemas Surgidos
Cruces de la curva no los hemos contemplado ya
que podría llevar a un error el hecho de que la
curva se corte consigo misma.
En este ejemplo se puede apreciar que el camino
de salida corta dos veces a la curva, por lo que
el punto está en el exterior, pero en realidad
está dentro.
18
Problemas Surgidos
Sólo aceptamos aquellas curvas cuyos puntos sólo
tengan dos adyacentes porque encontramos un
ejemplo en el que el programa daría fallo, aunque
es un caso muy específico en el caso de
8-adyacencia cuando la curva se presenta de la
siguiente forma 1111111111111111 En este caso
al llegar al primer 1 X 111111 1
cuenta que hay un cruce, 1
1 pero al llegar al segundo cuenta 11111111111
otro cruce.
19
Problemas Surgidos
Hemos dicho que este caso es muy específico
porque como tenemos cuatro funciones para cada
una de las adyacencias, eligiéndose aquella que
haga el menor número de comparaciones, daría
mucha casualidad que tengamos una imagen de este
tipo, y que el camino de salida coincida con la
fila o columna que presente este
comportamiento. Dado esto, la restricción que
imponíamos al tipo de las imágenes pude
eliminarse en cierto sentido, entendiendo que en
la mayoría de los casos el programa acertará, y
que sólo fallará en un porcentaje muy pequeño de
pruebas.
20
Ejemplo de Ejecución
Ahora vamos a pasar a ver unos ejemplos de
ejecución del algoritmo implementado en
C. Vamos a presentar la resolución de las
tangencias y que el programa funciona bien
mientras se cumplan las exigencias de la imagen.
Write a Comment
User Comments (0)
About PowerShow.com