2014-04-29 2 views
1

Je dois être en mesure de détecter les bords d'une carte, actuellement cela fonctionne quand l'arrière-plan est non perturbateur et meilleur quand il contraste mais fonctionne toujours très bien sur un arrière-plan non contrasté. Le problème se produit lorsque la carte est sur un fond perturbateur, le filtre bilatéral laisse trop de bruit et provoque une détection de bord inexacte.Filtre bilatéral adaptatif pour préserver les bords

Voici le code que je utilise:

bilateralFilter(imgGray, detectedEdges, 0, 175, 3, 0); 
Canny(detectedEdges, detectedEdges, 20, 65, 3); 

dilate(detectedEdges, detectedEdges, Mat::ones(3,3,CV_8UC1)); 

La imgGray étant la version en niveaux de gris de l'image originale.

Voici quelques tests sur un fond perturbateur et les résultats (contact information déformée dans toutes les images):

carte de couleur:

Résultat:

enter image description here

Et voici une carte blanche:

enter image description here

Résultats:

enter image description here

Quelqu'un peut-il me dire comment je peux préserver les bords de la carte, peu importe l'arrière-plan, la couleur tout en supprimant le bruit?

+0

ne peut pas calculer les bords de l'image en niveaux de gris? peut-être que vous pouvez essayer de travailler sur le canal de teinte? – Micka

+1

J'ai essayé d'utiliser le canal hue comme entrée pour le filtre bilatéral et canny, ce qui donne de très bons résultats pour la carte bleue, mais de mauvais résultats pour la carte blanche. Mais je pense que l'astuce consistera à considérer les informations de couleur dans votre détection de contours, aussi! – Micka

Répondre

1

Trouver les bords à l'aide canny que vous êtes déjà en train de faire, puis trouver le contour dans l'image et trouver le rectangle using bounding box approprié et appliquer un certain seuil sur l'occupation et les dimensions du rectangle. Cela devrait réduire à zéro votre rectangle, c'est-à-dire les bords de votre carte et le prendre comme ROI sur lequel vous pouvez continuer à travailler.

+1

Down-Voter devrait expliquer quand ils votent en bas. Ce n'est pas à propos de ma réponse mais ça ira mieux. –

+0

Mon pense, vous devez expliquer votre pense avec vos codes. Parce que décevoir des réponses comme les vôtres qui cherchent des solutions. –

+0

Lol, vous pouvez avoir raison Peut, mais je ne veux pas cuillère nourrir, ce sont des constructions très basiques et peuvent être trouvés sur google facilement. Quoi qu'il en soit, bonne journée :). –

Questions connexes