Habile de Détection de contours à l'aide de Traitement
Je suis à la recherche d'un copier coller de la mise en œuvre de Savant Détection de contours dans le traitement de la langue. Je n'ai aucune idée sur le traitement des Images et très peu d'indices sur le Traitement, si je comprends java assez bien.
Certains traitement expert me dire si il existe un moyen de mise en œuvre de cette http://www.tomgibara.com/computer-vision/CannyEdgeDetector.java en cours de traitement?
- Il sera l'un des principaux travaux-port le code, mais il est possible d'accéder et de modifier les pixels dans le Traitement: processing.org/learning/topics/edgedetection.html (avec la permission de Google)
Vous devez vous connecter pour publier un commentaire.
J'ai passé un peu de temps avec le Gibara Habile mise en œuvre et je suis plutôt d'accord avec Settembrini du commentaire ci-dessus; en outre à un besoin de changer la mise en œuvre du Noyau Gaussien génération.
La Gibara Savant utilise:
(g1 + g2 + g3) /3f /(2f * (float) Math.PI * kernelRadius * kernelRadius)
Le calcul de la moyenne sur un pixel (+-0.5 pixels) dans
(g1 + g2 + g3) /3f
est grand, mais le bon calcul de l'écart sur le fond de la moitié de l'équation pour des dimensions est:(g1 + g2 + g3) /3f /(Math.sqrt(2f * (float) Math.PI) * kernelRadius)
L'écart-type
kernelRadius
sigma dans l'équation suivante:Seule la direction de gauss
Je suis en supposant que Gibara est de tenter de mettre en œuvre les deux dimensions de gauss à partir de l'équation suivante: Deux dimensions gaussien où le produit de convolution est le produit direct de chaque gaussienne. Alors que c'est probablement possible et le plus concis, le code suivant correctement de convolution dans deux directions ci-dessus, la détermination des écarts:
NB: le
yConv[]
est maintenant le bidirectionnel de convolution, de sorte que le gradient suivant Sobel calculs sont comme suit:Gibara est très soigné, la mise en œuvre de la non-suppression maximale, il faut que ces gradients être calculé séparément, cependant, si vous souhaitez afficher une image avec ces gradients on peut somme utilisant Euclidienne ou de Manhattan distances, le Euclidienne ressemblerait donc:
Espère que cette aide, tout est dans l'ordre et toutes mes excuses pour mon code! Critique de la plupart de bienvenue
En plus de Favonius de réponse, vous pouvez essayer Greg OpenCV bibliothèque de Traitement d' que vous pouvez maintenant installer facilement via Dessin > Importer la Bibliothèque... > Ajouter à la Bibliothèque... et sélectionnez OpenCV pour le Traitement
Après l'installation de la bibliothèque, vous pouvez avoir un jeu avec le FindEdges exemple:
Juste que je note de côté. J'ai étudié la Gibara Habile mise en œuvre il y a quelques temps et a trouvé quelques défauts. E. g. il sépare le Gauss-Filtrage en 1d filtres dans les directions x et y (qui est ok et efficace en tant que tel), mais il ne s'applique pas deux passes de ces filtres (l'un après l'autre), mais s'applique uniquement SobelX à la x-first-pass-Gauss et SobelY à l'axe de la première étape de Gauss, ce qui bien sûr conduit à la faible qualité des dégradés. Attention donc simplement par copier-delà de ce code.