2011-04-04 10 views
24

necesito para hacer una aplicación para iOS con estas características:Reconocimiento de imágenes de la biblioteca/API de código iPhone

  • Utilice la cámara captura una imagen.
  • Reconocer esa imagen: ¿Coincide con una imagen de muestra o no?

¿Hay alguna API en línea para hacer eso (de Google, Yahoo, ...)? Por ejemplo, ¿puedo subir una imagen y obtener una imagen URL y luego solicitar una url para comparar una nueva imagen con una existente?

+0

posible duplicado de [Reconocimiento de imagen muy simple en iOS] (http://stackoverflow.com/questions/4695268/very-simple-image-recognition-on-ios) –

Respuesta

16

OpenCV biblioteca (for iPhone) contiene muchos algoritmos. Simplemente puede comparar histogramas de color de imágenes, o usar cosas más complicadas. ¿A qué tipo de coincidencia te refieres? ¿Encontrar duplicados o calcular medidas de similitud de imágenes?

Si desea hacer coincidir una plantilla simple para encontrar objetos, pruebe el algoritmo de Viola & Jones y las llamadas cascadas Haar. OpenCV ha entrenado la colección de plantillas en archivos XML para detectar caras, por ejemplo. OpenCV contiene la utilidad para el entrenamiento por lo tanto usted puede generar cascadas para otros tipos de objetos

+0

coincidencia significa que tengo una imagen sobre un objeto (ej .: un logo), y uso la cámara para capturar una imagen (ese logo también). Quiero saber 2 logotipos es lo mismo o no. Gracias por la respuesta –

+1

, entonces la mejor opción es Haar cascades o cvMatchTemplate IMHO – Andrey

+0

@Andrey ¿qué hay de reconocer las frutas y verduras? puedo hacerlo con opencv –

3

Encontré IQEngines, que funcionan bien.

14

También puede echar un vistazo a Moodstocks, que proporcionará una gran API y SDK de iOS para implementar el reconocimiento de imágenes en su aplicación en cuestión de minutos.

+0

Buena compañía, pero MUY cara. –

1

Pastec es un (LGPL) alternativa de código abierto para el servicio ya se ha mencionado.

Su API HTTP simple permite agregar, eliminar y buscar fácilmente imágenes coincidentes en el índice. Se basa en OpenCV y utiliza el descriptor ORB, que no tiene patente.

+0

Para evitar la frustración, quiero mencionar que Pastec SOLAMENTE compila en sistemas Linux, no se compila en Mac OS debido a su dependencia sys/eventfd. –

+0

Se ha eliminado la dependencia de eventfd, por lo que ahora Pastec debería ser compilable para OSX. – MagSoft

1

He examinado Moodstocks, que parece haber perfeccionado un sistema de reconocimiento de imágenes con un servicio de pago por mes. Tienen un gran sistema (lo he probado para mi propio uso y es fantástico) PERO es EXTREMADAMENTE costoso para mí, y es por eso que no lo estoy usando.En el momento en que escribo esto, el servicio de imágenes "hasta 100,000" es de aproximadamente $ 12,000/año. Para mi proyecto, tengo casi 4 millones de imágenes con las que necesito comparar. YIKES.

Así que después de muchos meses de investigación, he llegado a la conclusión de que si comparas miles de imágenes o más (en mi caso más de 1 millón), tendrás que hacer la comparación de imagen de del dispositivo. Los dispositivos móviles de los usuarios no tienen el espacio, la velocidad y la potencia para realizar grandes cantidades de cálculos para realizar este tipo de trabajo.

Lo que realmente significa es que necesita configurar un servidor de reconocimiento de imágenes en una máquina de alto rendimiento y hacerlo público para su aplicación. En la aplicación, haga que el usuario tome una fotografía de un objeto (o puede tomar fotogramas del video de la cámara), llévela a su servidor para compararla y luego, cuando encuentre una coincidencia, informe los resultados a la aplicación.

Puede usar un marco como Accord.NET o EmguCV para hacer una aplicación de escritorio C o un servicio que se ejecute en un cuadro de servidor de Windows para hacer esto, por ejemplo.

Lo que la aplicación Amazon iOS hace para el reconocimiento de imágenes por lo que puedo adivinar es que parecen localizar los puntos SURF en tiempo real y los envía al servidor mientras escanea en lugar de toda la imagen. Supongo que usan OpenCV en el dispositivo para hacer esto. Pero aún usan el software del servidor para devolver el SKU del producto coincidente.

Aquí hay una publicación impresionante del blog por un chico que quería hacer una coincidencia de imágenes en .NET y él repasa cada paso incluyendo cómo funciona, cómo hacerlo y luego da todo su código en una aplicación de muestra. Increíble publicación: https://sbrakl.wordpress.com/2015/01/30/love-affair-with-cbir-part-3/comment-page-1/

De lo que he podido aprender es que el algoritmo LoCATe realiza el mejor y el más rápido con grandes cantidades de imágenes, pero también lleva horas, días y posiblemente semanas (dependiendo de la cantidad de imágenes tienes) para crear índices masivos para la búsqueda. Creo que cuando se trata de la coincidencia de imágenes, he encontrado que la velocidad de creación de un índice sólido está relacionada con la velocidad de búsqueda de coincidencias de las consultas.

+0

y el enlace no funciona –

3

Todo el campo del reconocimiento de imágenes ha cambiado con la llegada de Deep Neural Networks. Sin embargo, necesita una poderosa máquina para entrenar su propia red neuronal. También puedes usar vize.it, es una aplicación en línea fácil de usar que te permite definir la tarea y clasificar las imágenes usando http API.

Descargo de responsabilidad: Soy un estudiante de doctorado de Inteligencia Artificial que es miembro del equipo vize.it.

Cuestiones relacionadas