Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 11-02-2008
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 28
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
  #2  
Antiguo 11-02-2008
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.941
Poder: 27
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
  #3  
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: 24
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
  #4  
Antiguo 11-02-2008
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.941
Poder: 27
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
  #5  
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: 24
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
  #6  
Antiguo 11-02-2008
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 28
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
  #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: 24
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
  #8  
Antiguo 12-02-2008
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.941
Poder: 27
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
  #9  
Antiguo 12-02-2008
Avatar de Chris
[Chris] Chris is offline
Miembro Premium
 
Registrado: abr 2007
Ubicación: Jinotepe, Nicaragua
Posts: 1.678
Poder: 21
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
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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 09:45:51.


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