opencv3.0 - Python2.7/OpenCV3.3: error in disparity map while using StereoBM_create in python -
i using opencv 3.3 in python 2.7 create disparity map. read ans1 ans2 ans3, no help. follow below steps:
- upload camera intrinsic , extrinsic matrices. uploaded rotation , translation matrices too.
- uploaded left , right images , use
cv2.stereorectify
p1,p2,r1 , r2. - computes undistort , rectify maps using
cv2.initundistortrectifymap
. - use
cv2.remap
rectified images. - use
cv2.stereobm_create
block matching. - and finally, compute disparity.
but disparity map full of noises. nothing clear. tried changing blocksize no help.
my code below:
import cv2 import numpy np import matplotlib.pyplot plt cameramatrixl = np.load('mtx_left.npy') distcoeffsl = np.load('dist_left.npy') cameramatrixr = np.load('mtx_right.npy') distcoeffsr = np.load('dist_right.npy') r = np.load('r.npy') t = np.load('t.npy') imgleft = cv2.imread('d:\python/triangulate in 3 d\left120.jpg',0) imgright = cv2.imread('d:\python/triangulate in 3 d/right120.jpg',0) r1,r2,p1,p2,q,validpixroi1, validpixroi2 = cv2.stereorectify(cameramatrixl,distcoeffsl,cameramatrixr,distcoeffsr,(640,480),r,t,alpha=0) #computes undistort , rectify maps mapxl, mapyl = cv2.initundistortrectifymap(cameramatrixl, distcoeffsl, r1, p1, (640,480), cv2.cv_32fc1) mapxr, mapyr = cv2.initundistortrectifymap(cameramatrixr, distcoeffsr, r2, p2, (640,480), cv2.cv_32fc1) dstl = cv2.remap(imgleft, mapxl, mapyl,cv2.inter_linear) dstr = cv2.remap(imgright, mapxr, mapyr,cv2.inter_linear) #cv2.imwrite('left.png',dstl) #cv2.imwrite('right.png',dstr) stereo = cv2.stereobm_create(numdisparities=16, blocksize=15) disparity = stereo.compute(dstl,dstr) plt.imshow(disparity,'gray') plt.show()
various matrices , images used can downloaded here. also, want mention 1 thing here translation matrix come t = np.array([[-94.52],[-0.76],[24.45]])
can not 24.45 mm because set both cameras parallel. so, check factor changed t t = np.array([[-94.52],[-0.76],[0.45]])
got same result.
how can disparity map. calibrated cameras many times not getting disparity map. reprojection error both cameras comes out below 0.02 pixels.
thanks.
Comments
Post a Comment