Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Tablas planas
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 08-02-2008
Avatar de RebeccaGL
RebeccaGL RebeccaGL is offline
Miembro
 
Registrado: ene 2008
Posts: 199
Poder: 17
RebeccaGL Va por buen camino
Busqueda por IMAGEN

Alguein sabe como puedo hacer una busqueda por imagen, foto.

Ejemplo ingreso determinada foto y que el sistema realize la busqueda como cualquier otro campo y encuentre las concurrencias.

Saludos.
Responder Con Cita
  #2  
Antiguo 08-02-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.289
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
Tal vez deberías guardar un "CRC" de la foro y buscar por el campo de CRC en lugar del de la foto. Similar a como se calcula un CRC o un MD5 de un archivo.
Lo que ahora mismo no se me ocurre es cómo calcular ese CRC/MD5.
__________________
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
  #3  
Antiguo 08-02-2008
Avatar de enecumene
[enecumene] enecumene is offline
Miembro de Oro
 
Registrado: may 2006
Ubicación: Santo Domingo, Rep. Dom.
Posts: 3.040
Poder: 21
enecumene Va por buen camino
Y que tal haciendo comparaciones de imagenes, aqui una solucion dada por seoane:

http://www.clubdelphi.com/foros/show...92&postcount=8

y esta otra por Delphius:

http://www.clubdelphi.com/foros/showthread.php?t=41549

Saludos.
__________________

Mi BLOG - ¡Joder, leanse la guia de estilo!
Las Palabras son enanas, los ejemplos gigantes.

Última edición por enecumene fecha: 08-02-2008 a las 21:16:51.
Responder Con Cita
  #4  
Antiguo 08-02-2008
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
Cita:
Empezado por enecumene Ver Mensaje
Y que tal haciendo comparaciones de imagenes, aqui una solucion dada por seoane:

http://www.clubdelphi.com/foros/show...92&postcount=8

Saludos.
El problema de emplear ese método es que no es viable en una tabla. Sobre todo si debe buscarse entre 1000 o 100000 imágenes.

Ese código explora toda la imagen a lo largo y ancho. Y reiterar el proceso demasiadas veces consume mucho tiempo.

La mejor técnica consiste en lo que dice Neftali, tener un valor clave o identificador a cada imagen. Este identificador puede obtenerse cuando se carga la imagen.

EDITO:
Ese hilo que abri Neftali solo sirve si se emplea DUnit. DUnit es una herramienta CASE que sirve para generar casos de prueba. No otra cosa. Si empleas DUnit sirve para poner a prueba tus módulos, tus funciones y otras cosas.

A los fines prácticos lo que comenta Neftali es la opción recomendada.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]

Última edición por Delphius fecha: 08-02-2008 a las 21:24:39.
Responder Con Cita
  #5  
Antiguo 08-02-2008
Avatar de enecumene
[enecumene] enecumene is offline
Miembro de Oro
 
Registrado: may 2006
Ubicación: Santo Domingo, Rep. Dom.
Posts: 3.040
Poder: 21
enecumene Va por buen camino
Vale, pues sabes entonces de alguna manera como obtener el valor CRC de la imagen, con el perdon del amigo connor si me entrometo, pero ahora este tema me ha llamado la atención, pues he estado pensando para un futuro proyecto donde tenga que ver con la busqueda de imagenes y comparaciones.

Saludos.
__________________

Mi BLOG - ¡Joder, leanse la guia de estilo!
Las Palabras son enanas, los ejemplos gigantes.
Responder Con Cita
  #6  
Antiguo 09-02-2008
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
Hola!

Algunas referencias a tener en cuenta:

CRC
MD5
Hash , Sha, Md5 - Página de seoane

Para mayor detalles buscar entre los hilos de seoane.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #7  
Antiguo 11-02-2008
Avatar de enecumene
[enecumene] enecumene is offline
Miembro de Oro
 
Registrado: may 2006
Ubicación: Santo Domingo, Rep. Dom.
Posts: 3.040
Poder: 21
enecumene Va por buen camino
Cita:
Empezado por Delphius Ver Mensaje
Hola!

Algunas referencias a tener en cuenta:

CRC
MD5
Hash , Sha, Md5 - Página de seoane

Para mayor detalles buscar entre los hilos de seoane.

Saludos,
Vale muy interesantes, gracias amigo Delphius, cuando esté con mas calma le daré una revisada, de nuevo gracias.

Saludos.
__________________

Mi BLOG - ¡Joder, leanse la guia de estilo!
Las Palabras son enanas, los ejemplos gigantes.
Responder Con Cita
  #8  
Antiguo 11-02-2008
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
Hoy me encontraste un poco inspirado y mi mente medio un ejemplo sencillo de lo que podría ser un algoritmo generador de clave.

No tiene mucha seguridad, ni nada por el estilo... Creería que funcionaría siempre y cuando las imagenes sean muy diferentes. Habría que probar.

La idea que tuve es recorrer la imagen y ponderar los valores RGB según su posición.

El algoritmo que concebí es como sigue:

Código Delphi [-]
function TForm1.GenerarClave(Image: TPicture): integer;
var i,j,k: integer; // coordenadas para movernos por la imagen
                    // k para movernos sobre el canal RGB
    sum, sum_rgb: integer; // suma
    RGB: ^TRGB;
    Bmp: TBitmap;
begin
  if not (Image.Graphic is TBitmap)
     then begin
            Bmp:= TBitmap.Create;
            try
              Bmp.Width:= Image.Width;
              Bmp.Height:= Image.Height;
              Bmp.Canvas.Draw(0,0,Image.Graphic);
              Image.Assign(Bmp);
            finally
              Bmp.Free;
            end;
          end;
  Image.Bitmap.PixelFormat := pf24bit;
  sum := 0;
  for j := 0 to Image.Bitmap.Height - 1 do
    begin
      RGB := Image.Bitmap.ScanLine[j];
      sum_rgb := 0;
      for i := 0 to Image.Bitmap.Width - 1 do
        begin
          // calcular suma RGB
          for k := 1 to 3 do
            sum_rgb := sum_rgb + RGB^[k];
          // vamos guardando las sumas ponderadas en funcion del eje x
          sum_rgb := sum_rgb + (sum_rgb * (i + 1));
          inc(RGB);
        end;
      // volvemos a ponderar la suma, ahora en funcion del eje y
      sum := sum + ((sum + sum_rgb) * (j + 1));
    end;
   result := sum;
end;

siendo TRGB la siguiente estructura:

Código Delphi [-]
TRGB = array[1..3] of byte;

Y un ejemplo de su uso:

Código Delphi [-]
ShowMessage(IntToSTr(GenerarClave(Image1.Picture)));

Como notarás, es un algoritmo demasiado simple... y la clave que genere dependerá mucho del tamaño de la imagen. Pues, cuanto más grande sea, más alto será el valor conseguido.
Si tu deseas obtener un algoritmo que genere claves de un determinado tamaño podría refinarse...

Es tan sólo otra alternativa a tener en cuenta si es que los algoritmos y las fuentes que te pasé te resultan un tanto complicadas.

Puede que otros foristas den un aporte alternativo y/o que esta función sea de base para conseguir algo un poco más elaborado y menos complicado que un RCR, MD5, Hash, etc.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #9  
Antiguo 11-02-2008
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.912
Poder: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Pues a menos que quieras una equivalencia EXACTA ninguno de los metodos anteriores te va a servir.

Sin embargo, quieres buscar el contenido BINARIO o quieres simplemente buscar informacion de la imagen? Porque en lo segundo es muy simple: nombre, fecha, atributos, etc.. son cadenas de texto.

Existen algoritmos especiales para buscar imagenes pero ya son otro cuento.
__________________
El malabarista.
Responder Con Cita
  #10  
Antiguo 11-02-2008
Avatar de enecumene
[enecumene] enecumene is offline
Miembro de Oro
 
Registrado: may 2006
Ubicación: Santo Domingo, Rep. Dom.
Posts: 3.040
Poder: 21
enecumene Va por buen camino
Vaya, veo que si estas inspirado hoy, una pregunta, si se calcula la de una imagen varias veces se genera una misma clave?

Saludos.
__________________

Mi BLOG - ¡Joder, leanse la guia de estilo!
Las Palabras son enanas, los ejemplos gigantes.
Responder Con Cita
  #11  
Antiguo 11-02-2008
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.912
Poder: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Una variacion de un bit alterara la clave. Solo serviria para una coincidencia exacta.
__________________
El malabarista.
Responder Con Cita
  #12  
Antiguo 11-02-2008
Avatar de enecumene
[enecumene] enecumene is offline
Miembro de Oro
 
Registrado: may 2006
Ubicación: Santo Domingo, Rep. Dom.
Posts: 3.040
Poder: 21
enecumene Va por buen camino
Cita:
Empezado por mamcx Ver Mensaje
Una variacion de un bit alterara la clave. Solo serviria para una coincidencia exacta.
Gracias mamcx, entonces como hago la comparación exacta de una imagen, o sea como consigo el valor binario de esa imagen?

SAludos.
__________________

Mi BLOG - ¡Joder, leanse la guia de estilo!
Las Palabras son enanas, los ejemplos gigantes.
Responder Con Cita
  #13  
Antiguo 11-02-2008
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
Cita:
Empezado por mamcx Ver Mensaje
Pues a menos que quieras una equivalencia EXACTA ninguno de los metodos anteriores te va a servir.

Sin embargo, quieres buscar el contenido BINARIO o quieres simplemente buscar informacion de la imagen? Porque en lo segundo es muy simple: nombre, fecha, atributos, etc.. son cadenas de texto.

Existen algoritmos especiales para buscar imagenes pero ya son otro cuento.
¿A que te refieres con que no va a servir?

Haz dicho algo clave, tal vez con sólo fijarse en los atributos basta. Pero si es que realmente se desea tener un identificador único para cada imagen, hay que tener un buen algoritmo. Porque los atributos podrían cambiarse, mientras que la imagen puede ser la misma (o bastante similar)

Cita:
Empezado por enecumene Ver Mensaje
Vaya, veo que si estas inspirado hoy, una pregunta, si se calcula la de una imagen varias veces se genera una misma clave?

Saludos.
El algoritmo está pensado para devolver siempre la misma clave si es que se suministra la misma imgen. No posee aleatoriedad. El valor de la clave depende del contenido de la imagen, por lo que si se pasa A, se obtendrá siempre la clave A.

Como dije, necesitaría análisis, pues por más que otra imagen sea distinta no se garantiza que se obtendrá un valor distinto. Es por ello que para impedir ciertas similitudes, pondero las sumas. Pero no esto no es suficiente. Por ejemplo, si la suma da 300 y la ponderación es 60, es lo mismo que si la suma es 60 y la ponderación sea 300. ¿Se entiende?

No es un algoritmo demasiado fuerte. Pero puede que sea de utilidad para comenzar.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #14  
Antiguo 11-02-2008
Avatar de enecumene
[enecumene] enecumene is offline
Miembro de Oro
 
Registrado: may 2006
Ubicación: Santo Domingo, Rep. Dom.
Posts: 3.040
Poder: 21
enecumene Va por buen camino
Vale, se entiende perfectamente, solo me queda sacar un tiempo para ver si lo puedo aplicar en el proyecto. De nuevo gracias amigo Delphius.

Saludos
__________________

Mi BLOG - ¡Joder, leanse la guia de estilo!
Las Palabras son enanas, los ejemplos gigantes.
Responder Con Cita
  #15  
Antiguo 12-02-2008
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.912
Poder: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Si estas buscando una coincidencia exacta, metele un hash MD5 o un SHA.

Si quieres una excelente libreria de todo estos temas:

http://sourceforge.net/projects/openstrsecii/

Es la version open source de http://www.streamsec.com/products_strsectools.asp y me consta que el autor es un genio de estos temas.
__________________
El malabarista.
Responder Con Cita
  #16  
Antiguo 12-02-2008
Avatar de Chris
[Chris] Chris is offline
Miembro Premium
 
Registrado: abr 2007
Ubicación: Jinotepe, Nicaragua
Posts: 1.678
Poder: 19
Chris Va por buen camino
Este tema está muy interesante. Sin embargo, el compañero connor no ha especificado si lo que intenta hacer es buscar una imagen "dentro de la DB", en otras palabras, buscar una existencia exacta de la imagen, que para esto ya todos los compañeros han posteado códigos muy útiles.

Por otro lado, la intención de connor puede ser buscar imágenes similares, el su post original, menciona "foto" esto me hace suponer que andará buscando algún tipo de reconocimiento facial o algo por el estilo. Si es este el caso, de solo imaginarlo, es algo demasiado difícil y te recomenzaría que paralelamente consultes a google a ver que ayuda puedas encontrar.

Cualquiera que sea tu propósito, te recomiendo que apliques la sugerencia de neftalí.

Saludos.
__________________
Perfil Github - @chrramirez - Delphi Blog - Blog Web
Responder Con Cita
  #17  
Antiguo 12-02-2008
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
Cita:
Empezado por D&W Ver Mensaje
Este tema está muy interesante. Sin embargo, el compañero connor no ha especificado si lo que intenta hacer es buscar una imagen "dentro de la DB", en otras palabras, buscar una existencia exacta de la imagen, que para esto ya todos los compañeros han posteado códigos muy útiles.

Por otro lado, la intención de connor puede ser buscar imágenes similares, el su post original, menciona "foto" esto me hace suponer que andará buscando algún tipo de reconocimiento facial o algo por el estilo. Si es este el caso, de solo imaginarlo, es algo demasiado difícil y te recomenzaría que paralelamente consultes a google a ver que ayuda puedas encontrar.

Cualquiera que sea tu propósito, te recomiendo que apliques la sugerencia de neftalí.

Saludos.
Es cierto, lo que dice connor en esas pocas líneas parece ser que se desea hacer algo como reconocimiento.
Si ese es el caso, que se prepare porque el problema es complejo. Si no sabré yo.

No es fácil sentarse y comprender el tema. Pues en realidad lo que se desea y se guarda en estos sistemas es una representación numérica de las imagenes. Para ser exacto un numerito de obedece a ciertas propiedades del algebra matricial (que es el corazón y la base donde descansa todo el sistema).

Palabra clave en estos asuntos: EigenFace, FisherFace. Y si, lamentablemente debe consultar en Google (o su buscador favorito) y preparse con el inglés porque en castellano hay poco y nada. Y me animo a decir que en incluso en inglés no hay demasiado que urgar.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #18  
Antiguo 12-02-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.289
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 D&W Ver Mensaje
...el compañero connor no ha especificado si lo que intenta hacer es buscar una imagen "dentro de la DB", en otras palabras, buscar una existencia exacta de la imagen


Cita:
Empezado por enecumene Ver Mensaje
...entonces como hago la comparación exacta de una imagen..
__________________
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
  #19  
Antiguo 14-02-2008
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
¿connor no va a aparecer para dar su opinión?
No veo interés de su parte con el hilo.

Si bien ya muchos estamos coincidiendo con el hecho de que usar SHA, Hash, MD5 o alguno de esos son útiles en estos casos, seria oportuno que connor volviera y ofrezca su punto de vista del asunto.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #20  
Antiguo 19-02-2008
Avatar de RebeccaGL
RebeccaGL RebeccaGL is offline
Miembro
 
Registrado: ene 2008
Posts: 199
Poder: 17
RebeccaGL Va por buen camino
Gracias por las aportaciones son muy interesantes. Si lo que deseo es hacer busquedas en un Table.DB

Por ejemplo tengo una tabla con campos como: codigo, nombres imagen, la idea es hacer busquedas por el campo imagen tendria tambien que indexar por el campo imagen, digamos ingreso una imagen cargandola del disco duro o ingresandola por un scanner. presionar un boton y que el sistema busque las coherencias asi como se hace con Table1.FindKey ó Table1.Nearest, pero en este caso lo haga con la imagen, con busquedas exactas y parciales, se podra hacer eso?.

Saludos

Última edición por RebeccaGL fecha: 19-02-2008 a las 14:37:35.
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
Búsqueda sin imagen de verificación kuan-yiu La Taberna 8 13-11-2007 18:22:10
Busqueda.... TKW04 OOP 3 29-08-2007 20:02:56
busqueda sql Dark Aeris Firebird e Interbase 10 06-06-2006 23:05:20


La franja horaria es GMT +2. Ahora son las 15:22: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