Uno de los proyectos más interesantes que he trabajado en el último par de años fue un proyecto acerca de el procesamiento de la imagen. El objetivo era desarrollar un sistema que sea capaz de reconocer la Coca-Cola ‘latas’ (se nota que estoy enfatizando la palabra ‘latas’, vamos a ver por qué en un minuto). Puedes ver un ejemplo a continuación, con la puede reconocer en la rectángulo verde con la escala y la rotación.

Procesamiento de imagen: Algoritmo de Mejora para la 'Coca-Cola' de Reconocimiento de

Algunas restricciones en el proyecto:

  • El fondo podría ser muy ruidoso.
  • La puede podría tener cualquier escala o rotación o incluso la orientación (dentro de límites razonables).
  • La imagen podría tener algún grado de discrepancia (contornos podría no ser totalmente recta).
  • No podía ser de botellas de Coca-Cola en la imagen, y el algoritmo sólo debe detectar la puede!
  • El brillo de la imagen puede variar mucho (así que usted no puede confiar «mucho» en la detección de color).
  • La puede podría ser parcialmente ocultos en los lados o en la parte media y posiblemente en parte oculto detrás de una botella.
  • No podía ser de puede en la imagen, en cuyo caso había que encontrar nada y escribir un mensaje que dice así.

Por lo que podría terminar con cosas complicadas como esta (que en este caso tenía mi algoritmo totalmente fail):

Procesamiento de imagen: Algoritmo de Mejora para la 'Coca-Cola' de Reconocimiento de

Hice este proyecto hace un tiempo, y había un montón de diversión el hacer de ella, y tenía una decente aplicación. He aquí algunos detalles sobre mi aplicación:

Idioma: Hecho en C++ utilizando OpenCV biblioteca.

Pre-procesamiento de: Para el pre-procesamiento de imágenes, es decir, la transformación de la imagen en una forma cruda para dar el algoritmo, he utilizado 2 métodos:

  1. El cambio de color de dominio de RGB a El VHS y filtrado basado en la «roja» el tono, la saturación por encima de un umbral determinado para evitar la naranja como colores, y el filtrado de valor bajo para evitar los tonos oscuros. El resultado final fue un binario de la imagen en blanco y negro, donde todos los píxeles blancos representan los píxeles que coinciden con este umbral. Obviamente, todavía hay un montón de mierda en la imagen, pero esto reduce el número de dimensiones que tienen que trabajar.
    Procesamiento de imagen: Algoritmo de Mejora para la 'Coca-Cola' de Reconocimiento de
  2. Filtrado de ruido utilizando la mediana de filtrado (tomando la mediana del valor de píxel de todos los vecinos y reemplazar los píxeles por este valor) para reducir el ruido.
  3. Utilizando Canny, El Filtro De Detección De Bordes para obtener los contornos de todos los elementos después de 2 precedente pasos.
    Procesamiento de imagen: Algoritmo de Mejora para la 'Coca-Cola' de Reconocimiento de

Algoritmo: El algoritmo que he elegido para esta tarea fue tomado de este libro impresionante en la extracción de características y llamó Hough Generalizada Transformar (bastante diferentes de los habituales Hough Transformar). Básicamente dice un par de cosas:

  • Puede describir un objeto en el espacio, sin conocer su ecuación analítica (que es el caso aquí).
  • Es resistente a deformaciones de la imagen, tales como la escala y la rotación, como lo será, básicamente, la prueba de su imagen para cada combinación de factor de escala y la rotación de los factores.
  • Utiliza un modelo base (una plantilla) que el algoritmo va a «aprender».
  • Cada uno de los píxeles que quedan en el contorno de la imagen va a votar por otro píxel que supuestamente va a ser el centro (en términos de la gravedad) de su objeto, basado en lo que aprendió de la modelo.

Al final, se termina con un mapa de calor de los votos, por ejemplo aquí todos los píxeles del contorno de la lata va a votar por su centro de gravedad, por lo que usted tendrá un montón de votos en el mismo píxel correspondiente al centro, y un pico en el mapa de calor de la siguiente manera:

Procesamiento de imagen: Algoritmo de Mejora para la 'Coca-Cola' de Reconocimiento de

Una vez que tienes eso, un simple umbral basado en la heurística puede dar la ubicación del centro del píxel, de la que puede derivar de la escala y la rotación y, a continuación, trazar su pequeño rectángulo a su alrededor (final de escala y la rotación de factor, obviamente, será relativa a la plantilla original). Al menos en teoría…

Resultados: Ahora, si bien este enfoque trabajado en todos los casos, fue muy deficiente en algunas áreas:

  • Es extremadamente lento! No voy a enfatizar lo suficiente. Casi un día completo se necesita para procesar el 30 de imágenes de prueba, obviamente, porque tenía un muy alto factor de escala para la rotación y la traslación, ya que algunas de las latas eran muy pequeñas.
  • Estaba completamente perdido cuando las botellas estaban en la imagen, y por alguna razón casi siempre se encuentran en el biberón en lugar de la can (tal vez porque las botellas eran más grandes, por lo que tenía más píxeles, por lo tanto más votos)
  • Imágenes borrosas fueron también no es bueno, ya que los votos terminó en píxeles en lugares al azar en todo el centro, terminando así con una muy ruidoso mapa de calor.
  • En la varianza en la traslación y la rotación se logró, pero no en la orientación, lo que significa que puede que no estaba directamente frente a la cámara objetivo no fue reconocido.

Puede ayudarme a mejorar mi específicos algoritmo, utilizando exclusivamente OpenCV características, para resolver el cuatro problemas mencionados?

Espero que algunas personas también aprenderán algo así, después de todo yo creo que no solo la gente que pregunta debe aprender. 🙂

  • Se podría decir que esta pregunta es más apropiado dsp.stackexchange.com o stats.stackexchange.com y ciertamente debería considerar la posibilidad de volver a preguntar en esos sitios también.
  • La primera cosa a hacer es analizar el porqué de las diferentes fracaso de los casos están sucediendo. E. g., aislar ejemplos de lugares donde las botellas de ganar, donde las imágenes son borrosas, etc., y llevar a cabo un análisis estadístico para conocer la diferencia entre sus Hough representaciones y los que desean que podría detectar. Algunos buenos lugares para aprender acerca de los enfoques alternativos aquí y aquí
  • No sería la extracción de TAMIZAR o SURF características mucho más rápido que el hough-transformación ? Por qué sólo detectar las latas cuando usted es capaz de detectar más objetos registrados?
  • hace un buen punto. Para la velocidad que usted desea conseguir turístico de calcular características, como histogramas de gradientes orientados. Una muy ingenuo primer enfoque sería manualmente la etiqueta de un montón de rectángulos en algunas imágenes de entrenamiento, y el uso de estas plus al azar ejemplos negativos para la formación de una SVM o clasificador de árboles de decisión. La capacitación se llevará más tiempo, pero la ejecución en la novela de imágenes será mucho más rápido. Estoy planeando escribir este método, hasta cuando tengo más tiempo libre para incluir el derecho de las referencias.
  • Hice esto porque el alcance de la cesión se refiere específicamente a las latas de CocaCola. Yo no sé mucho acerca de TAMIZAR o SURF, pero si este algoritmo se ajusta a este problema que me encantaría ver una respuesta sobre el tema.
  • Acerca de cómo un enfoque similar a la reCAPTCHA? 😉
  • Por qué era trasladado desde dsp.stackexchange.com? Parece que el sitio sería un mejor ajuste que stackoverflow o_O
  • reCAPTCHA podría ser una idea, pero usted no tiene absolutamente ninguna garantía de que la Coca-Cola cartas será visible, que podría ser totalmente oculto, parcialmente oculta, o la lata podría ser la vuelta. Y el problema no se resuelve con la botella, ya que las letras son las mismas.
  • Han tratado de detectar la parte superior o inferior del sello de la lata? Podría ser posible detectar como un borde paralelo al borde de la zona roja.
  • No me refiero para el reconocimiento de caracteres, me refiero con la idea de usar a seres humanos para hacer el descubrimiento. I. d. mostrar, a continuación, 2 fotos, una conocida y no conocida. Estaba bromeando. 🙂
  • Se pueden añadir cuantas más imágenes de prueba para obtener una idea más?
  • ¿Has probado sin la conversión de RGB a HSV? Creo que su problema de botellas está en su conversión, en realidad, usted removidos de sus latas en su primer paso.
  • Sin la conversión de VHS funciona bien, no lo puedo eliminar algunas de las cosas que claramente no es rojo-como. Puede y botella todavía están allí, incluso después de pasar por el VHS, el problema es principalmente de cómo diferenciar entre el 2 ya que el tener características comunes.
  • Pero parece que su muestra está diciendo algo más, creo que en su primera muestra después de preprocesamiento de imágenes de puede quitar? habría que organizar muestras de su paso por paso?
  • Oh ya veo lo que quieres decir, imágenes 2 y 3 mi pregunta no son de la misma original ! En la imagen 3, sólo había una lata. Podría haber publicado más, pero tratando de mantener la cuestión a un estricto mínimo. Suponga que el HSV traducción es guardar correctamente ambas pueden y botellas (+ un poco de ruido de todo el de la imagen)
  • Tengo una gran atracción por este tipo de software. Alguien sabe si hay algunos maduros y bien establecida, la Biblioteca de Java para hacer estas reconocimiento de imagen?
  • openCV sólo muy recientemente lanzó su java enlaces para su biblioteca (como de 2.4.4). Así que, básicamente, usted podría usar openCV en java (sin todo el alboroto de hacer JNI manualmente). Lo he probado y me ha funcionado bien (pero todavía buggy desde su muy reciente)
  • Todo esto es por encima de mi cabeza, pero yo estaba pensando: «¿por qué no usar OpenCV GPU módulo y tomar ventaja de la GPU para acelerar drásticamente?» OpenCV es básicamente tener una GPU módulo que ha algoritmos como Hough se Transforma y lo que no está escrito en CUDA y ejecutar en compatibles con CUDA GPU. La gran cosa aquí es que no hay necesidad de aprender cualquier CUDA. Sólo tiene que importar la gpu módulo y empezar a usarlo. Espero que esta ayuda (teóricamente no debería de aumentar el rendimiento en un orden de magnitud o más)
  • Esto es como una aplicación evidente de un convolucional de la red neuronal con la escala o rotación de la invariancia.
  • Si utiliza un hough-transformar, usted debe utilizar una versión más rápida del algoritmo original. Usted puede modificar el hough-transformar a centrarse únicamente en la alta probabilidad de parámetros usando métodos como la RANSAC.
  • Sólo la información de especial de color rojo y blanco en la coca-cola es lo suficientemente distinguibles.
  • Este es, sin duda, uno de los proyectos más interesantes que he visto a alguien que tome en StackOverflow.
  • 1337! Por favor, nadie upvote a esta pregunta de nuevo
  • es esta una coca-cola de anuncios?
  • Esta pregunta debe ser cerrado para 5 o 6 diferentes razones, pls haga clic en el botón «Cerrar».
  • La verdadera pregunta es si el can can can-can

23 Comentarios

  1. 632

    Un enfoque alternativo sería para extraer características (claves) utilizando el escala invariante en función de transformar (SIFT) o Aceleró Las Características Robustas (SURF).

    Es implementado en OpenCV 2.3.1.

    Usted puede encontrar un buen ejemplo de código mediante el uso de características en Features2D + Homografía para encontrar un objeto conocido

    Ambos algoritmos son invariantes a la escala y la rotación. Ya que el trabajo con funciones, también puede manejar la oclusión (siempre y cuando las claves son visibles).

    Procesamiento de imagen: Algoritmo de Mejora para la 'Coca-Cola' de Reconocimiento de

    Fuente de la imagen: tutorial de ejemplo

    El tratamiento se lleva a un par de cientos de ms para SIFT, SURF es un poco más rápido, pero no es adecuado para aplicaciones en tiempo real. ORBE de los usos RÁPIDO que es más débil con respecto a la rotación de la invariancia.

    Los papeles originales

    • Suena interesante. Hace este algoritmo también se encargan de la orientación de la invariancia (es decir, si no directamente, cara al objetivo de la cámara)? Este es uno de los principales puntos donde mi algoritmo de error.
    • usted podría tomar un par de fotos de la 3D-objeto por la rotación (alrededor de los objetos del eje y) Sinceimages de una mirada diferente de la parte delantera y trasera se podría tratar de encontrar la coincidencia más cercana y estimar su orientación con respecto a los casos en que el logotipo no es totalmente visible.
    • Idealmente me gustaría aplicar este algoritmo en el caso de una muestra aleatoria de imágenes, donde sólo tengo una llanura jpeg o png. Sería este algoritmo en este caso, o necesito algunas imágenes especiales?
    • ¿Podría dar un ejemplo, en su respuesta a la pregunta de cómo usarlo con OpenCV? Que sería genial !
    • He intentado ejecutar mediante sus imágenes, pero la coca cola puede en la escena de la imagen era probablemente demasiado pequeño (tal vez una mayor resolución de trabajo) para extraer características suficientes. Si usted tiene problemas con las características de cambio de la minHessian parámetro (Paso 1).
    • Excelente post, gracias por la información ! Sí he intentionnally reduce el tamaño de las imágenes para reducir el ancho de banda, pero mi original, las imágenes tienen una calidad mucho mejor. Voy a darle una oportunidad, pero suena exactamente de qué está hecho por y mucho más simple que el de la LUCHA.
    • Estoy de acuerdo con @apilador – TAMIZAR es una excelente opción. Es muy robusto frente a la escala y la rotación de las operaciones. Es ‘s algo robusto frente a la deformación de perspectiva (esto puede ser mejorado según lo sugerido por stacker: una plantilla de base de datos con diferentes vistas en perspectiva del objeto deseado). Su talón de Aquiles en mi experiencia podría ser fuertes variaciones de iluminación y muy caro de cálculo. No sé de ningún implementaciones de Java. Soy consciente de OpenCV ejecución y han utilizado una GPU c++/Windows (SiftGPU) la aplicación adecuada de rendimiento en tiempo real.
    • Una nota de advertencia: tanto como yo amo TAMIZAR/SURF y lo que han hecho para mí, son patentes gravados. Esta que ser un problema, dependiendo de una serie de condiciones, incluyendo la ubicación geográfica AFAIK.
    • Un potencial problema podría ser que puede generar falsos positivos donde está el logo de Coca-Cola.
    • Así que trate de OpenCV ORBE o FREAK que no tienen problemas con la patente. ORB es mucho más rápido que TAMIZAR. ORB es un poco pobre, con la escala y las variaciones de la luz en mi experiencia, pero la prueba por ti mismo.
    • ¿Cómo se puede aceptar esto como una respuesta… Ninguno de la función de los descriptores pueden diferenciar las botellas de una de las latas.. todos Ellos sólo ver invariantes del patrón de los descriptores. Estoy de acuerdo en que SIFT,SURF,ORBE,FREAK, etc. puede ayudar a usted en función de la coincidencia, pero.. ¿Qué acerca de sus otras partes de la pregunta como oclusiones, Botella sv etc. Espero que esta no es una solución completa, de hecho, si hubiera buscado en GOOGLE el problema, probablemente, el primer resultado sería esta respuesta sólo.
    • tienes toda la razón! Probablemente él estaba fascinado por el desempeño de CAMBIO y se olvidó de que la extracción de características y la coincidencia NO era EL PROBLEMA…
    • También estoy de acuerdo con @G453, pero creo que la función de adaptación es todavía el mejor punto de partida. Acerca de las oclusiones, de función correspondiente tendrán algún grado de robustez, 1/3 de la Cola logotipo visible podría ser suficiente para la detección. Para filtrar sólo las latas latas, probablemente voy a hacer algo como Proyección para detectar el metal, no veo otra forma utilizando las latas de color distintivo características. Aparte de eso, tal vez, de su geometría.
    • A mí de manera muy importante característica sobresaliente es la parte superior de la lata, es de color metálico y la curvatura.
    • Aunque estoy de acuerdo con @G453 . Yo también siento que desde que el OP no explorar este camino. Su problema no ha llegado a ser exponencialmente más fácil de resolver. Ya que la respuesta siempre ha tomado OP en la dirección correcta creo que es una buena respuesta. También una vez OP encuentra el descriptor SIFT su sólo una cuestión de tiempo antes de que él se da cuenta de cómo encontrar la rotación del objeto y, por tanto, la estimación de la ubicación y la orientación de la lata .
    • Lo que sobre el estado de la técnica de detección de objetos? el uso de la CNN se puede extraer características específicas y entrenar a una red para el proceso para obtener el cuadro delimitador y la objectness. Sin embargo. la tarea más difícil de este problema es la clasificación entre las latas y las botellas y la única cosa que puedo pensar para abordar este problema es el uso de la Estructura de movimiento para reconstruir el volumen, por lo tanto, obtener la información en 3D.
    • Espejo de enlace Features2D + Homografía para encontrar un objeto conocido
    • Para latas V botellas obviamente son totalmente diferentes objetos, que acaba de tren para dos cosas diferentes. (Usted puede decir algo como «cómo hacer que se reconozcan tanto las motos, Todoterrenos y vehículos?!», no tiene sentido.)
    • Esta respuesta es solo un comentario («trate de usar TAMIZAR»).

  2. 362

    Para acelerar las cosas, me gustaría aprovechar el hecho de que no se pide encontrar una arbitraria de la imagen/objeto, pero específicamente uno con el logo de Coca-Cola. Esto es importante porque este logo es muy distintivo, y debe tener un carácter, escala invariante de la firma en el dominio de la frecuencia, particularmente en el canal rojo de RGB. Es decir, el modelo de alternancia de rojo a blanco y rojo que se encuentra un barrido horizontal de la línea (entrenados en una alineados horizontalmente logotipo) tendrá un distintivo de «ritmo» a medida que pasa a través del eje central del logotipo. Que ritmo va a «acelerar» o «frenar» a diferentes escalas y orientaciones, pero siguen siendo proporcionalmente equivalente. Usted podría identificar/definir un par de docenas de tales líneas de exploración horizontal y verticalmente a través del logotipo y varios más en diagonal, en una estrella patrón. Llamar a estos la «firma de líneas de exploración.»

    Procesamiento de imagen: Algoritmo de Mejora para la 'Coca-Cola' de Reconocimiento de

    La búsqueda de esta firma en la imagen de destino es una simple cuestión de digitalización de la imagen en tiras horizontales. Busca una alta frecuencia en la red-canal (indicando el movimiento de una región roja a uno de color blanco), y una vez encontrado, a ver si es seguido por uno de la frecuencia de los ritmos identificados en la sesión de entrenamiento. Una vez que se encuentra una coincidencia, se le conoce al instante la exploración de la línea de orientación y ubicación en el logo (si usted guarde la pista de esas cosas durante el entrenamiento), así que la identificación de los límites del logotipo a partir de ahí es trivial.

    Me sorprendería si esto no fuera un linealmente-algoritmo eficiente, o casi. Es evidente que no se la dirección de su poder-botella de discriminación, pero al menos tendrá su logos.

    (Actualización: para botella de reconocimiento me gustaría ver de coca-cola (el líquido de color marrón) junto con el logotipo, es decir, dentro de la botella. O, en el caso de una botella vacía, me gustaría ver un cap que siempre tienen la misma forma básica, el tamaño y la distancia desde el logotipo y suelen ser todo blanco o rojo. La búsqueda de un color sólido de forma elíptica, donde una tapa debe ser, en relación al logotipo. No es infalible, por supuesto, pero aquí el objetivo debe ser encontrar el fácil queridos rápido.)

    (Han pasado algunos años desde la imagen de procesamiento de días, así que seguí esta sugerencia de alto nivel y conceptual. Yo creo que puede ligeramente aproximada de cómo el ojo humano podría funcionar, o al menos de la manera que mi cerebro hace!)

    • Esa es una buena sugerencia, me gusta especialmente el hecho de que este algoritmo debe ser bastante rápido, incluso si es probable que tenga muchos falsos negativos. Uno de mis objetivos ocultos es el uso de esta detección en tiempo real para la robótica, por lo que podría ser un buen compromiso !
    • Sí, se olvida con frecuencia (en un campo que se caracteriza por la precisión) aproximación los algoritmos son esenciales para la mayoría de tiempo real, en el mundo real-tareas de modelado. (Me baso en mi tesis en este concepto). Ahorre su tiempo exigentes de los algoritmos para las regiones limitadas (podar falsos positivos). Y recuerde: en robótica, por lo general, no se limita a una sola imagen. Suponiendo un robot móvil, un rápido alg puede buscar en decenas de imágenes de diferentes ángulos en menos tiempo de sofisticados algoritmos gastar en uno, reduciendo significativamente los falsos negativos.
    • Me gusta la idea de usar lo que equivale a un escáner de código de barras para extremadamente rápido detección de Coca-Cola logos. +1!
    • El problema de buscar firmas en este caso es que si le damos la vuelta a la lata para el otro lado, es decir, ocultando la firma, el algoritmo no detectar la lata.
    • Si oculta la firma, es decir, el logotipo, a continuación, alguna método basado en buscar el logotipo va a fallar.
    • Soy consciente de que, muchas gracias. El inglés no es mi lengua nativa. 🙂
    • Creo que lo que han querido decir es «imagina si en vez de la lata de 90 grados, de manera que sólo parte del logotipo es visible.» Usted puede superar que tomando tres líneas de análisis (superior, medio e inferior del logotipo) – si cualquier parte de el logotipo es visible, se puede ver al menos uno de estos.
    • Bonito solución, pero la firma método tiene otras limitaciones, por ejemplo, si la etiqueta de la lata es un poco dañado o si la lata es un poco aplastado, la detección de fallará. La realidad es que esta pregunta es una pregunta difícil de investigación problema. Es demasiado complejo y que el formato actual invita a la discusión extendida. Las personas no se dan cuenta de que no son expertos en la investigación de este tipo de cosas en una base diaria. El problema no va a ser resuelto en un hilo.
    • Cierto, pero eso no significa necesariamente que es apropiado para este Q&a Un sitio. Bien, ya hemos discutido este tema mucho en la meta, no hay razón para hacerlo aquí de nuevo. Mi argumento fue descartada cuando un moderador dijo que si a la gente le gustó, entonces debemos seguir.
    • Usted podría hacer de este algoritmo de reconocer la forma si se agregan algunos pasos adicionales: si usted firma es detectado, tienen una variedad de longitudes que se espera que la puede encontrar (y esperamos no encontrar) el rojo puede en un número de intervalos en la firma de la longitud. Escanear hacia abajo de la línea de la firma, a continuación, hacia el exterior, las pruebas para ver si los píxeles son los colores esperado.
    • Pensamiento adicional: usted probablemente necesita un conjunto de firmas para hacer la detección de la forma de trabajo, porque no se puede asumir que está directamente enfrente de la cámara. También puede ejecutar otro algoritmo para hallar el punto medio de la cara de la lata, pero que probablemente va por un largo y oscuro camino 😉
    • Alguna idea de qué Google si quiero construir algo con este enfoque?
    • es un tema bastante amplio pregunta abierta. Lo que he descrito es bastante elemental aplicación del campo de «Procesamiento Digital de Imágenes«, para lo que podrá encontrar numerosos libros en Amazon. Iniciar la lectura de algunos de que la literatura y si llegas a un determinado puesto de control, un post más específico de la cuestión que aquí en TAN (pero no en los comentarios).
    • ¿Cuál es la representación del conocimiento del formato utilizado en «Procesamiento Digital de Imágenes» para guardar la firma en un formato útil para que yo pueda correlacionar en nuevas imágenes?
    • Este es por lejos la mejor sugerencia, y debe ser la solución a esta pregunta; su elegante, sencilla, que se descompone ver las cosas, encontró un hack dentro de la pregunta, un acceso directo en cómo observamos el mundo. Y eso es lo que es la visión artificial reconocimiento es todo acerca de.
    • -1: Este enfoque es de tipo ad-hoc «solución» que no trabajo con otros logotipos o tipos de objeto. Antes de tratar de llegar con sus propios solución debe realmente tener una mirada en la literatura de logotipo de reconocimiento, reconocimiento de objetos, o la clasificación de la imagen.
    • Tengo un gran respeto por el trabajo que has hecho en el logotipo de reconocimiento, pero yo sólo quería señalar que mi «solución» no en el hecho de abordar el OP pregunta específica. No pide una solución general, quería una rápido solución satisfacer los requisitos establecidos. A veces, como de los expertos, estamos demasiado rápido para saltar a la solución de ingeniería, cuando un simple «ad-hoc», se podría llegar con una fracción del esfuerzo. (Pero, en principio, debo señalar que mi enfoque es, de hecho, extensible, y en teoría podrían ser entrenados en cualquier número de logos.)
    • No deberá comprobar cada fila/grupo filas en el conjunto de la imagen, *360 para cada posible rotación, para esta «línea» identificador? No creo que neuronales artificiales-net ayudaría en absoluto en este problema?
    • Usted no debe mirar para altas frecuencias en el canal rojo. Rojo profundo = (1,0,0) y blanco=(1,1,1). Así que rojo no cambia. Que son los otros componentes que cambiar.
    • Casi no vale la pena mencionar, pero por supuesto, esta idea general absolutamente falla en cuaterniones invariancia de escala y la invariancia.
    • para los muy retraso en la respuesta!) Esto requiere de un solo pasar a través de cada fila de la imagen, porque no estamos comprobando en contra de una sola línea identificador, sino más bien una rotación ajustado colección de los identificadores. (Ver la sección sobre «la firma de líneas de exploración».)
    • En realidad, (aunque me he tenido que buscar la palabra «cuaterniones»!) Creo que ambas afirmaciones son incorrectas. Si vas a leer la descripción más de cerca, se nota que este enfoque es la escala y la rotación-invariante. (Y la rotación en el eje z, para los fines de este enfoque, es equivalente a escala.)
    • Veo, estás diciendo que la formación de líneas, son en realidad decir 30 «tomado» en diferentes ángulos. Por lo que se propone (digamos) de unos 20 ? las líneas de la original, quizás 30 de ángulos, siendo alrededor de 1000. luego de hacer (digamos) de alrededor de 100 líneas de exploración SL de la imagen. así, para cada S.L., la «coincidencia de color rojo-blanco scan» podría aparecer en: cualquier escala / cualquier ubicación dentro de SL. así, en un handywavey manera, vamos a resolver ese particular imagen clásica problema del reconocimiento. así que vas a hacer de 100.000 de esos «escala lineal/posición invariable» handwave partidos.
    • «no deberá comprobar cada fila/grupo filas en el conjunto de la imagen, para cada posible [muchos] rotaciones, para esta «línea» identificador» por lo que vale sí, eso es correcto. tenga en cuenta que «toda» la rotación es en el sentido, que acababa de intentar su mejor con (digamos) de 20, 50 o 100 rotaciones. En este esquema, para cada análisis de la imagen de prueba (digamos que usted tomó 100 de ellos de arriba a abajo), usted tiene que tratar cada uno de esos 100 escaneos con cada uno de los (digamos) 50 rotaciones, en cada uno de los (por ejemplo) 10 o 20 líneas de prueba a través del logotipo.
    • (continuar con ese último comentario) de nuevo notando que cada lineales de línea de prueba en este esquema propuesto consiste en la posición/la invariancia de escala, que tendría que ser resuelto de alguna manera.

  3. 151

    Diversión problema: cuando me fije en su imagen de la botella, yo pensé que era una lata demasiado. Pero, como ser humano, lo que me hizo notar la diferencia es que entonces me di cuenta de que era también una botella…

    Así, a decir de latas y botellas aparte, como se trata de simplemente de escaneo para botellas de primera? Si usted encuentra uno, la máscara de la etiqueta antes de buscar latas.

    No demasiado difícil de aplicar si usted ya está haciendo de las latas. El verdadero inconveniente es que se duplica el tiempo de procesamiento. (Pero pensando en el futuro para aplicaciones del mundo real, usted va a querer hacer botellas de todos modos 😉

    • Sí, he pensado que también, pero no tenía mucho tiempo para hacerlo. ¿Cómo reconocer a un frasco, ya que es parte principal se verá como una escala puede? Yo estaba pensando, buscando el enchufe rojo así y a ver si es alineado con el embotellada centro, pero que no parece muy robusto.
    • Si hay una tapa de color rojo (o anillo) en paralelo a la «Coca cola» es más probable una botella.
    • ¿Cómo entrenar a tu algoritmo para latas? ¿Tienes ejemplos de latas? Cómo sobre el entrenamiento con ejemplos de botellas?
    • La fuerza de este algoritmo es que sólo se necesita una de la plantilla para entrenar, y a continuación, aplica todas las transformaciones para que coincida con la de otros posibles latas. Yo estaba usando un binarized y el contorno de la base de la versión de esta plantilla para entrenar, por lo que la única diferencia entre la botella y sería el complemento, pero me temo que lo traería más falsos positivos ya que el centro de gravedad estaría en alguna parte en el borde o fuera de la botella. Vale la pena darle una oportunidad, supongo. Pero que tendrá el doble de mi tiempo de procesamiento y yo voy a llorar 😉
    • Esencialmente, es una razonable dirección. Me gustaría frase es ligeramente diferente: en Primer lugar, encontrar todos los candidatos, y, a continuación, para cada uno de los candidatos determinar si se trata de una botella, una lata, o algo más.
    • Me gusta este enfoque! Por desgracia, carece de la suficiente generalización, como botellas no son la única plausible falsos positivos que pueden ser detectados. he rodado esta en una respuesta, porque era demasiado para comentar aquí. 🙂
    • Wow! En realidad pensé que había dos latas en la imagen. Pensé que era una lata en la botella… tal vez no deberías culpar a el algoritmo para hacerlo, sólo por no detectar la otra.
    • Esta «respuesta» es solo un comentario, en el mejor. En todo el sitio, esta es la «no respuesta» con el mayor número de upvotes.
    • Pruebe el «paralelo» idea en una botella y una lata alineados juntos…

  4. 119

    No es difícil, incluso para los seres humanos para distinguir entre una botella y una lata en la segunda imagen (siempre que la transparencia de la región de la botella está oculta)?

    Son casi los mismos, excepto por una región muy pequeña (es decir, ancho en la parte superior de la lata es un poco pequeña, mientras que la envoltura de la botella es la misma a lo ancho de todo, pero un pequeño cambio a la derecha?)

    La primera cosa que vino a mi mente fue a comprobar el rojo de la parte superior de la botella. Pero es todavía un problema, si no es la parte superior de la botella, o si está parcialmente oculta (como se mencionó anteriormente).

    La segunda cosa que yo pensaba que era acerca de la transparencia de la botella. OpenCV tiene algunas obras en la búsqueda de objetos transparentes en una imagen. Compruebe los enlaces de abajo.

    Particularmente vistazo a esto a ver cómo exactamente detectan vidrio:

    Ver su aplicación resultado:

    Procesamiento de imagen: Algoritmo de Mejora para la 'Coca-Cola' de Reconocimiento de

    Dicen que es la implementación del papel «Una Geodésica Activa Contorno de Marco para la Búsqueda de Cristal» por K. McHenry y J. Ponce, CVPR 2006.

    Que podría ser útil en tu caso un poco, pero el problema surge de nuevo si la botella está llena.

    Así que creo que aquí, usted puede buscar para el cuerpo transparente de las botellas de primera o de una región roja conectado a dos objetos transparentes lateralmente, que es, obviamente, el de la botella. (Cuando se trabaja idealmente, una imagen como la siguiente.)

    Procesamiento de imagen: Algoritmo de Mejora para la 'Coca-Cola' de Reconocimiento de

    Ahora puede quitar el color amarillo de la región, es decir, la etiqueta de la botella y ejecutar el algoritmo para encontrar la lata.

    De todos modos, esta solución también tiene diferentes problemas como en las soluciones.

    1. Funciona sólo si la botella está vacía. En ese caso, usted tendrá que buscar el rojo de la región entre los dos colores negro (si, la Coca Cola en el líquido es de color negro).
    2. Otro problema si es transparente parte está cubierto.

    Pero de todos modos, si no hay ninguno de los problemas mencionados en las fotos, esta parece ser una mejor manera.

    • +1 yo pensé acerca de esto y estaba en mi manera de implementar este enfoque. Sin embargo, @enlazador debe compartir su conjunto de imágenes, de modo que podemos tratar de hacer más conjeturas.
    • sí.. yo también lo estoy pensando que era buena si hay más imágenes.
    • actualizados los enlaces..
    • Teniendo en cuenta que si sólo tenemos las etiquetas para botellas / latas y ninguno de los otros factores distintivos de la tapa de la botella o de la transparencia o puede la parte superior/inferior – El ancho de la botella es diferente que el ancho de la lata.
  5. 48

    Me gusta Darren Cook y apilador respuestas a este problema. Yo estaba en el medio de tirar mis pensamientos en un comentario de esos, pero creo que mi enfoque es demasiado respuesta en forma de salir de aquí.

    En resumen, se ha identificado un algoritmo para determinar que un logo de Coca-Cola está presente en un lugar determinado en el espacio. Ahora usted está tratando de determinar, por arbitraria orientaciones y arbitraria de los factores de escala, una heurística adecuada para distinguir Coca-Cola latas de otros objetos, que incluye: botellas, vallas, anuncios, y Coca-Cola parafernalia todas asociado con este logotipo icónico. No llame a cabo muchos de estos casos adicionales en su declaración del problema, pero siento que son vitales para el éxito de su algoritmo.

    El secreto aquí es determinar qué características visuales de un puede contiene o, a través del espacio negativo, ¿qué características están presentes en otros productos Coca-cola que no están presentes para latas. Para ello, la actual respuesta esboza un enfoque básico para la selección de «puede» si y sólo si «botella» no es identificado, ya sea por la presencia de una tapa de botella, líquido, o de otros similares de visual heurística.

    El problema es que esto se rompe. Una botella podría, por ejemplo, el vacío y la falta de la presencia de una tapa, que conduce a un falso positivo. O, podría ser un parcial de botella con características adicionales alterados, que conduce de nuevo a la detección falsa. No hace falta decir que esto no es elegante, ni tampoco es efectivo para nuestros propósitos.

    Para este fin, la mayoría de la correcta selección de los criterios para latas parecen ser los siguientes:

    • Es la forma del objeto de la silueta, como que ha esbozado en su pregunta, ¿correcto? Si es así, +1.
    • Si suponemos la presencia de la luz natural o artificial, cómo podemos detectar un cromo de contorno de la botella que significa que si este es de aluminio? Si es así, +1.
    • Hacer determinamos que el las propiedades especulares del objeto son correctos, en relación a nuestra fuentes de luz (video ilustrativo enlace en fuente de luz de detección de)? Si es así, +1.
    • Podemos determinar otras propiedades sobre el objeto que lo identifique como puede, incluyendo, pero no limitado a, la topológico de la imagen el sesgo del logotipo, la orientación del objeto, la yuxtaposición del objeto (por ejemplo, sobre una superficie plana, como una mesa o en el contexto de otras latas), y la presencia de una ficha de extracción? Si es así, para cada uno, +1.

    Su clasificación podría tener el siguiente aspecto:

    • Para cada uno de los candidatos partido, si la presencia de un logotipo de Coca Cola fue detectado, dibujar un borde gris.
    • Para cada partido por encima de +2, dibuje un borde rojo.

    Esto visualmente destacados para el usuario, lo que fue detectado, destacando débil positivos que pueden, correctamente, se detecta como trastoca latas.

    La detección de cada propiedad lleva una muy diferente el tiempo y el espacio de la complejidad, y para cada enfoque, un pase rápido a través de http://dsp.stackexchange.com es más que razonable para determinar el más correcto y más eficiente algoritmo para sus propósitos. Mi intención aquí es, pura y simplemente, al destacar que detectar si algo se puede invalidar una pequeña parte del candidato de detección espacio no es el más robusto o solución efectiva a este problema, e idealmente, usted debe tomar las acciones apropiadas en consecuencia.

    Y oye, felicidades por el Hacker News publicación! Sobre todo, este es un muy excelente pregunta digna de la publicidad que ha recibido. 🙂

    • Eso es un enfoque interesante que al menos vale la pena intentarlo, me gusta mucho tu razonamiento sobre el problema
    • Esto es algo de lo que yo estaba pensando: no descartar determinados tipos de falsos positivos. La regla de más funciones de lo que hace una coca cola puede. Pero me pregunto: ¿qué se puede hacer un deformado puede? Quiero decir, si usted camina en una coca cola puede todavía una coca-cola puede. Pero no tienen la misma forma ya. O es que el problema de la IA-Completa?
  6. 39

    Mirando forma

    Tomar un vistazo a la forma de la porción roja de la lata/botella. Observe cómo la pueden disminuye ligeramente en la parte superior, mientras que la etiqueta de la botella es recto. Se puede distinguir entre estos dos comparando la anchura de la porción roja a través de la longitud de la misma.

    Mirando destaca

    Una manera de distinguir entre las botellas y las latas es el material. Una botella es de plástico, mientras que una lata de aluminio de metal. En lo suficientemente bien iluminado situaciones, mirando a la especularidad sería una forma de decirle a una botella de la etiqueta de una lata.

    Como lo que yo puedo decir, que es como un humano seria capaz de decir la diferencia entre los dos tipos de etiquetas. Si las condiciones de iluminación son pobres, no está obligado a ser algo de incertidumbre en la distinción de los dos modos. En ese caso, tendría que ser capaz de detectar la presencia de la transparente/translúcido botella de sí mismo.

    • Me gusta la idea, pero me parece que tendría algunas realmente buenas condiciones de iluminación. En la imagen de ejemplo, donde hay tanto de latas y botellas, por ejemplo, este parece un poco difícil hacer la distinción.
    • En tu ejemplo, observe cómo la especularidad de la etiqueta de plástico es mucho más difusa que la muy brillantes en la lata? Por eso se puede decir.
    • Veo, que tipo de color del espacio de representación que utiliza en este caso para la captura de la especularidad en su algoritmo? Esto parece bastante difícil de conseguir en RGB o HSV
    • Lo que si la fuente de luz estaba detrás de la lata? Creo que no vea el punto culminante.
  7. 35

    Por favor, eche un vistazo a Zdenek Kalal del Tracker Predator. Se requiere algo de entrenamiento, pero activa puede aprender cómo el seguimiento de objeto se ve en diferentes orientaciones y escalas, y lo hace en tiempo real!

    El código fuente está disponible en su sitio. Es en MATLAB, pero tal vez hay una implementación de Java ya hecho por un miembro de la comunidad. He éxito re-implementado el tracker parte de TLD en C#. Si recuerdo correctamente, TLD es el uso de Helechos como el punto clave del detector. Puedo usar cualquiera de las OLAS o TAMIZAR lugar (ya sugerido por @apilador) para volver a adquirir el objeto si se ha perdido por el tracker. El rastreador de retroalimentación hace que sea fácil de construir con el tiempo una lista dinámica de sift/surf plantillas que con el tiempo permiten volver a adquirir el objeto con una precisión muy alta.

    Si usted está interesado en mis implementación en C# de la tracker, siéntase libre de preguntar.

    • Gracias por el enlace que se ve interesante. Respecto a la formación, ¿cuál es el tamaño del conjunto de entrenamiento, que sería razonable para lograr resultados razonables? Si usted tiene una aplicación aún en c# que sería de mucha ayuda !
    • Si bien la investigación de TLD, me encontré con otro usuario que busca una implementación en C# – – – ¿hay alguna razón para no poner tu trabajo en Github? stackoverflow.com/questions/29436719/…
    • N. B. Años, y más tarde, el link está muerto
    • Nuevo link: kahlan.la eps.surrey.ac.reino unido/featurespace/tld
  8. 31

    Si usted no está limitado a sólo una cámara que no estaba en uno de sus limitaciones tal vez usted puede utilizar un sensor de rango como el de Xbox Kinect. Con esto usted puede realizar la profundidad y el color base de igualada segmentación de la imagen. Esto permite una rápida separación de los objetos en la imagen. Usted puede utilizar ICP coincidencia o técnicas similares para igualar la forma de la lata en lugar de sólo su contorno o de color, y dado que es cilíndrico esto puede ser una opción válida para cualquier orientación si usted tiene una previa en 3D de escaneo del objetivo. Estas técnicas son a menudo bastante rápido, especialmente cuando se utiliza para un propósito específico que debería resolver su problema de la velocidad.

    También me podría sugerir, no necesariamente por la precisión o velocidad, sino por la diversión que usted podría utilizar una red neuronal entrenada en su tono imágenes segmentadas para identificar la forma de la lata. Estos son muy rápidos y, a menudo puede ser de hasta el 80/90% de precisión. La formación sería un poco de un largo proceso, aunque como usted tendría que identificar manualmente la lata en cada imagen.

    • En realidad yo no explicar que en el post, pero para esta tarea que se me fue dado un conjunto de alrededor de 30 imágenes, y tenía que hacer un algoritmo que podría coincidir con todos ellos en diversas situaciones como la descrita. Por supuesto, algunas imágenes se mantuvo a prueba el algoritmo en la final. Pero me gusta la idea de sensores Kinect, y me encantaría leer más sobre el tema !
    • ¿Qué sería de aproximadamente el tamaño del conjunto de entrenamiento, con una red neuronal para tener resultados satisfactorios? Lo bueno con este método es que sólo necesito una plantilla para que coincida con casi todo.
    • Si su conjunto de imágenes predefinidas y limitada, sólo hardcore resultados perfectos en su prog 😉
    • Sí, si yo entreno en el conjunto de datos que voy a ejecutar el algoritmo en contra, seguro de que voy a conseguir un resultado perfecto 🙂 Pero por ejemplo para esta tarea, el programa fue probado por el profesor en la final en un conjunto de imágenes. Me gustaría hacer algo que podría ser robusto y no overfit a los datos de entrenamiento.
    • El número de conjuntos de entrenamiento varía, usted tiene que tener cuidado de algunas cosas, sin embargo: no más de tren, usted probablemente querrá un conjunto de pruebas para mostrar cómo su exactitud está pasando. También el número de conjuntos de entrenamiento dependerá de la cantidad de capas que se van a utilizar.
    • Con respecto a las redes neuronales en el contexto de reconocimiento de formas, ¿sabes si hay algo similar en OpenCV? O si hubiera necesidad de implementar mi propio?
    • Usted probablemente va a querer implementar su propio. No he visto nada en openCV.

  9. 22

    Me detecte la red rectángulos: RGB -> VHS, el filtro rojo -> imagen binaria, cerca de (dilatar, a continuación, erosionar, conocido como imclose en matlab)

    A continuación, mirar a través de los rectángulos de mayor a menor. Los rectángulos que tienen rectángulos más pequeños en una posición conocida/escala se pueden eliminar (suponiendo botella proporciones son constantes, el pequeño rectángulo sería la tapa de una botella).

    Esto dejaría a usted con rojo rectángulos, entonces usted necesitará alguna forma de detectar el logos para saber si están un rectángulo de color rojo o una coca-cola puede. Como OCR, pero con un conocido logotipo?

    • Como esta el tema que se discute en DSP en el corto tiempo, cuando fue trasladado, en algunas de las botellas no tienen tapones 😉 o el enchufe podría parcialmente oculto.
  10. 20

    Esto puede ser una idea muy ingenua (o puede que no funcione en absoluto), pero las dimensiones de todas las latas de coca-cola son fijos. Así que puede ser que si la misma imagen contiene una lata y una botella, a continuación, usted puede diferenciarlos por consideraciones de tamaño (botellas van a ser más grandes). Ahora, debido a la falta de profundidad (es decir, mapping 3D a 2D mapping) es posible que una botella puede parecer reducido y no hay una diferencia de tamaño. Usted puede recuperar parte de la información de la profundidad mediante stereo-imágenes y, a continuación, recuperar el tamaño original.

    • En realidad no : no hay ninguna restricción de tamaño o la orientación (o la orientación, pero que realmente no se manejar), así que usted puede tener una botella de muy lejos en el fondo, y una lata en el primer plano, y la lata sería más grande que el de la botella.
    • También he comprobado que la relación anchura / altura es bastante similar para la botella y puede, por lo que no es realmente una opción así.
    • La etiqueta de la relación (por ser una marca) es el mismo. Así que si el (mayor) de la botella es un poco más lejos en la imagen, su tamaño será exactamente el mismo que el de la lata.
    • Sí, exactamente, es por eso que me sugieren imágenes estéreo para recuperar la profundidad de la primera. Mediante el uso de imágenes estéreo puede obtener la profundidad y, a continuación, evaluar el tamaño real mediante la adición de la profundidad de la información.
    • Para explicar un poco más. Supongamos que puede está en z=0 y la botella en z=-100. Ya que la botella está muy por detrás se verá más pequeña. Pero si sé que la botella está en z=-100 y puede en z=0, entonces puedo calcular el tamaño esperado de la lata/botella), si ambos son traducidos a z=0. Por lo que ahora están a la misma profundidad y, por tanto, que pueda tomar decisiones basadas en el tamaño.
    • Esto es solo un comentario, no una respuesta, pero es mucho más cerca de ser una respuesta que el comentario-como-una-respuesta anterior con 120 votos.

  11. 19

    Hmm, yo realmente creo que estoy en algo (esto es como la pregunta más interesante cada vez, así que sería una pena no seguir tratando de encontrar el «perfecto» de respuesta, aunque aceptable, se ha encontrado)…

    Una vez que encuentre el logotipo, sus problemas están a medio hacer. A continuación, usted sólo tiene que averiguar las diferencias entre lo que es alrededor de el logotipo. Además, queremos hacer como extra poco como sea posible. Creo que esto es en realidad esta parte fácil…

    Lo es alrededor del logotipo? Para una, podemos ver el metal, que a pesar de los efectos de iluminación, no tiene ningún tipo de cambio en su color de base. Como sabemos el ángulo de la etiqueta, podemos saber lo que está directamente encima de él, así que estamos viendo la diferencia entre estos:

    Procesamiento de imagen: Algoritmo de Mejora para la 'Coca-Cola' de Reconocimiento de

    Aquí, lo que está por encima y debajo del logo está completamente a oscuras, consistente en color. Relativamente fácil en ese sentido.

    Procesamiento de imagen: Algoritmo de Mejora para la 'Coca-Cola' de Reconocimiento de

    Aquí, lo que está arriba y la de abajo es la luz, pero todavía consistente en color. Es todo de plata, y de metal plateado en realidad parece bastante raro, así como la plata de los colores en general. Además, es una delgada se deslizan y lo suficientemente cerca de la red, que ya ha sido identificado por lo que podría rastrear su forma durante toda su longitud para calcular un porcentaje de lo que puede ser considerado como el anillo de metal de la lata. Realmente, usted necesita solamente una pequeña fracción de los que en cualquier lugar a lo largo de la se puede decir que es parte de ella, pero usted todavía necesita encontrar un equilibrio que garantiza no sólo una botella vacía con algo de metal detrás de él.

    Procesamiento de imagen: Algoritmo de Mejora para la 'Coca-Cola' de Reconocimiento de

    Y, finalmente, el complicado. Pero no es tan difícil, una vez que solo vamos por lo que podemos ver directamente arriba (y abajo) el rojo de contenedor. Sus transparentes, lo que significa que va a mostrar lo que está detrás de él. Eso es bueno, porque las cosas que están detrás de ella probablemente no van a ser tan consistente en colores como el plata circular de metal de la lata. Podría ser muchas cosas diferentes, detrás de ella, que nos diría que es un vacío (o llena de líquido claro) de la botella, o un color consistente, lo que podría significar que está llena de líquido o de que la botella es simplemente delante de un color sólido. Estamos trabajando con lo que está más cerca de la parte superior e inferior, y las posibilidades de que el derecho colores de estar en el lugar correcto son relativamente escasas. Sabemos que es una botella, porque no ha conseguido que la clave del elemento visual de la lata, que es relativamente simple en comparación con lo que podría estar detrás de una botella.

    (la última fue la mejor que pude encontrar de un vacío grande de coca cola de botella curiosamente la tapa Y el anillo son de color amarillo, lo que indica que el enrojecimiento de la tapa probablemente no debería ser tomadas en consideración)

    En la rara circunstancia de que un tono similar al de la plata está detrás de la botella, incluso después de la abstracción de los de plástico, o de la botella es de alguna manera llena con el mismo tono de plata líquida, podemos caer de nuevo en lo que se puede calcular aproximadamente como la forma de la plata – que como ya he dicho, es circular y sigue la forma de la lata. Pero a pesar de que me falta un cierto conocimiento en el procesamiento de imágenes, que suena lento. Mejor aún, ¿por qué no deducir esto por que por una vez la comprobación de todo el lados del logotipo para asegurarse de que no hay nada de la misma color plata no? Ah, pero lo que si hay el mismo tono de plata detrás de una lata? Entonces, en efecto, tenemos que prestar más atención a las formas, busca en la parte superior y la parte inferior de la lata de nuevo.

    Dependiendo de cómo impecable todo esto debe ser, podría ser muy lento, pero creo que mi concepto básico es comprobar la forma más fácil y más cerca de lo primero. Vaya por diferencias de color alrededor de la ya emparejados de forma (que parece ser la más trivial de parte de este, de todos modos) antes de ir al esfuerzo de trabajo la forma de los otros elementos. A la lista, va:

    • Encontrar la atracción principal (logotipo rojo de fondo, y posiblemente el logo para la orientación, aunque en el caso de la can es rechazado, usted necesita para concentrarse en el rojo solo)
    • Verificar la forma y orientación, sin embargo, de nuevo a través de la muy característica enrojecimiento
    • Verificación de colores alrededor de la forma (ya que es rápido y sin dolor)
    • Finalmente, si es necesario, compruebe la forma de los colores alrededor de la principal atracción para el derecho a la redondez.

    En el caso de que usted no puede hacer esto, es probable que la parte superior e inferior de la lata están cubiertos, y que la única manera posible de cosas que un humano podría haber utilizado de forma fiable hacer una distinción entre la lata y la botella es la oclusión y la reflexión de la lata, lo que sería una mucho batalla más difícil de procesar. Sin embargo, para ir aún más lejos, se puede seguir el ángulo de la lata/botella para comprobar la botella como rasgos, el uso de la semi-transparente de escaneo de las técnicas mencionadas en las otras respuestas.

    Adicional interesante pesadillas podría incluir una puede muy bien sentado detrás de la botella a una distancia que el metal de que sólo lo que sucede a mostrar por encima y debajo de la etiqueta, que todavía fallar mientras que usted está explorando a lo largo de toda la longitud de la etiqueta roja – que en realidad es más un problema porque no eres la detección de un bote en el que usted podría tener, en contraposición a considerar que en realidad son la detección de una botella, incluyendo el por accidente. El vaso está medio vacío, en ese caso!


    Como una exención de responsabilidad, yo no tengo experiencia ni han pensado alguna vez acerca de procesamiento de la imagen fuera de esta pregunta, pero es tan interesante que me puse a pensar muy profundamente sobre ello, y después de leer todas las respuestas, yo considero que este ser, posiblemente, la forma más fácil y manera más eficiente de hacerlo. Personalmente, me alegro yo no en realidad tiene que pensar acerca de la programación de este!

    EDITAR

    Procesamiento de imagen: Algoritmo de Mejora para la 'Coca-Cola' de Reconocimiento de
    Además, mira este dibujo que he hecho en MS Paint… Es absolutamente horrible y bastante incompleta, pero de acuerdo con la forma y colores, se puede adivinar lo que probablemente va a ser. En esencia, estas son las únicas cosas que uno necesita para molestar escaneado. Cuando usted ve muy distintivo de la forma y la combinación de colores tan cerca, ¿qué otra cosa podría ser? El bit I no de la pintura, el fondo blanco, debe ser considerado como «algo incoherente». Si hubiera un fondo transparente, podría ir por encima de casi cualquier otra imagen y todavía se podía ver de ella.

    • El particular tono de rojo es principalmente subjetiva y fuertemente influenciada por consideraciones respecto a la iluminación y el balance de blancos. Usted puede ser sorprendido por lo mucho que esas pueden cambiar. Considere, por ejemplo, este tablero de ajedrez ilusión.
  12. 15

    No soy consciente de OpenCV pero mirando el problema, lógicamente, creo que se podría diferenciar entre la botella y se puede cambiar la imagen que usted está buscando es decir, la Coca Cola. Usted debe incorporar hasta la parte superior de la can como en el caso de podemos es el revestimiento de plata en la parte superior de la coca cola y en el caso de la botella no habrá tal revestimiento de plata.

    Pero, obviamente, este algoritmo se producirá en los casos donde la parte superior de la lata está oculto, pero en tal caso incluso humano no será capaz de diferenciar entre los dos (si sólo coca cola en la parte de la botella/lata es visible)

    • Yo tenía el mismo pensamiento, pero creo que el revestimiento de plata en la parte superior de la lata cambia drásticamente dependiendo del ángulo de la can sobre la imagen. Puede ser una línea recta o un círculo. Tal vez podría usar como referencia?
  13. 13

    Me gusta el reto y quería darle una respuesta, la cual resuelve el problema, creo.

    1. Extraer características (de las claves, descriptores tales como SIFT, SURF) del logotipo de
    2. Coincidir los puntos con un modelo de la imagen del logotipo (utilizando el Comparador tales como la Fuerza Bruta )
    3. Calcular las coordenadas del cuerpo rígido (PnP problema – las funciones solvepnp)
    4. Estimación de la posición cap de acuerdo con el cuerpo rígido
    5. Hacer back-proyección y calcular la imagen píxel de la posición de inversión (ROI) de la tapa de la botella (que supongo que tiene los parámetros intrínsecos de la cámara)
    6. Comprobar con un método, si el tapón está allí o no. Si no, entonces esta es la botella

    Detección de la tapa es otro tema. Puede ser complicado o sencillo. Si yo fuera usted, me gustaría simplemente comprobar el histograma de color en el ROI de una simple decisión.

    Por favor, dar la retroalimentación si estoy equivocado. Gracias.

  14. 10

    Hay un montón de descriptores de colores para el reconocimiento de objetos, el papel de abajo compara un montón de ellos. Son especialmente potente cuando se combina con SIFT o de SURF. SURF o TAMIZAR por sí solos no son muy útiles en una coca cola de la imagen porque ellos no reconocen a un montón de puntos de interés, usted necesita la información de color para ayudar. Yo uso BIC (Frontera/Interior la Clasificación de Píxeles) con el SURF en un proyecto y funcionó muy bien para reconocer objetos.

    Descriptores de colores para la Web de la recuperación de la imagen: un estudio comparativo

    • El enlace no funciona.
  15. 10

    Estoy un par de años de retraso en responder a esta pregunta. Con el estado del arte empujado a sus límites por CNNs en los últimos 5 años yo no lo uso de OpenCV para hacer esta tarea ahora! (Sé que específicamente quería OpenCv características de la pregunta) me siento objeto de algoritmos de detección, tales como los de más Rápido RCNNs, YOLO, SSD, etc sería ace este problema con un margen significativo en comparación con OpenCV características. Si yo fuera a hacer frente a este problema ahora (después de 6 años !!) Definitivamente, me gustaría utilizar más Rápido-RCNN.

    • OP dijo que había 30 imágenes en alta resolución, que probablemente no es el mejor escenario para la formación ConvNets. No sólo son muy pocos (incluso aumentada), la alta resolución de la parte destruiría ConvNets.
  16. 9

    Me gusta tu pregunta, independientemente de si es fuera de tema o no 😛

    Una interesante aparte; me acaba de completar un tema de mi grado, donde hemos cubierto la robótica y la visión por ordenador. Nuestro proyecto para el semestre fue muy similar a la que usted describe.

    Hemos tenido que desarrollar un robot que utiliza un Xbox Kinect para detectar botellas de coca-cola y latas en cualquier orientación en una variedad de iluminación y las condiciones ambientales. Nuestra solución implicaba el uso de un filtro de paso de banda en el Tono del canal en combinación con el hough círculo de transformación. Hemos sido capaces de restringir un poco al medio ambiente (podemos elegir donde y cómo la posición del robot y el sensor Kinect), de lo contrario se va a utilizar de la TAMIZAR o SURF transforma.

    Usted puede leer acerca de nuestro enfoque en mi blog sobre el tema 🙂

    • Interesante proyecto, pero sólo se aplica a su muy específicos de la instalación.
  17. 9

    Usted necesita un programa que aprende y se mejora la precisión de la clasificación orgánica de la experiencia.

    Me voy a sugerir de aprendizaje profundo, con un profundo aprendizaje, esto se convierte en un problema trivial.

    Se puede entrenar de nuevo el inicio v3 modelo en Tensorflow:

    Cómo volver a entrenar el Inicio del Final de la Capa para las Nuevas Categorías.

    En este caso, será la formación de un convolucional de la red neuronal para clasificar a un objeto como la coca-cola o no.

    • Perro caliente o no perro caliente?
  18. 7

    Aprendizaje Profundo

    Reunir al menos un par de cientos de imágenes que contienen cola, latas, anotar el cuadro delimitador alrededor de ellos como positivo clases, incluir la cola, botellas y otros productos de la cola de la etiqueta de ellos negativos así como clases de objetos al azar.

    A menos que recoger un conjunto de datos muy grande, realizar el truco de usar el aprendizaje profundo de las características de pequeño conjunto de datos. Idealmente utilizando una combinación de Máquinas de Soporte Vectorial(SVM) con profundo de las redes neuronales.

    Una vez que se alimentan de las imágenes a un entrenado previamente profunda modelo de aprendizaje(por ejemplo, GoogleNet), en lugar de utilizar la red neuronal de la decisión (final) de la capa para hacer clasificaciones, usar capa anterior(s)’ datos como características a entrenar el clasificador.

    OpenCV y Google Net:
    http://docs.opencv.org/trunk/d5/de7/tutorial_dnn_googlenet.html

    OpenCV y SVM:
    http://docs.opencv.org/2.4/doc/tutorials/ml/introduction_to_svm/introduction_to_svm.html

  19. 6

    Como alternativa a todas estas soluciones, usted puede entrenar a su propio clasificador y hacer que su aplicación robusto a errores. Como ejemplo, puede utilizar Haar Formación, proporcionando un buen número de positivos y negativos de las imágenes de su destino.

    Puede ser útil para extraer sólo las latas y puede ser combinado con la detección de objetos transparentes.

  20. 3

    Hay una visión de computadora paquete llamado HALCON de MVTec cuyas demostraciones podría dar un buen algoritmo de ideas. Hay un montón de ejemplos similares a los de su problema con el que se puede ejecutar en modo demo y luego mirar a los operadores en el código y ver cómo llevarlas a la práctica existente de OpenCV operadores.

    He usado este paquete para que rápidamente prototipo de complejos algoritmos para este tipo de problemas y, a continuación, encontrar cómo llevarlas a la práctica mediante el uso de las funciones de OpenCV. En particular, para su caso, usted podría tratar de implementar en OpenCV la funcionalidad incrustado en el operador find_scaled_shape_model. Algunos operadores de punto para el trabajo científico con respecto a la implementación de algoritmos que pueden ayudar a encontrar la manera de hacer algo similar en OpenCV. Espero que esto ayude…

  21. 0

    Si usted está interesado en ser en tiempo real, entonces lo que necesitas es añadir en un pre-procesamiento de filtro para determinar lo que se escanea con el pesado-deber de cosas. Una buena rápido, muy en tiempo real, pre-procesamiento de filtro que te permitirá escanear cosas que son más propensos a ser una coca-cola, puede que no, antes de pasar a más dudoso de las cosas es algo como esto: la búsqueda de la imagen de la más grande de las manchas de color que son de una cierta tolerancia de distancia de la sqrt(pow(red,2) + pow(blue,2) + pow(green,2)) de su coca-cola. Empezar con una muy estricta tolerancia de color, y su forma de trabajo a más indulgente color de las tolerancias. A continuación, cuando el robot se ejecuta fuera de un tiempo asignado para el proceso del marco actual, se utiliza la actualidad se pueden encontrar botellas para sus propósitos. Por favor, tenga en cuenta que usted tendrá que ajustar los colores RGB en el sqrt(pow(red,2) + pow(blue,2) + pow(green,2)) para obtener de ellas la correcta.

    También, esto es gona parecer muy tonto, pero, usted, asegúrese de encender -oFast las optimizaciones del compilador cuando se compila su código de C?

  22. 0

    Las primeras cosas que me gustaría ver son de color como el ROJO , cuando se hace de ojos Rojos detección de una imagen – hay una cierta gama de colores para detectar , algunas de las características sobre las que teniendo en cuenta la zona circundante, así como la distancia desde el otro ojo, si de hecho es visible en la imagen.

    1: la Primera característica es de color Rojo y es muy dominante. Después de la detección de la Coca Cola en la Red hay varios elementos de interés
    1A: Cómo de grande es este área roja (que es la de la cantidad suficiente para hacer una determinación de un verdadero pueden o no – de 10 píxeles probablemente no sea suficiente),
    1B: ¿contiene el color de la Etiqueta – «Coca-Cola» o de la onda.
    1B1: Es suficiente para considerar una probabilidad alta de que se trata de una etiqueta.

    El punto 1 es una especie de atajo – pre-proceso en caso de que doe mocos existen en la imagen – pasar.

    Así que si ese es el caso, a continuación, puedo utilizar ese segmento de mi imagen y comenzar a mirar más de zoom de la zona en cuestión un poco – básicamente vistazo a los alrededores de la región /bordes…

    2: teniendo en cuenta lo anterior el área de la imagen de ID de d en 1 – verificar los puntos circundantes [bordes] del elemento en cuestión.
    R: hay lo que parece ser una lata de la parte superior o inferior de la plata?
    B: Una botella puede aparecer transparente , pero también podrían hacerlo una mesa de cristal – por lo que hay un vidrio de mesa/estante o en un área transparente – si es así hay varias posibles sale. Una Botella PUEDE tener una tapa de color rojo, puede que no, pero se debe tener la forma de la botella /de rosca de los tornillos, o una tapa.
    C: Incluso si esto falla a y B, que todavía puede ser un parcial..
    Esto es más complejo cuando es parcial debido a un parcial de botella /parcial puede ser el mismo , por lo que algunos más en el procesamiento de la medición de la Red de la región de borde a borde.. pequeña botella puede ser similar en tamaño ..

    3: Después del análisis anterior que es cuando miraba las letras y el logo de onda – porque me puede orientar mi búsqueda de algunas de las letras en las palabras, Ya que puede no tener todo el texto debido a no contar con todas las de la can, la onda sería alinear en ciertos puntos para el texto (distancia prudente), así que puede buscar que la probabilidad y saber qué cartas deben existir en ese punto de la onda a una distancia x.

  23. 0

    Tal vez demasiados años de retraso, pero, sin embargo, una teoría para tratar de.

    La proporción del rectángulo delimitador de logotipo rojo de la región a la dimensión global de la botella/lata es diferente. En el caso de la Can, debe ser 1:1, mientras que será diferente de la de la botella (con o sin tapa).
    Esto debería hacer que sea fácil distinguir entre los dos.

    Actualización:
    La curvatura horizontal del logo de la región será diferente entre la lata y la Botella debido a sus respectivos diferencia de tamaño. Esto podría ser especialmente útil si el robot tiene que recoger lata/botella, y que decida el agarre en consecuencia.

Dejar respuesta

Please enter your comment!
Please enter your name here