Stéréo Disparité de génération de carte
Je suis en train de travailler sur KITTI ensemble de données, je prends les 2 images et de trouver la disparité pour obtenir 3D du nuage de points .Le problème auquel je suis confronté est que je ne suis pas en mesure d'obtenir une bonne disparité carte.Plus de la disparité de la valeur est inférieure à 0,1 .La disparité des valeurs entre 0 et 1 (ai-je besoin d'une mise à l'échelle).
Les paramètres de ma stéréo sont énumérés ci-dessous
cv::StereoBM sbm;
sbm.state->SADWindowSize = 9;
sbm.state->numberOfDisparities = 112;
sbm.state->preFilterSize = 5;
sbm.state->preFilterCap = 1;
sbm.state->minDisparity = 0;
sbm.state->textureThreshold = 5;
sbm.state->uniquenessRatio = 5;
sbm.state->speckleWindowSize = 0;
sbm.state->speckleRange = 20;
sbm.state->disp12MaxDiff = 64;
sbm(leftimage, rightimage,disp);
normalize(disp, disp8, 0.1, 255, CV_MINMAX, CV_8U);
Mon sentiment profond est que votre taille de la fenêtre est trop petite. Votre taille de la fenêtre est de 9 x 9, mais si vous regardez le déplacement sur la droite où vous verrez le panneau routier, je suis sûr que c'est beaucoup plus grand qu'un 9 pixels de la fenêtre. Avez-vous essayé d'augmenter votre taille de la fenêtre? Qu'en 15? 25?
Le deuxième problème est que presque tous les disparités valeurs sont moins de 1.Qui ne devrait pas être le cas
Avez-vous modifier la taille de la fenêtre?
ouais ....a une meilleure image lorsque je l'ai utilisé 15 ....a un pire image lorsque utilisé 25 ....j'ai donc sicked avec 15.....merci ...je l'écoute tous le paramètre à l'aide de la boîte à outils téléchargé à partir de ce lien martinperis.com/stereobmtuner/stereoBMTuner-1.0.tgz
Pas de problème. Ouais, quand vous faites disparité avec fenêtres coulissantes, vous devez trouver la fenêtre de droite. Trop petit signifie que vous n'aurez pas compte de la disparité.... et une trop grande signifie que vous pouvez introduire de fausses informations dans la comparaison de windows. Même si l'utilisation des fenêtres coulissantes sont rapides, ils ne donnent pas de meilleurs résultats. Il y a eu un certain travail de manière adaptative la détermination de la taille de la fenêtre. Vérifier Kanade et Okutomi: cs.cmu.edu/~ph/869/documents/kanade-okutomi.pdf - de toute façon, je vais à la façon hors sujet. Heureux que vous avez réussi à le faire fonctionner!
Le deuxième problème est que presque tous les disparités valeurs sont moins de 1.Qui ne devrait pas être le cas
Avez-vous modifier la taille de la fenêtre?
ouais ....a une meilleure image lorsque je l'ai utilisé 15 ....a un pire image lorsque utilisé 25 ....j'ai donc sicked avec 15.....merci ...je l'écoute tous le paramètre à l'aide de la boîte à outils téléchargé à partir de ce lien martinperis.com/stereobmtuner/stereoBMTuner-1.0.tgz
Pas de problème. Ouais, quand vous faites disparité avec fenêtres coulissantes, vous devez trouver la fenêtre de droite. Trop petit signifie que vous n'aurez pas compte de la disparité.... et une trop grande signifie que vous pouvez introduire de fausses informations dans la comparaison de windows. Même si l'utilisation des fenêtres coulissantes sont rapides, ils ne donnent pas de meilleurs résultats. Il y a eu un certain travail de manière adaptative la détermination de la taille de la fenêtre. Vérifier Kanade et Okutomi: cs.cmu.edu/~ph/869/documents/kanade-okutomi.pdf - de toute façon, je vais à la façon hors sujet. Heureux que vous avez réussi à le faire fonctionner!
OriginalL'auteur shashank bhushan | 2015-01-09
Vous devez vous connecter pour publier un commentaire.
La disparité de la carte que vous avez "semble" bon pour le Bloc Correspondant.
De bloc Correspondant est la méthode la plus basique pour obtenir la disparité des cartes. C'est une méthode qui calcule la disparité estimation via une attaque par force brute (modulo le filtrage de opencv). D'où sa sortie est limitée en termes de précision et est généralement bruyant.
Comme d'autres l'ont mentionné, vous pouvez ajuster la taille de la fenêtre afin d'améliorer les résultats légèrement, mais cela ne fera pas la disparité nettement mieux.
Regarder la stéréo de l'évaluation sur la KITTI de référence et sélectionnez une mesure plus précise de l'algorithme de si vous avez. OpenCV est une mise en œuvre de la SGM, qui produit plus lisse disparités. La qualité souhaitée de la disparité des cartes dépend de votre application. Dans certains cas de bloc correspondant est suffisant. Pour d'autres, il pourrait ne pas l'être.
Rappelez-vous, la définition d'une disparité est: la différence entre la coordonnée x d'un pixel dans l'image de gauche et de son pixel correspondant dans l'image de droite. Qui est, l'unité de disparité est "pixels".
De grandes disparités, la moyenne de plus près des objets. Lorsque vous redimensionnez l'image pour l'afficher, de grandes disparités apparaissent plus lumineux. Par exemple, le signe sur la route est plus proche de la caméra et il apparaît plus clair que les pixels loin sur la route.
Votre disparité des valeurs ne sont pas censés être entre 0 et 1. Vous êtes à la mise à l'échelle l'image pour l'afficher en tant que uint8 qui est ok pour l'affichage, mais ne convient pas à l'utilisation de la disparité réelle de la mesure.
Dans OpenCV, le comportement par défaut est de produire une disparité de la carte signée court obtenu par la multiplication de sous-pixel déplace avec 16. Pour obtenir la vraie disparité des valeurs, vous divisez opencv est sortie le 16 et le convertir en float.
Vous pouvez faire quelque chose comme ceci:
ou
Ou, vous pouvez appeler reprojectImageTo3D pour obtenir un nuage de points donné l'estimation de la disparité de la carte stéréo et d'étalonnage.
Remarque, si vous essayez d'afficher true_map via imshow, vous ne verrez pas quelque chose de significatif.
Bonne chance,
OriginalL'auteur bendervader