2010-06-01 15 views
8

Estoy investigando la posibilidad del procesamiento de imágenes para identificar ciertos objetos y también contarlos en una imagen.Cuenta el número de objetos en una Imagen

Me darán una imagen y necesito identificar el número de cajas presentes en esa imagen.

¿Alguien tiene alguna experiencia con alguna de las bibliotecas de Machine Vision/Image Processing como ImageJ, Fiji, JAI, jMagick, Java Vision Toolkit? ¿Cuál crees que es el más adecuado para el trabajo? ¿Qué sugieren ustedes, chicos? Si las API se pueden usar desde Java, sería mejor. Gracias.

Edit: Estoy tratando con cajas de almacenamiento marrón. Sí, estoy hablando de fotos regulares. La fuente suele ser una imagen de teléfono móvil.

Edit2: Lamento que la respuesta haya sido seleccionada automáticamente. : (

+1

Es una inversión, pero MATLAB tiene funciones para hacer esto. Ver, p. http://blogs.mathworks.com/steve/2006/06/02/cell-segmentation/ –

+0

¿Qué tan abstracto es este problema de reconocimiento de patrones? ¿Qué quieres decir con "cajas"? ¿Estás lidiando con fotografías regulares? – Amichai

+2

danos un ejemplo de foto. – ton4eg

Respuesta

8

Si debe apegarse a Java, igual puede usar OpenCV.

  1. Si son solo cajas, puede usar Hough Transforms para detectarlas.
  2. Puede usar OpenSURF para detectar teléfonos en función de las imágenes de origen que le proporcione.
  3. No creo que esto sea factible en su caso: HAAR Cascades. Puede crear un clasificador de HAAR personalizado, pero el proceso de capacitación puede llevar bastante tiempo.

HTH, George

10

que nunca han utilizado las bibliotecas que enumeró pero he utilizado OpenCV

OpenCV es una biblioteca de visión por ordenador bien apoyado y demostrado Se ha construido en características para contar el número de formas primitivas de una imagen.. Está escrito en C++ pero puede crear un envoltorio pequeño para ser invocado a través de JNI

RoboRealm es otro sistema probado de visión por computadora utilizado por los aficionados a robótica. Es un producto comercial de código cerrado que utiliza una API de control basada en socket.

http://opencv.willowgarage.com/wiki/FullOpenCVWiki

http://www.roborealm.com/index.php

5

En Java, hay varios proyectos que amplían la API Java Advanced Imaging para proporcionar la visión por ordenador:

  • JavaVis
  • procesamiento de imágenes en Java + IPJ - extensiones de visión por ordenador para JAI
  • Java Vision Toolkit - JVT (EDIT: opps, esto se menciona en la pregunta.)

Hay un paper para JavaVis que presenta la biblioteca, compara y contrasta con estas otras dos bibliotecas mencionadas.

JavaVis tiene estas características:

  • manijas imágenes 2D y 3D (3D siendo el más relevante en este caso)
  • Tiene una interfaz gráfica de usuario para obtener resultados potenciales inspeccionando
  • Matlab imagen de exportación

También para java es NeatVision. A diferencia de los demás, la documentación es claramente visible para este proyecto.

Ninguno de estos proyectos le ofrecerá una solución llave en mano simple. Deberá comprender cómo funciona la visión por computadora y crear una secuencia de pasos de procesamiento en las fotografías para ayudar a obtener los mejores resultados de los algoritmos de visión. Con ese fin, JavaVis quizás sea más útil, ya que está dirigido a la enseñanza de la visión por computadora.

1

¿Está dispuesto a desarrollar su propio código para eso? Existen varias técnicas que pueden aplicarse y ajustarse a su problema específico, pero nunca utilicé una biblioteca empaquetada, siempre desarrollé mi propio código. Puedo proporcionar referencias si estás interesado.

+0

Estaría muy interesado. Gracias. – unj2

5

Si no está hablando de procesamiento de imágenes en tiempo real, puede escribir una API en Amazon Mechanical Turk.

+0

Gran solución de pensamiento lateral. Y para ciertos parámetros uno de los más baratos y más confiables también. – MZB

+0

foarte tare :)! +1 –

Cuestiones relacionadas