La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

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

Presentaciones similares


Presentación del tema: "Problema de inclusión en una Curva Digital Por Orellana Muñoz, Alfonso Paz Vicente, Rafael Pérez Medina, Gerardo Rodríguez Naranjo."— Transcripción de la presentación:

1

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

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

4 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

5 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.

6 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.

7 Consideraciones Según tengamos 4 u 8 adyacencia tendremos los siguientes curvas mínimas: 0 1 01 1 1 1 0 11 0 1 0 1 01 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.

8 Consideraciones Ejemplo de curva aceptable : Ejemplo de curva incorrecta:

9 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.

10 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.

11 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.

12 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.

13 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 Para

14 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.

15 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 Para

16 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. XX X X P XX X X 4- Adyacentes 8- Adyacentes

17 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

18 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.

19 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: 1111111111111111En este caso al llegar al primer 1 X 1111111 cuenta que hay un cruce, 1 1pero al llegar al segundo cuenta 11111111111 otro cruce.

20 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.

21 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.


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

Presentaciones similares


Anuncios Google