FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
Detección de movimiento
Hola a todos,
En primer lugar, presentarme como nuevo en la plaza felicitándoos por este magnífico foro. Paso a contaros mis cuitas... se trata de un proyecto que pretende detectar el movimento en una serie de imágenes, que en origen son TJpegImage pero que imagino debo pasar a TBitMap para poder tratar. La comparación de imágenes no tiene más misterio, el problema es que cuando hablamos de "movimiento" deberíamos decir "movimiento significativo", introduciendo conceptos como "sensibilidad", "iluminación", "tolerancia", etc... Que en una pareja de imágenes de 640x480 haya dos píxels distintos no significa que se haya producido el movimiento de algún objeto. Como tampoco que haya dos píxeles distintos en cada fila del stream. El tema probablemente no sea tanto de programación como de análisis, las preguntas concretas serían... ¿por dónde empezar a hincarle el diente? ¿existen cosas hechas, alguna librería de funciones, documentos con técnicas que aborden/resuelvan esta problemática? Por otro lado, cuando hago pruebas comparando imágenes, veo que el mayor consumo de procesador proviene no ya del CompareMem sino del TBitMap.Assign para tratar el JPEG original... ¿existe alguna forma de acceder al bitmap equivalente en el objeto TJpegImage, a fin de evitar la invocación del Assign? Gracias de antemano. |
#2
|
||||
|
||||
Hola Peregrino,
Mu seguramente ya exista alguna biblioteca, o componente que realice lo que buscas. Yo desconozco si existe alguno. Si estás interesado, puedo decirte que yo mientras investigaba temas para mi tesis me dí un tiempo para investigar un poquito de esto. En un libro que encontré en la Facultad (MARCOS FAÚNDEZ ZANUY. 2000. Tratamiento digital de voz e imagen y aplicación a la multimedia . Barcelona (España). Ed. Marcombo) se explica brevemente un poco de teoría. Si buscas por los términos: Estamación de movimiento: * Método three step * Método Conjugado Modificado Predicción: * Posición de escritura * Posición de lectura No tengo a mano todo lo que encontré sobre el tema... creería que tu ya haz estado investigando sobre el tema. Con respecto a tu segunda pregunta... pues la verdad no te sabría decir si existirá. Es muy probable que algún componente de terceros aplique algo como lo que pides. Recomendaría que busques en Torry.Net No se si te abré ayudado en algo. Saludos, |
#3
|
||||
|
||||
De casualidad te estas basando o habias visto esto...?
http://www.ajpdsoft.com/modules.php?...rticle&sid=263 Es interezante aunque no se si te pueda ayudar de algo... Saludos
__________________
Web |
#4
|
|||
|
|||
Muchísimas gracias a ambos, es exactamente lo que necesitaba: un pointer a la teoría y otro a alguna solución ya construída.
|
#5
|
||||
|
||||
Hola Peregrino.
Acabo de ver el ejemplo que muestra en el enlace. Se trata de un algoritmo sencillo, y no es demasiado eficiente (por lo de pixels[]) Lo que hace es leer pixel por pixel y acumulando la "diferencia" entre cada pixel. Y con ello calcula un margen de error. Para ir comprendiendo algunas cosas te va a sentar bien, pero para cosas más elaboradas, esto te va a resultar chico. La teoría que yo te expongo está más sustentada por algunos conceptos más matemáticos que estos. Saludos, |
#6
|
||||
|
||||
Con justa razon Delphius... por ejemplo: una webcam como la usada en el ejemplo que cito, no te proporciona una verdadera calidad de imagen; por lo que el algoritmo podria ser "inutil", para detectar diferencias de luz y sombra... ademas como de los movimientos "rapidos"; en este caso el algoritmo deberia ser una base y no la solucion terminada para conseguir el resultado esperado y confiable... obviamente con una camara de vigilancia profesional
__________________
Web |
#7
|
||||
|
||||
Hola Delphius, se me ocurre algo que puede ser una tontería, aplicar sobre las dos imágenes un filtro sobel con un valor de umbral bastante alto (para detectar los bordes) y luego compararlos. Si los bordes han cambiado es que existe movimiento.
En cualquier caso, la comparación la haría utilizando el Scanline y no la propiedad Pixels, la diferencia en rendimiento puede ser grandisima. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Deteccion de Dispositivos USB | marceloalegre | Varios | 9 | 22-09-2016 13:12:55 |
Detección de una unidad removible | Pascalizado | API de Windows | 13 | 22-05-2011 18:54:51 |
Gradiante de Sobel. Detección de contornos | Delphius | Gráficos | 15 | 04-03-2007 04:06:32 |
Detección de navegador WEB | aerosB4 | Internet | 5 | 08-03-2004 17:27:10 |
Detección de Carga de un programa | craven | Varios | 3 | 24-11-2003 16:10:46 |
|