Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Gráficos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 15-09-2008
erikmx erikmx is offline
Miembro
 
Registrado: nov 2007
Posts: 40
Poder: 0
erikmx Va por buen camino
Trazar lineas en una imagen y Calcular Angulo???

Hola a todos, les cuento un poco lo que estoy trabajando, estoy trabajndo en un proyecto de la universidad (Lic en criminalistica )donde estamos viendo algunos metodos basicos que utilizan para calcular la velocidad del viento algun personal del ejercito y me surgio la idea de ver si es posible pasarlo a un pequeño programita en delphi hace años estudie programacion y ando oxidado por eso requiero su ayuda.

Bien el metodo consiste en observar una bandera que ondea y en base al angulo que genera hacer una pequeña operacion matematica y nos da la velocidad del viento, ejemplo vi demos que entre el asta de la bandera y la bandera se forma un angulo de 60° entonces dividimos estos 60/4= 15 MillasxHora.

Bien no tiene nada de complicado pero se me ocurrio que si cargara yo una imagen o fotografia de una bandera en un componente de imagen cuya asta es de color verde por ejemplo y la bandera es blanca o negra y en su extremo le coloco una marca de color amarillo, podria trazar una linea entre estos dos puntos??????? Me imagino que si si conosco el valor del color no??? nadamas que el problema es que no se como empezar

Bueno ahora supongamos que ya traze una linea entre esos puntos y se que mi vertical es el asta de color verde puedo calcular el angulo que se genera de la interseccion de estas lineas?????????? Esto lo he hecho con Photoshop o CorelDraw no recuerdo ahorita cual es...

Bueno si alguien me puede ayudar con ideas le agradecer mucho, anexe unas imagenes de una bandera espero se vean que es basicamente lo que pretendo hacer ojala me ilustren si es posible, saludos atodos.
Archivos Adjuntos
Tipo de Archivo: zip Bandera.zip (8,2 KB, 9 visitas)

Última edición por erikmx fecha: 15-09-2008 a las 04:01:20.
Responder Con Cita
  #2  
Antiguo 15-09-2008
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.735
Poder: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Lo de detectar los puntos amarillos es un poco difícil, sobre todo si no es una imagen con colores planos. (un mástil verde, según sombras y luces puede tener muchísimos verdes)

Lo de calcular el ángulo es fácil: Teoría de triángulos rectángulos.

- Primero deberías tener las coordenadas x,y de los trés puntos de la imagen.
- Luego podrás calcular la distancia entre x1 y x2 y entre y1 e y2 para saber el largo de los catetos (opuesto y adyacente).
- Utilizando las funciones seno y coseno podrás averiguar toda la información que necesitas.

NOTA: Todo esto funciona, suponiendo que la foto la sacas al nivel de la bandera y perpendicular a la dirección del viento.
Responder Con Cita
  #3  
Antiguo 15-09-2008
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.293
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Bueno, yo he entendido que tú puedes marcar los puntos sobre la imagen de la bandera.
De esa forma es bastante sencillo hacer los cálculos.
Lo que no me ha quedado claro es si los puntos los marcas sobre la imagen o ya vienen en la imagen.

De todas formas, te coloco un ejemplillo. Sobre eso si quieres haz tus pruebas o corrigeme si he entendido mal.
Archivos Adjuntos
Tipo de Archivo: zip Bandera1.zip (18,2 KB, 25 visitas)
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #4  
Antiguo 16-09-2008
erikmx erikmx is offline
Miembro
 
Registrado: nov 2007
Posts: 40
Poder: 0
erikmx Va por buen camino
Cita:
Empezado por Neftali Ver Mensaje
Bueno, yo he entendido que tú puedes marcar los puntos sobre la imagen de la bandera.
De esa forma es bastante sencillo hacer los cálculos.
Lo que no me ha quedado claro es si los puntos los marcas sobre la imagen o ya vienen en la imagen.

De todas formas, te coloco un ejemplillo. Sobre eso si quieres haz tus pruebas o corrigeme si he entendido mal.
Gracias lo checare y comentare, la intencion es basicamente con una camara fija enfocar una bandera con los colores que sepa que son faciles de identificar los que use son ejemplos bien la idea es que cuando capture la imagen de mi bandera tal cual se este moviendo (incluso pense en una esfera de unicel pintada) y en base a puntos o marcas tratar de que identifique el codigo los colores y en base a eso trase una linea ente uno y otro para formar el angulo, lo que comentaba duilioisola con respecto a lo de calcular el angulo pues tiene razon es facil con las funciones de seno y coseno de delphi el detalle es conseguir esos valores que ahi es donde va la cosa.
Responder Con Cita
  #5  
Antiguo 16-09-2008
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.293
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por erikmx Ver Mensaje
...la idea es que cuando capture la imagen de mi bandera tal cual se este moviendo (incluso pense en una esfera de unicel pintada) y en base a puntos o marcas tratar de que identifique el codigo los colores y en base a eso trase una linea ente uno y otro para formar el angulo...
Vale, ahora entendí mejor. En un principio creí que querías trazar las líneas de forma manual.

...pensando...
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #6  
Antiguo 16-09-2008
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.000
Poder: 25
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
El mayor problema que le veo es identificar los puntos (pixels) que "pertenecen" a la imagen de la bandera y cuales no. La mayor dificultad que le veo es detectar el "color" ya que este varía dependiendo de la iluminación. Claro que, sabiendo que la bandera no se va a mover se puede acotar bastante y facilitarlo.

Si se sabe que el fondo va a ser estático (cuidado con los pájaros y las nubes...) se podría "enmascarar" la bandera fácilmente simplemente comparando el color de los puntos entre dos fotogramas ya que si este cambia es que la bandera se ha movido. Claro que debería establecerse un rango de "error aceptable" de forma que si cambia el color levemente no se asuma como movimiento sino como cambio en la iluminación. Si no cambia puede asumirse que es el fondo. A partir de ahí pueden buscarse los bordes (cadenas de puntos que se han movido) y medir la diferencia.

La forma de implementarlo no la tengo muy clara, no obstante.
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi!|MinGRo Game Engine
Responder Con Cita
  #7  
Antiguo 16-09-2008
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.293
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Bueno, una aproximación para identificar colores podría ser esta. Son una pruebas sencillas, pero básicamente o que hacer es a partir de un color de referencia, intentar identificar el mismo color (con una tolerancia) en la imagen de la bandera (en este caso).

Además intenta identificar aquellos puntos que nos servirán para calcular luego el ángulo que necesitamos.

Aquí y con la imagen que nos has dado funciona bien, el problema es que una foto real con muchos más tonos, mucho más ruido y bastante mas "imprecisa" habrá que "afinar" mucho más el algoritmo, pero supongo que te puede servir de partida.

AÑADO: Me dejé el link.

__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.

Última edición por Neftali [Germán.Estévez] fecha: 16-09-2008 a las 11:53:46.
Responder Con Cita
  #8  
Antiguo 15-09-2008
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.000
Poder: 25
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
Vaya, parece que el milagroso programa que utilizan en la serie de ficción científica CSI-Las Vegas para obtener el número de matrícula del coche que se ve el reflejo del objetivo de la cámara que se refleja en la pupila del sujeto que se refleja en el cristal del comercio fotografiado por casualidad por un testigo que "pasaba por ahí" está más cerca de conseguirse...

Lo siento, no pude reprimirme.

De cualquier modo, suerte con el proyecto.
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi!|MinGRo Game Engine
Responder Con Cita
  #9  
Antiguo 15-09-2008
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.293
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por Ñuño Martínez Ver Mensaje
Lo siento, no pude reprimirme.
Tienes razón.

A mi lo que me encanta es que tienen Bases de datos de todo.

El asesino pierde cualquier cosa y siempre está la Base de Datos de cordones de zapatos, la de tapones de bolígrafo, que si has perdido el tapón del bic, sale allí el año en que lo compraste, la tienda, el color y si lo llevas medio gastado o la de Logotipos de marcas de papel de water; Por si encuantras un trozo de 2 milímetros de papel, lo pasas por el programa y te identifica la marca y si has comido lentejas; Y si te has limpiado con un periódico, a partir de la tinta sale el día que lo has comprado, si has hecho el cruzigrama y la quiniela resuleta de la semana siguiente...
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #10  
Antiguo 16-09-2008
erikmx erikmx is offline
Miembro
 
Registrado: nov 2007
Posts: 40
Poder: 0
erikmx Va por buen camino
Cita:
Empezado por Ñuño Martínez Ver Mensaje
Vaya, parece que el milagroso programa que utilizan en la serie de ficción científica CSI-Las Vegas para obtener el número de matrícula del coche que se ve el reflejo del objetivo de la cámara que se refleja en la pupila del sujeto que se refleja en el cristal del comercio fotografiado por casualidad por un testigo que "pasaba por ahí" está más cerca de conseguirse...

Lo siento, no pude reprimirme.

De cualquier modo, suerte con el proyecto.
Tienen razon mucho de esos programas es fantasia eso ni dudarlo pero de que hay programas que permiten hacer una especie de prediccion con imagenes borrosas y extraer fragmentos super pixeleados puedo decir que si los hay pero como digo no es igual que en CSI

Voy a checar bien el ejemplo que amablemente me mando Neftali y les comento si funciona con todo gusto coloco el proyecto terminado con codigo para quienes quieran ver que algo tan simple se puede complicar jajajaja tanto como queramos un saludote a todos
Responder Con Cita
  #11  
Antiguo 16-09-2008
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.735
Poder: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Un algoritmo que te podría servir:

Si el color es poco comun (cielo azul, bandera negra y marcas amarillas):

vas sumando la cantidad de color que hay en cada linea del color de la marca (pixeles amarillos).
vas sumando la cantidad de color que ha de cada columna del color de la marca.

Tendrás dos vectores.

Código:
linea     1   2   3   4   5   6   7   8   9  10
color     0   0   0   0   2   3   1   0   0   0

columna   1   2   3   4   5   6   7   8   9  10
color     0   0   0   1   3   2   0   0   0   0
Por lo tanto la marca está aproximadamente en la linea 5 y en la columna 4

Si logras 4 puntos, obtendrás un rectángulo y con el podrás calcular el ángulo. Si obtienes una línea, será un viento de la OSTIA!!!

Última edición por duilioisola fecha: 16-09-2008 a las 08:06:55.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Calcular la posicion del cursor sobre imagen adrian76 Gráficos 0 12-11-2007 10:15:35
Determina la amplitud de un ángulo dada su tangente. Roilo Varios 4 02-05-2007 17:54:49
Trazar un vector teniendo un determinado ángulo juanchi Gráficos 3 08-12-2006 23:21:02
Como trazar un arco Luli Gráficos 3 09-06-2005 00:59:06
Boton con imagen y texto en varias líneas Novás Varios 2 08-03-2004 13:12:22


La franja horaria es GMT +2. Ahora son las 02:15:04.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi