Pregunta

hay dos imágenes

alt text http://bbs.shoucangshidai.com/attachments/month_1001/1001211535bd7a644e95187acd.jpg texto alternativo http://bbs.shoucangshidai.com/attachments/month_1001/10012115357cfe13c148d3d8da.jpg  uno es la imagen de fondo es otra foto de una persona con el mismo fondo, del mismo tamaño, lo que quiero hacer es quitar el fondo de la segunda imagen y destilar el perfil de la persona. el método común es restar primera imagen de la segunda, pero mi problema es si el color del desgaste de la persona es similar al del fondo. el resultado de reste es horrible. no puedo conseguir el perfil de las personas enteras. que tienen una buena idea para eliminar el fondo dame un consejo. gracias de antemano.

¿Fue útil?

Solución

Si usted tiene una estimación buena de la imagen de fondo, restarlo de la imagen con la persona es un buen primer paso. Pero es sólo el primer paso. Después de eso, hay que segmentar la imagen, es decir, deberá crear una partición de la imagen en píxeles "primer plano" "fondo" y, con limitaciones como las siguientes:

  1. en las áreas de primer plano, la diferencia media de la imagen de fondo debe ser alto
  2. en las zonas de fondo, la diferencia media de la imagen de fondo debe ser baja
  3. las áreas debe ser suave. Esquema longitud y curvatura deben ser mínimos.
  4. las fronteras de las áreas debe tener un alto contraste en la imagen de origen

Si usted está inclinado matemáticamente, estas restricciones se puede modelar perfectamente con el Mumford-Shah funcional. Ver aquí para obtener más información.

Sin embargo, es probable que pueda adaptarse a otros algoritmos de segmentación para el problema.

Si desea una rápida y sencilla (pero no perfecta) versión, puede probar lo siguiente:

  • restar las dos imágenes
  • encontrar el más grande "blob" consecutivo de píxeles con una diferencia mayor de fondo plano que algún umbral. Esta es la primera estimación aproximada de la "zona de persona" la imagen en primer plano, pero la segmentación no cumple con los criterios 3 y 4 anteriores.
  • Para el contorno de la mancha más grande ( EDIT: Tenga en cuenta que usted no tiene que empezar por el contorno También puede comenzar con un polígono más grande, ya que los pasos se reducirá automáticamente a. la posición óptima.)
  • Ahora pasa por cada punto en el esquema y suavizar el contorno. es decir, para cada punto de encontrar el punto que minimiza la fórmula: c1 * L - c2 * G, donde L es la longitud del polígono contorno si el punto se mueve aquí y G es el gradiente en la ubicación del punto se trasladó a, c1 / c2 son constantes para controlar el proceso. Mover el punto a esa posición. Esto tiene el efecto de suavizar el polígono de contorno en las zonas de bajo gradiente de la imagen de origen, mientras se mantiene atado a altos gradientes de la imagen de origen (es decir, los bordes visibles de la persona). Puede probar diferentes expresiones para L y G, por ejemplo, L podría tomar la longitud y curvatura en cuenta, y G también podría tomar el gradiente en el fondo y se resta imágenes en cuenta.
  • que probablemente tendrá que volver a normalizar el polígono esquema, es decir, asegurarse de que los puntos sobre el contorno están espaciados regularmente. O eso, o asegurarse de que las distancias entre los puntos de estancia en toda regla en el paso anterior. ( "Geodésicas serpientes")
  • repetir los dos últimos pasos hasta la convergencia

Ahora tiene un polígono esquema que toca la frontera persona fondo visible y continua sin problemas donde la frontera no es visible o tiene poco contraste. Mirar hacia arriba "serpientes" ( por ejemplo aquí ) para obtener más información.

Otros consejos

Filtro de paso bajo (desenfoque) las imágenes antes de restarlos. A continuación, utilice esa señal diferencia como una máscara para seleccionar los píxeles de interés. Un filtro lo suficientemente amplia como se ignore el demasiado pequeño (de alta frecuencia) características que terminan labrando regiones "horrible" dentro de su objeto de interés. También va a reducir el resaltado de ruido a nivel de píxeles y la falta de alineación (la información de la mayor frecuencia).

Además, si usted tiene más de dos cuadros, introduciendo algún histéresis de tiempo le permitirá formar regiones más estables de interés con el tiempo también.

Una técnica que creo que es común es utilizar un modelo de mezcla . Coge una serie de cuadros de fondo y para cada píxel de construcción de un modelo de mezcla por su color.

Cuando se aplica un marco con la persona que obtendrá cierta probabilidad de que el color es frontal o de fondo, teniendo en cuenta las densidades de probabilidad en el modelo de mezcla para cada píxel.

Una vez que haya P (píxel está en primer plano) y P (píxel es de fondo) Se podía umbral de la imágenes de probabilidad.

Otra posibilidad es utilizar las probabilidades como insumos en algún algoritmo de segmentación más inteligente. Un ejemplo es gráfico recortes la que yo tengo obras notado bastante bien.

Sin embargo, si la persona está usando la ropa que son visualmente indistguishable desde el fondo, obviamente, ninguno de los métodos descritos anteriormente funcionaría. Que o bien tendría que conseguir otro sensor (como IR o UV) o tener una muy elaborados "modelo de persona" que podría "añadir" las piernas en la posición correcta en caso de descubrir lo que piensa que es un torso y la cabeza.

Buena suerte con el proyecto!

Fondo vs detección de primer plano es muy subjetiva. El escenario de aplicación define el fondo o el primer plano. Sin embargo, en la aplicación que detalle, supongo que está diciendo implícitamente que la persona es el primer plano. Utilizando el supuesto anterior, lo que buscan es un algoritmo de detección de personas. Una posible solución es:

  
      
  1. Ejecutar un detector de características Haar + cascada de clasificadores débiles impulsado   (Véase el OpenCV wiki para más detalles)
  2.   
  3. Compute movimiento entre tramas (diferencias)
  4.   
  5. Si hay un + ve detección de rostros para una trama, los píxeles de movimiento clúster   alrededor de la cara ( kNN algoritmo )
  6.   

voilá ... usted debe tener un detector persona sencilla.

Deja la foto en Craigslist y decirles que usted tendrá que pagar $ 5 para alguien que lo haga.

garantizado que obtendrá éxitos en cuestión de minutos.

En lugar de una sustracción recta, que podría pasar a través de ambas imágenes, pixel por pixel, y sólo "restar" los píxeles que son exactamente lo mismo. Eso, por supuesto, no va a dar cuenta de las variaciones en los colores de menor importancia, sin embargo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top