2010-06-01 19 views
8

J'étudie la possibilité de traitement d'image pour identifier certains objets et aussi les compter dans une image.Compter le nombre d'objets dans une image

On me donnera une image et je dois identifier le nombre de boîtes présentes dans cette image.

Quelqu'un a-t-il de l'expérience avec des bibliothèques de traitement d'images/de vision industrielle comme ImageJ, Fidji, JAI, jMagick, Java Vision Toolkit? Selon vous, lequel est le mieux adapté au travail? que proposez-vous les gars? Si les API peuvent être utilisées à partir de Java, ce serait mieux. Je vous remercie.

Éditer: J'ai affaire à des boîtes marron d'entrepôt. Oui, je parle de photos régulières. La source est généralement une photo de téléphone portable.

Éditer2: Je suis désolé que la réponse soit auto-sélectionnée. : (

+1

C'est un investissement, mais MATLAB a des fonctions pour le faire. Voir, par exemple. http://blogs.mathworks.com/steve/2006/06/02/cell-segmentation/ –

+0

À quel point ce problème de reconnaissance de modèle est-il abstrait? Que voulez-vous dire par "boîtes"? Avez-vous affaire à des photographies régulières? – Amichai

+2

Donnez-nous un exemple de photo. – ton4eg

Répondre

8

Si vous devez rester sur Java, vous pouvez toujours utiliser OpenCV.

  1. Si ce ne sont que des cases, vous pouvez utiliser Hough Transforms pour les détecter.
  2. Vous pouvez utiliser OpenSURF pour détecter les téléphones en fonction des images source que vous y alimentez. Ne pensez pas que ce serait faisable dans votre cas: HAAR Cascades. Vous pouvez créer un clasificateur HAAR personnalisé, mais le processus de formation peut prendre beaucoup de temps.

HTH, George

10

Je n'ai jamais utilisé les bibliothèques que vous avez énumérés, mais j'ai utilisé OpenCV

OpenCV est une bibliothèque de vision informatique bien pris en charge et éprouvée Il a construit dans les dispositifs pour compter le nombre de formes primitives dans une image.. Il est écrit en C++ mais vous pouvez créer un petit wrapper pour être invoqué via JNI

RoboRealm est un autre système de vision par ordinateur éprouvé utilisé par les amateurs de robotique.C'est un produit commercial à source fermée qui utilise une API de contrôle basée sur socket.

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

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

5

En Java, il y a plusieurs projets qui étendent l'API Java Advanced Imaging pour fournir une vision informatique:

  • JavaVis
  • traitement d'images en Java + IPJ - extensions de vision par ordinateur pour JAI
  • Java Vision Toolkit - JVT (EDIT:. opps, cela est mentionné dans la question)

Il existe un paper pour JavaVis qui introduit la bibliothèque, compare et contrastes avec ces deux autres bibliothèques mentionnées.

JavaVis a ces caractéristiques:

  • poignées images 2D et 3D (3D étant le plus pertinent dans ce cas)
  • a une interface graphique pour le contrôle des résultats potentiels
  • Matlab exportation d'images

Aussi pour java est NeatVision. Contrairement aux autres, la documentation est clairement visible pour ce projet.

Aucun de ces projets ne vous donnera une solution clé en main simple. Vous aurez besoin de comprendre comment la vision par ordinateur fonctionne, et de créer une séquence d'étapes de traitement sur les photos pour aider à obtenir les meilleurs résultats des algorithmes de vision. À cette fin, JavaVis peut-être plus utile, car il vise à enseigner la vision par ordinateur.

1

Êtes-vous prêt à développer votre propre code pour cela? Il existe plusieurs techniques qui peuvent être appliquées et adaptées à votre problème spécifique, mais je n'ai jamais utilisé une bibliothèque packagée, toujours développé mon propre code. Je peux fournir des références pour cela si vous êtes intéressé.

+0

Je serais très intéressé. Je vous remercie. – unj2

5

Si vous ne parlez pas de traitement d'image en temps réel, vous pouvez écrire une API à Amazon Mechanical Turk.

+0

Grande solution de pensée latérale. Et pour certains paramètres l'un des moins chers et des plus fiables aussi. – MZB

+0

foarte tare :)! +1 –