Ver Mensaje Individual
  #12  
Antiguo 28-09-2015
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Reputación: 25
Delphius Va camino a la fama
Cita:
Empezado por Neftali Ver Mensaje
Una pregunta que tal vez parezca tonta...
¿Un único pixel diferente en las imágenes, debería devolver que son diferentes? O dicho de otra manera, ¿La comparación debe omitir pequeños cambios?

Si la respuesta es que deben ser "exactas", creo que comparar pixel a pixel te será más lento que calcular un CRC o HASH del fichero y compararlos.
Si la respuesta es que no (por ejemplo en aplicaciones de detección de movimiento) los métodos de comparación siguen otras técnicas un poco diferentes.
Si se trata de una comparación exacta leer pixel a pixel es lento, por ello para acelerar el proceso se puede hacer mediante Scanline() y aprovechar CompareMem() y esto requiere explorar solo fila a fila. En el hilo de StackOverflow se da también esta propuesta y me parece bastante ingeniosa.
Calcular Hash o MD5 por ejemplo requiere de muchas más operaciones. Son operaciones consideradas "duras". Si ya de por si para calcular el hash o md5 se necesita leer el contenido binario, directamente que se lea la imagen y se haga el trabajo de comparar. Creo que no vale la pena emplear hash u otros, es más directo y menos lioso realizar una comparación.


Si la comparación permite ciertos cambios o aproximación entre ambas, o como en el caso de detección de movimientos, allí las cosas si se complican y hay que optar por otras soluciones como dices. El componente que ofrece la página que a puesto MAXIMUM creo que hace estos tipos de cosas.
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita