J'utilise l'opérateur sobel pour détecter les bords dans une image en niveaux de gris avec EmguCV 3.0 (le Wrapper .NET pour OpenCV).OpenCV: Sobel filtre pas invariant de rotation
Le code J'utilise est
Image<Gray, byte> gray = new Image<Gray, byte>(@"C:\gray.bmp");
Image<Gray, float> sobel = gray.Sobel(0, 1, 3).Add(gray.Sobel(1, 0, 3)).AbsDiff(new Gray(0.0));
Ceci est l'image prétraitée (gris)
Et ce que je sors (Sobel)
Comme vous pouvez le voir, les bords en haut à droite et en bas à gauche sont très faibles. J'ai d'abord pensé que cela pouvait avoir quelque chose à voir avec l'image originale, alors je l'ai fait pivoter de 180 degrés et j'ai refait le filtre sobel. Le résultat a toujours des bords très faibles en haut à droite et en bas à gauche (malheureusement, je ne suis pas autorisé à poster plus de deux liens ici, donc je ne peux pas vous le montrer).
Alors Ma question est: Est-ce un bug, ou est-ce que j'utilise le filtre Sobel? Ne devrait-il pas être invariant en rotation, lorsqu'il est exécuté en deux dimensions? Et comment puis-je le réparer, pour voir ces deux bords aussi forts que les autres?
L'opérateur sobel, appliqué à l'image pivotée: http://i.stack.imgur.com/U7QCF.jpg (encore faible bords en haut à droite et en bas à gauche) – derjan
Pourquoi ne pas créer votre propre filtre? http://docs.opencv.org/doc/tutorials/imgproc/imgtrans/filter_2d/filter_2d.html – William