2010-03-02 7 views
3

Quelqu'un pourrait-il me commencé avec l'idée suivante:dessin Java 2D et objets d'édition sur une image et des formes détection à partir d'images

Je veux charger une image dans mon application java (java swing) (un plan d'étage ou plan). Supposons que l'image du plan d'étage comporte un fond blanc avec trois formes (un rectangle, un triangle et un cercle). Les formes ont une bordure noire.

Le programme devrait détecter ces formes et dessiner les 3 formes par-dessus. Par exemple: il détecte le rectangle et un nouveau rectangle sera dessiné au-dessus de ce rectangle à partir de l'image. Lorsque ce rectangle supplémentaire est dessiné, l'utilisateur devrait être capable de modifier ce rectangle et de faire des choses supplémentaires comme remplir le rectangle, modifier le style de bordure, ...

Par exemple: dans ce cas, des petits points ou des carrés sur les coins devrait être visible afin que nous puissions faire glisser/redimensionner/déplacer le rectangle. Un peu comme cette capture d'écran de Visual Studio: http://farm1.static.flickr.com/49/132219212_061a1300af_o.png

Est-ce que quelqu'un a des tutoriels pour cela? Est-ce que je manque des algorithmes java très utiles? etc...? Toutes les suggestions ou aide est la bienvenue

Tnx à l'avance

+0

Ceci est la vision par ordinateur. Il y a beaucoup de routines publiées (pas nécessairement en Java) pour détecter les lignes et autres formes. http://en.wikipedia.org/wiki/Edge_detection – Pool

Répondre

1

Eh bien, une méthode de la force brute de le faire serait de passer par les pixels dans l'image, voir api pour BufferedImage et détecter les formes par des pixels consécutifs de une certaine couleur. Je suis sûr qu'il existe une façon beaucoup plus efficace de le faire.

+0

Eh bien, j'avais ceci en tête mais cela ne marcherait que pour les lignes horizontales/verticales. Qu'en est-il d'une ellipse? – juFo

+0

Vous auriez besoin de trouver une heuristique approximative d'une sphère ou d'une forme circulaire, et recherchez-la lors de l'analyse des pixels. Je pense toujours qu'il existe une meilleure façon d'y parvenir, mais je ne peux rien penser pour le moment. Il y a plusieurs articles comme celui-ci (http://www.umiacs.umd.edu/~hankyu/shape_html/) qui traitent de ces problèmes. – broschb

+0

Cela semble un peu complexe (pour un débutant comme moi) broschb mais thnx de toute façon. Avez-vous trouvé un meilleur moyen? J'ai trouvé des choses sur la détection de bord canny mais je ne sais pas si c'est facile à implémenter. – juFo

1

Détecter correctement des formes dans une image numérisée qui pourrait souffrir de toutes sortes de problèmes (couleur, ppp, rotation, cisaillement). Même une image non numérisée peut être très difficile. Vous voudrez peut-être regarder en utilisant OpenCV dans Java.