2010-07-17 10 views
6

He hecho un videochat, pero como es habitual, a muchos hombres les gusta ehm, abusan del servicio (dejo que sea usted quien determine la naturaleza de tal abuso), que no es algo que respalde de ninguna manera, ni la mayoría de mis usuarios. No, no he robado chatroulette.com :-) Francamente, estoy medio avergonzado de mencionar esto, pero mi pregunta es técnica y más bien específica:Un buen método para detectar la presencia de una característica en particular en una imagen

Quiero filtrar/denegar usuarios en función de su contenido de video cuando este contenido es de carácter ofensivo, como que el usuario muestre su basura en la cámara. ¿Qué tipo de algoritmo de comparación de imágenes se adapta a mis necesidades?

He pasado aproximadamente una semana leyendo algunos artículos científicos y he tomado conciencia de las múltiples teorías y sus implementaciones, como SIFT, SURF y algunos de los enfoques basados ​​en wavelets. Cada uno de estos tiene inconvenientes y ventajas, por supuesto. Pero dado que la naturaleza de mi comparación de imágenes es muy específica, para negar el servicio si se encuentra una determinada parte del cuerpo en video en una variedad de posiciones, me pregunto cuál de los métodos me conviene más.

Actualmente, se inclinan hacia algo a lo largo del siguiente (basado en wavelets más algo que supongo que algunas innovaciones patentadas): http://grail.cs.washington.edu/projects/query/

Con lo anterior, puedo simplemente dibujar la parte del cuerpo infractor, y esperan infractor contenido para ser considerado un partido basado en un umbral. Por otra parte, no estoy seguro de si el método es invariable para las transformaciones y si lo es, de qué tipo, el documento no es realmente específico al respecto.

Alternativamente, estoy pensando que una implementación de SURF podría hacerlo, pero me temo que podría darme falsos positivos. ¿Puede tal implementación ser entrenada para reconocer/dar importancia a una característica específica?

Soy consciente de que existen numerosas preguntas sobre SURF y SIFT aquí, pero la mayoría de ellas son genéricas ya que generalmente explican cómo "comparar" dos imágenes. Mi comparación es característica específica, no genérica. Necesito un método que no solo compare dos imágenes similares, sino una que pueda darme un rango/índice/peso para una característica (sin embargo, el método me permite describirlo, ya sea una imagen en sí o alguna otra cosa) estando presente en una imagen.

+2

+1 porque este es un ejercicio teórico interesante, pero en la práctica, sospecho que los trolls podrán soñar nuevos comportamientos ofensivos más rápido de lo que puedes responder con la tecnología para detectarlos y bloquearlos. –

+1

Hola Jim, sí, pero pocos usuarios esperan una comparación de imágenes en este tipo de servicio. Tengo usuarios que me piden que "desbloquee sus IP" aunque nunca mencioné que utilizo prohibiciones de IP. La "prohibición de IP" se ha convertido en una expresión popular. Hay tutoriales sobre cómo eludir estos. Por eso quiero ir a otra ruta completa. – amn

Respuesta

4

Parece que no necesita detección de características, sino reconocimiento de objetos, es decir, el método Viola-Jones. Eche un vistazo al ejemplo de facedetect.cpp enviado con OpenCV (también hay varias caracas de corte listas para usar: detector de rostros, detector de cuerpo ...). También utiliza características de imagen, llamadas Haar Wavelets. Puede que le interese usar información de color, eche un vistazo al algoritmo CamShift (también disponible en OpenCV).

+0

Bueno, el problema no es que todos los usuarios muestren sus rostros. Entonces necesito algo que no esté entrenado/adaptado/específico para el reconocimiento facial. ¿Facedetect.cpp será de alguna ayuda, entonces? – amn

+2

Esto no es reconocimiento de rostros, sino marco de detección de objetos. Se puede entrenar para detectar cualquier cosa que contenga un conjunto de características (automóviles, ojos, cuerpo ...). Aquí está el tutorial http://lab.cntl.kyutech.ac.jp/~kobalab/nishida/opencv/OpenCV_ObjectDetection_HowTo.pdf – Cfr

+0

Sí, lo siento, escribí "reconocimiento de objetos" en la respuesta original. Viola-Jones es un marco de detección de objetos, originalmente utilizado para detectar rostros (no reconocer). Facedetect.cpp muestra cómo usarlo con cascadas anidadas, puedes usarlo con otras cascadas, no solo caras. – Cfr

1

Esto es más acerca de la visión artificial. Debes reconocer objetos en tu secuencia de imagen/video, sea lo que sea ... para eso, puedes usar muchos algoritmos diferentes (la mayoría de ellos funcionan en el dominio espectral, por eso deberás usar una transformación).

Para ser preciso, también necesitará una base de conocimiento o, al menos, algunos descriptores que definirán el objeto.

Pruebe OpenCV, tiene algunos algoritmos ya implementados (y descriptores básicos incluidos).

Existen aplicaciones/algoritmos que se pueden "entrenar" (como las redes neuronales) y que son capaces de identificar objetos en función de la capacitación. La mayoría de ellos (al menos, los buenos) no son muy populares y solo se pueden encontrar en grupos de investigación especializados en visión artificial, reconocimiento de objetos, inteligencia artificial, etc.

¡Buena suerte!

Cuestiones relacionadas