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 13-06-2007
soydiego soydiego is offline
Registrado
 
Registrado: jun 2007
Posts: 2
Poder: 0
soydiego Va por buen camino
Reconocimiento sencillo de imagenes

Tengo un problemilla, llevo un par de días dandole vueltas y no se me ocurre solución ni consigo encontrar algo parecido, os cuento...

Tengo una serie de imagenes, tamaño 50x50, son un número limitado de posibilidades, tan solo 10 diferentes. Y necesito identificar cada una de las imagenes para distinguirlas del resto. Es decir, si por ejemplo en la imagen sale una estrella poder poner en un TLabel, 'estrella'.

En un principio recorría todos los pixeles con un sencillo bucle comparando pixel a pixel, pero la fuente de las imagenes no es del todo fija y se ve que varía algo minimo en la compresión y no me vale este método.

Intenté también calcular el numero de pixeles identicos que tenia, pero al tener todas un color de fondo uniforme, no da buenos resultados.

Y ahora estoy atascado... lo único que se me ocurre es buscar un pequeño trozo de cada imagen, suficientemente pequeño para identificar inequivocamente a cada imagen y lo suficientemente grande para que soporte los errores de compresión, aunque visto el camino de bloqueo que llevo, seguro que tampoco funciona.

Cualquier idea iluminadora será bienvenida y agradecida
Responder Con Cita
  #2  
Antiguo 13-06-2007
tefots tefots is offline
Miembro
 
Registrado: feb 2005
Posts: 108
Poder: 20
tefots Va por buen camino
Lo que quieres hacer es algo complejo.

Para estas cosas , se usan redes neuronales , las cuales se entrenan para reconocer una serie de patrones.
Una red neuronal es una estructura compleja (una especie de arbol) , la cual en funcion de los datos que se le han introducido (entrenamiento) , te dará un resultado y % de cuanto se parece lo que buscas a ese resultado.

pero eso no es todo , para que una red neuronal sea efectiva , has de entrenarla con los patrones preparados (matrices de pixels , etc) , y no puedes pasarle la imagen tal cual y que se apañe.
Primero mediante distintas operaciones en la imagen (pasar a B/N , hacer un trseshold, buscar ciertas formas , buscar zonas conexas , ,etc) debes localizar donde se encuentra el objeto o los posibles objetos a reconocer , (zonas candidatas) , una vez tengas las zonas candidatas , tienes que basicamente reducir ( o interpolar) el tamaño esos posibles objetos , para que al pasarselo a la red neuronal , sea algo que la red neuronal pueda entender.

mi consejo es que busques alguna libreria de reconocimiento y tratamiento de imagen y que empieces por ahi. yo las que conozco son de pago , http://www.matrox.com/imaging/products/software.cfm , o estas ultimas que son las que conozco mas y son muy sencillas de usar http://www.euresys.com/Products/soft...eLibraries.asp )

tambien puedes hacerlo en plan artesanal , simplemente comparando % de pixels.
es decir , si las imagenes son siempre de 50x50 , y la forma o objeto que desas buscar siempre es del mismo tamaño , lo que debes hacer es pasarla todas a blanco y negro y las guardas a modo de patron a buscar. luego cuando quieras reconocer una imagen , la pasas a b/n (esto es facil con bitmaps) y buscas en los patrones que tienes almacenados a cual se parece mas , calculando simplemente el % de pixels iguales. la que tenga > % es la mas parecida.


saludos

Última edición por tefots fecha: 13-06-2007 a las 11:54:22.
Responder Con Cita
  #3  
Antiguo 13-06-2007
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
Si te decides a hacerlo de forma "artesanal" puede que necesites pasar algún filtro a la imagen antes de trabajar con ella. Por ejemplo, un filtro "sobel" para detectar los bordes, eliminaría el fondo de la imagen y haría mas fácil la comparación.

Aquí puedes encontrar algunos filtros:
http://delphi.jmrds.com/?q=node/23
Responder Con Cita
  #4  
Antiguo 13-06-2007
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Como alternativa a las redes neuronales, existen otros métodos. Pero estos son relativamente complejos de llevar a cabo y dependerá también de las formas básicas.

¿De que formas estaríamos hablando? ¿Que tanto difieren cada imágen de otra?¿Todas son estrellas?

Mira, hay una técnica llamada EigenFace. Se emplea para el reconocimiento de caras, pero puede ser extrapolada para cualquier forma ya que no se trata de una técnica local (es decir que analiza la imagen como un todo y no por partes). Pero claro, funcionará siempre y cuando todas las formas presentes en cada imagen tengan un patrón común (por ejemplo: todas las caras siguen una misma forma: dos ojos, una boca, una nariz, los ojos arriba, las boca abajo. Y la silueta tiende a ser un círculo).

La técnica lo que trata de conseguir es una representación media de todas las imagenes. Luego al ingresar la imagen a analizar se "transforma" a una representación compacta (vector). Este vector se compara con la representación media (todo mediante fórmulas matemáticas) buscando maximizar un valor y que no supere un umbral de decisión.
Entonces, se asocia la identidad (se ha reconocido) a la forma a aquella imagen que ha conseguido maximizar dicho valor (si es que no se superó el umbral)

Esto suena bonito y muy matemático, pero no todo lo pintan de rosas: Esta técnica puede fallar arrojando falsos positivos (se dio por reconocido una identidad cuando en realidad no lo era) y requiere, al igual que las redes neuronales, de un conjunto de entrenamiento.

Quiero hacerte saber que no es sencillo el reconocimiento de formas mediante técnicas asistidas por computadoras. Consumen recursos y la matemática que emplean no son cosas cotidianas: transformaciones espaciales, calculo de autovectores y autovalores, operaciones sobre matrices...

Se que hay trabajos en internet sobre este campo. Busca en google que hay mucho que ver. Debes informarte bien sobre esto si quieres hacerlo.

Lo que expuso seoane es lo primero que deberás realizar. Sobel es una técnica casi obligada a emplear. La información no se encuentra almacenada en el color sino en la forma y lo que hace Sobel (y otros filtros de estos tipos) es eliminar todo el relleno y dejar los bordes. Como bien sabemos los bordes guardan la info de cada forma. Esto reduce mucho los tiempos de proceso, además permite reducir la transformación del espacio vectorial.

Como te dije... informate mejor sobre estas técnicas.
Me encantaría poder pasarte unos links, pero todo lo que tengo es dirijido hacia la identificación de caras. Tiene sus diferencias, con respecto a la identificación de otros objetos.

Espero haberte aportado algo.
Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #5  
Antiguo 13-06-2007
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.911
Poder: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Ahora, y el principio?

De donde vienen las imagenes, porque hay que reconocerlas? Es para algo profesional o de la universidad?
__________________
El malabarista.
Responder Con Cita
  #6  
Antiguo 14-06-2007
soydiego soydiego is offline
Registrado
 
Registrado: jun 2007
Posts: 2
Poder: 0
soydiego Va por buen camino
vaya! se me borró el mensaje que habí escrito... espero no olvidarme de nada...

Gracias a todos por la ayuda, ya voy un poco más encaminado, he estado mirando los filtros que me dijo seosane y seguramente aplicando el sobel pueda identificar (por fin) las imágenes al menos con un grado de fiabilidad bastante superior al que venia teniendo ahora (casi nulo ). Creo que las imágenes son lo suficientemente distintas como para que me sea factible, la mayoría de las imágenes son numeros, formas sencillas y algunas letras. Hay algunas iguales con distintos colores, pero ya una vez identificada la forma, no hay problema con el color.

Miré un poco por encima el tema de las redes neuronales y el eigenface, parece mentira que no se me ocurriera usar redes neuronales con lo que me tuve que pelear en la universidad con los reconocedores de patrones en el snns y matlab, seguramente tenga algún código o se lo pueda pedir a algún compañero, aunque también creo que la interacción snns/matlab - delphi puede ser bastante compleja de llevar a cabo.

Las librerías de pago que me comentaba tefots, en esas webs no he visto precios, pero en otras los precios son demasiado elevados para el uso que le voy a dar... es un pequeño proyecto personal para facilitarme un poco la labor en el trabajo, aunque no me la facilitará tanto como para pagar los 900$ que he visto en alguna web.

Y bueno... como ya he dicho es un programita que me ayudará un poco en mi trabajo, pero no es ningún encargo ni nada. Las imágenes proceden de un flash en la intranet de la empresa.

Creo que no me dejo nada... muchas gracias de nuevo
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
ayudita please, sencillo Otei OOP 3 18-11-2005 22:25:10
Reconocimiento de imagenes pacofbill Gráficos 1 22-03-2005 19:21:03
reconocimiento de imagenes the darkness Gráficos 10 07-05-2004 02:22:38
Un link a firebird 1.5 (sencillo) Jorge Taveras Firebird e Interbase 1 28-04-2004 22:08:57
Reporte sencillo en Excel....please seb@ Servers 7 24-03-2004 21:46:51


La franja horaria es GMT +2. Ahora son las 19:31:50.


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