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:
Et voici une carte blanche:
Résultats:
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?
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
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