Ir al contenido


Foto

Comparar dos imagenes


  • Por favor identifícate para responder
17 respuestas en este tema

#1 Bertifox

Bertifox

    Advanced Member

  • Miembros
  • PipPipPip
  • 108 mensajes
  • LocationLa Serena-Chile

Escrito 08 abril 2014 - 04:20

Hola colegas, necesito comparar dos imagenes del tipo jpg o bmp, la idea es poder determinar que porcentaje es la diferencia de una respecto de la otra imagen, he probado algunas rutinas pero siempre me arroja que son diferentes, si es posible que no sea comparacion pixel a pixel para optimizar el tiempo de respuesta.

Cualquier información, será muy valorada.

Saludos
  • 0

#2 Delphius

Delphius

    Advanced Member

  • Moderador
  • PipPipPip
  • 6.295 mensajes
  • LocationArgentina

Escrito 08 abril 2014 - 04:28

Busca en el foro sobres ScanLine. Es un método diseñado para leer de manera óptima una fila de pixels por vez. Luego debes moverte dentro de esta linea para posicionarte en cada “pixel“.

Si no recuerdo mal hay algunos ejemplos en el foro

Saludos,
  • 0

#3 genriquez

genriquez

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 536 mensajes
  • LocationCali, Colombia

Escrito 08 abril 2014 - 04:42

Revisa las librerias OpenCV, allí encuentras rutinas que te podrían ayudar en muchas tareas con gráficos, incluso a comparar los niveles de cada color en ambas imágenes para determinar si son similares (No iguales) aún con diferencias de tamaños y sin concordancia pixel x pixel.

(b) Si sigo así, voy a alcanzar a Egostar en los 10K (b)  aún tengo esperanzas.  (b)
  • 0

#4 escafandra

escafandra

    Advanced Member

  • Moderadores
  • PipPipPip
  • 3.999 mensajes
  • LocationMadrid - España

Escrito 08 abril 2014 - 04:50

La comparación pixel a pixel a bajo nivel es rápida pero tiene el inconveniente de que las imágenes deben ser idénticas. Los formatos como jpg presentan imágenes similares pero no idénticas pixel a pixel, por lo que lo recomendable es usar librerías especializadas como te indica genriquez

Saludos.
  • 0

#5 cram

cram

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 828 mensajes
  • LocationMisiones, Argentina

Escrito 08 abril 2014 - 07:47

Programas como ACDSee buscan igualdad de imágenes, pero la similitud es otra cosa.
Es un terreno difícil, a menos que te gusten mucho las matemáticas y sepas llevarlas a la programación.
Quizá te sirva leer el documento que se puede descargar de: http://sedici.unlp.e...dle/10915/23330


  • 0

#6 Bertifox

Bertifox

    Advanced Member

  • Miembros
  • PipPipPip
  • 108 mensajes
  • LocationLa Serena-Chile

Escrito 08 abril 2014 - 08:17

Gracias colegas, con esta informaciòn tengo para buscar lo que necesito. la verdad de o que quiero lograr, es poner una camara de vigilancia apuntada a un sector de mi casa y capturar fotos cada un intervalo de tiempo (ej.5 seg.) y comparar ambas fotos, en caso de haber diferencias notables el sistema debe enviar la foto a un correo electronico.

En cuando tenga buenas noticias, publicaré los resultados.


  • 0

#7 genriquez

genriquez

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 536 mensajes
  • LocationCali, Colombia

Escrito 09 abril 2014 - 08:00

Esa funcionalidad de vigilancia ya lo tienen los programas de manejo de camaras.  si quieres aprender como se hace está bien, pero si lo que quieres es utilizarlo es mucho más fácil.
  • 0

#8 Delphius

Delphius

    Advanced Member

  • Moderador
  • PipPipPip
  • 6.295 mensajes
  • LocationArgentina

Escrito 09 abril 2014 - 08:05

Si la intención es la elaborar tu propio sistema de vigilancia vete investigando sobre los métodos three step y Conjugado Modificado.
Ambos son unos métodos que se han elaborada para la detección de movimiento.

Lo mejor sería que utilices algo ya hecho... te ahorrarás unos cuantos dolores de cabeza y en aspirinas.

Saludos,
  • 0

#9 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.259 mensajes
  • LocationMéxico

Escrito 09 abril 2014 - 08:53

[ot]A mi como que eso de camaras de vigilancia, me dan miedo, no vaya a capturar algunas ánimas en mi casa y ya no voy a querer entrar, o por otro lado, que tal si se aplica ese dicho de "no busques lo que no quieres encontrar"  *-) [/ot]

:D :D :D

Saludos
  • 0

#10 escafandra

escafandra

    Advanced Member

  • Moderadores
  • PipPipPip
  • 3.999 mensajes
  • LocationMadrid - España

Escrito 09 abril 2014 - 10:12

Quizás este hilo te aporte ideas.

Saludos.


  • 0

#11 Bertifox

Bertifox

    Advanced Member

  • Miembros
  • PipPipPip
  • 108 mensajes
  • LocationLa Serena-Chile

Escrito 09 abril 2014 - 08:42

Gracias  Delphius, escafandra, egostar & company, de verdad es muy grato participar de esta comunidad Latinoamenricana tan activa, no se si Uds, fueron de esas personas que de muy pequeños desarmaban los jugetes para saber que llevan dentro, en mi caso yo mismo me hacia mis juguetes, autitos de maderas y esas cosas. Como pasa el tiempo, estube revisando el link indicado por escafandra, y me parece genial a partir de dos fotos obtener solo las diferencias, me imagino que con el resultado puedo calcular el indice de deferencia entre ambas imagenes, probaré las funciones propuestas, las cuales a primera vista me parecen geniales. Gracias a todos...
  • 0

#12 Bertifox

Bertifox

    Advanced Member

  • Miembros
  • PipPipPip
  • 108 mensajes
  • LocationLa Serena-Chile

Escrito 10 abril 2014 - 04:33

escalafranda, te agradezco el link para restar las dos imagenes, me sirvio mucho para obtener las diferencias de dos .bmp, cree dos bmp iguales con Paint, a uno de aquellos le agregue una estrella en el centro y al hacer la resta me arroja la diferencia con una exactitud extraorinaria, el problema se presenta cuando comparo dos fotos obtenidas de la webcam a intervalos de 4 segundos en este caso la funcion no anda como lo esperaba, me da una diferencia muy alta a pesar que la camara la apunto a un sector donde no hay movimiento. La solucion que se me ocurre es convertir las fotos a comprar en escala de grisis. No se si a ti se te ocurre alguna solucion mejorada.

Saludos.
  • 0

#13 escafandra

escafandra

    Advanced Member

  • Moderadores
  • PipPipPip
  • 3.999 mensajes
  • LocationMadrid - España

Escrito 10 abril 2014 - 04:40

El problema es que las imágenes obtenidas por la cámara son similares, no idénticas. Pequeñas variaciones de luminosidad dan imágenes diferentes. La resta que ves en ese enlace se realiza de imágenes iguales pixel a pixel. Es por este motivo que te sugería el uso de librerías especializadas.

El paso a escala de grises te limita el número de colores pero seguirás teniendo tonalidades y luminosidades distintas para pixeles similares.


Saludos.
  • 0

#14 Delphius

Delphius

    Advanced Member

  • Moderador
  • PipPipPip
  • 6.295 mensajes
  • LocationArgentina

Escrito 10 abril 2014 - 07:31

El tema es no solo por iluminación. También se debe al propio ruido de la cámara.
Se puede mejorar un poco las condiciones aplicando algunos filtros y luego proceder a obtener la diferencia.

Saludos,

  • 0

#15 escafandra

escafandra

    Advanced Member

  • Moderadores
  • PipPipPip
  • 3.999 mensajes
  • LocationMadrid - España

Escrito 11 abril 2014 - 03:07

Cierto, delphius entre las dos imágenes tomadas habrá multitud de diferencias debidas a multitud de factores (del entorno, de la cámara y de los algoritmos de compresión) que harán que aunque nuestros ojos vean las similitudes, que no igualdades, las rutinas de sustracción no sean fáciles de implementar.

Saludos.
  • 0

#16 Bertifox

Bertifox

    Advanced Member

  • Miembros
  • PipPipPip
  • 108 mensajes
  • LocationLa Serena-Chile

Escrito 11 abril 2014 - 08:47

Delphius, me parece que la aplicaión de algún efecto sobre las imagenes a comparar podría ser la solución, he estado buscando como simplificar las imagenes, en corel me parece que se llama efecto trace, ando buscando algun componente grafico para obtener estos efectos.

Saludos
  • 0

#17 Delphius

Delphius

    Advanced Member

  • Moderador
  • PipPipPip
  • 6.295 mensajes
  • LocationArgentina

Escrito 11 abril 2014 - 09:38

Te noto muy perdido, y eso no es bueno si no tienes algo estudiado sobre el tema de tratamiento de imágenes.
Desconozco el efecto trace de Corel pero en cuanto al ruido de las cámaras (que suele ser poco o muchísimo dependiendo de la calidad de la cámara) se corrige (parcialmente) con filtros como desenfoque, convolución y/o mediana dependiendo del tipo y densidad (cantidad) del ruido presente.
También como ha señalado escafandra, hay otras cuestiones; la iluminación es una de esas. Puede jugar un papel importante si el lugar en donde va a estar la cámara es al aire libre y en el interior si no se controla adecuadamente las fuentes de iluminación y reflejos dados por el fondo.
Existen filtros que también sirven para corregir estos efectos, aunque debo mencionar que todos los filtros tienen su límite por lo cual no esperes que estos te solucionen la vida.

Por último, como he comentado unos posts antes, si la idea es obtener la diferencia como objetivo para detectar movimiento, hay técnicas diseñadas para eso. He mencionado dos técnicas, que si bien puede que no sean de las última generación te permitirán ir a fuentes más especializadas ya que éstas son la piedra angular por donde ha nacido el estudio.

El utilizar componentes puede resultar, o no. Llamo a una advertencia: cuidado con la componentitis; no todo pasa por instalae componentes asi a lo loco. Ni que decir.... descreo que exista un componente que te haga todo el trabajo. Lo que puede llevar a que debas instalar muchas cosas para lograr algo.
Estoy seguro que debe haber frameworks (que no componente) ya especificamente diseñado; incluso algunas cámaras (ni que hablar de las específicamente diseñadas para seguridad) que ya cuentan con software dedicado para lo que pretendes. Con investigar sobre si dichos Software cuentan con alguna API con la cual comunicarse no se pierde nada.

A lo que apunto primero es que reconozcas que estás ante un chaleco de 11 balas y no te creas que podrás así de fácil salir airoso. Viendo tu historial de temas abiertos en el foro, tengo la impresión de que estás frente algo que podría superarte.
No digo que no puedas hacerlo, pero de que te va a costar seguro... tarde o temprano (más tarde que temprano) lograrás darle vuelta. Pero no ahora, no como estás.

Saludos,
  • 0

#18 Bertifox

Bertifox

    Advanced Member

  • Miembros
  • PipPipPip
  • 108 mensajes
  • LocationLa Serena-Chile

Escrito 11 abril 2014 - 10:21

Delphius, talvez tengas razón, voy a optar por comprar una camara IP de precio asequible, que tiene incorporado todo lo que necesito, tema resuelto y gracias por los aportes.
  • 0