2 votes

Mauvaise carte de disparité utilisant OpenCV

J'essaie de calculer une carte de disparité en utilisant openCV3 en python mais le résultat n'est pas satisfaisant. Je me suis assuré que la calibration et la rectification sont faites correctement :

rectification result

J'ai essayé la fonction de disparité dans Matlab en utilisant ces images rectifiées et les résultats étaient assez bons. Cependant, la sortie opencv ressemble à un tableau de Van Gogh :

disparity map .

Voici le code python relatif à la disparité :

block_matcher = cv2.StereoBM_create(numDisparities=16, blockSize=15)
disp = block_matcher.compute(rectified_l, rectified_r)

Il est intéressant de noter que la plage de disparité est de [-16,240], alors que je m'attends à ce qu'elle soit de [0,16] puisque j'ai défini numDisparities à 16. Ai-je mal compris le concept de numDisparities ? J'ai essayé de faire varier numDisparities et blockSize mais je n'ai pas obtenu d'amélioration significative.

Faites-moi savoir si vous avez des idées sur ce qui se passe.

1voto

vadbut Points 21

J'ai compris ce qui se passait et pourquoi Matlab était tellement plus performant. La carte de disparité dans mon post original a été obtenue en utilisant la méthode StereoBM de openCV, alors que Matlab utilise StereoSGBM. Après être passé à StereoSGBM, les résultats sont bien meilleurs et identiques à ceux que j'obtiens avec Matlab.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X