Python cv2.StereoSGBM_create() Examples
The following are 7
code examples of cv2.StereoSGBM_create().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
cv2
, or try the search function
.
Example #1
Source File: keyframes.py From pyslam with MIT License | 8 votes |
def compute_disparity_pyramid(self): self.disparity = [] stereo = cv2.StereoBM_create() # stereo = cv2.StereoSGBM_create(minDisparity=0, # numDisparities=64, # blockSize=11) # Compute disparity at full resolution and downsample disp = stereo.compute(self.im_left, self.im_right).astype(float) / 16. for pyrlevel in range(self.pyrlevels): if pyrlevel == 0: self.disparity = [disp] else: pyr_factor = 2**-pyrlevel # disp = cv2.pyrDown(disp) # Applies a large Gaussian blur # kernel! disp = disp[0::2, 0::2] self.disparity.append(disp * pyr_factor)
Example #2
Source File: StereoMatching.py From ImageProcessingProjects with MIT License | 7 votes |
def stereo_match(imgL, imgR): # disparity range is tuned for 'aloe' image pair window_size = 15 min_disp = 16 num_disp = 96 - min_disp stereo = cv2.StereoSGBM_create(minDisparity=min_disp, numDisparities=num_disp, blockSize=16, P1=8 * 3 * window_size ** 2, P2=32 * 3 * window_size ** 2, disp12MaxDiff=1, uniquenessRatio=10, speckleWindowSize=150, speckleRange=32 ) # print('computing disparity...') disp = stereo.compute(imgL, imgR).astype(np.float32) / 16.0 # print('generating 3d point cloud...',) h, w = imgL.shape[:2] f = 0.8 * w # guess for focal length Q = np.float32([[1, 0, 0, -0.5 * w], [0, -1, 0, 0.5 * h], # turn points 180 deg around x-axis, [0, 0, 0, -f], # so that y-axis looks up [0, 0, 1, 0]]) points = cv2.reprojectImageTo3D(disp, Q) colors = cv2.cvtColor(imgL, cv2.COLOR_BGR2RGB) mask = disp > disp.min() out_points = points[mask] out_colors = colors[mask] append_ply_array(out_points, out_colors) disparity_scaled = (disp - min_disp) / num_disp disparity_scaled += abs(np.amin(disparity_scaled)) disparity_scaled /= np.amax(disparity_scaled) disparity_scaled[disparity_scaled < 0] = 0 return np.array(255 * disparity_scaled, np.uint8)
Example #3
Source File: test-sgbm.py From dfc2019 with MIT License | 6 votes |
def sgbm(rimg1, rimg2): rimg1 = cv2.cvtColor(rimg1, cv2.COLOR_RGB2GRAY) rimg2 = cv2.cvtColor(rimg2, cv2.COLOR_RGB2GRAY) maxd = DMAX_SEARCH window_size = 5 left_matcher = cv2.StereoSGBM_create( minDisparity=-maxd, numDisparities=maxd * 2, blockSize=5, P1=8 * 3 * window_size ** 2, P2=32 * 3 * window_size ** 2, disp12MaxDiff=1, uniquenessRatio=15, speckleWindowSize=0, speckleRange=2, preFilterCap=63, mode=cv2.STEREO_SGBM_MODE_SGBM_3WAY ) right_matcher = cv2.ximgproc.createRightMatcher(left_matcher) lmbda = 8000 sigma = 1.5 wls_filter = cv2.ximgproc.createDisparityWLSFilter(matcher_left=left_matcher) wls_filter.setLambda(lmbda) wls_filter.setSigmaColor(sigma) displ = left_matcher.compute(rimg1, rimg2) dispr = right_matcher.compute(rimg2, rimg1) displ = np.int16(displ) dispr = np.int16(dispr) disparity = wls_filter.filter(displ, rimg1, None, dispr) / 16.0 return disparity
Example #4
Source File: keyframes.py From pyslam with MIT License | 6 votes |
def compute_depth_pyramid(self): self.depth = [] stereo = cv2.StereoBM_create() # stereo = cv2.StereoSGBM_create(minDisparity=0, # numDisparities=64, # blockSize=11) # Compute disparity at full resolution and downsample depth = self.data[1] for pyrlevel in range(self.pyrlevels): if pyrlevel == 0: self.depth = [depth] else: pyr_factor = 2**-pyrlevel depth = depth[0::2, 0::2] self.depth.append(depth)
Example #5
Source File: test-mvs.py From dfc2019 with MIT License | 5 votes |
def sgbm(rimg1, rimg2): # run SGM stereo matching with weighted least squares filtering print('Running SGBM stereo matcher...') rimg1 = cv2.cvtColor(rimg1, cv2.COLOR_BGR2GRAY) rimg2 = cv2.cvtColor(rimg2, cv2.COLOR_BGR2GRAY) maxd = DMAX_SEARCH print('MAXD = ', maxd) window_size = 5 left_matcher = cv2.StereoSGBM_create( minDisparity=-maxd, numDisparities=maxd * 2, blockSize=5, P1=8 * 3 * window_size ** 2, P2=32 * 3 * window_size ** 2, disp12MaxDiff=1, uniquenessRatio=15, speckleWindowSize=0, speckleRange=2, preFilterCap=63, mode=cv2.STEREO_SGBM_MODE_SGBM_3WAY ) right_matcher = cv2.ximgproc.createRightMatcher(left_matcher) lmbda = 8000 sigma = 1.5 wls_filter = cv2.ximgproc.createDisparityWLSFilter(matcher_left=left_matcher) wls_filter.setLambda(lmbda) wls_filter.setSigmaColor(sigma) displ = left_matcher.compute(rimg1, rimg2) dispr = right_matcher.compute(rimg2, rimg1) displ = np.int16(displ) dispr = np.int16(dispr) disparity = wls_filter.filter(displ, rimg1, None, dispr) / 16.0 return disparity # read IMD file with sensor azimuth and elevation values
Example #6
Source File: stereo_matcher_app.py From cvcalib with Apache License 2.0 | 5 votes |
def disparity2(self): #matcher = cv2.StereoSGBM_create(minDisparity=0, numDisparities=384, blockSize=7, P1=1176, P2=4704, # preFilterCap=16, uniquenessRatio=10) # matcher = cv2.StereoSGBM_create(minDisparity=0, numDisparities=512, blockSize=7, P1=2352, P2=9408, # preFilterCap=16) matcher = cv2.StereoSGBM_create(minDisparity=0, numDisparities=384, blockSize=7, P1=2352, P2=18816, #4704 preFilterCap=16) disparity = matcher.compute(self.images[0], self.images[1]) self.process_output(disparity)
Example #7
Source File: stereo_depth.py From stereoDepth with Apache License 2.0 | 5 votes |
def depth_map(imgL, imgR): """ Depth map calculation. Works with SGBM and WLS. Need rectified images, returns depth map ( left to right disparity ) """ # SGBM Parameters ----------------- window_size = 3 # wsize default 3; 5; 7 for SGBM reduced size image; 15 for SGBM full size image (1300px and above); 5 Works nicely left_matcher = cv2.StereoSGBM_create( minDisparity=-1, numDisparities=5*16, # max_disp has to be dividable by 16 f. E. HH 192, 256 blockSize=window_size, P1=8 * 3 * window_size, # wsize default 3; 5; 7 for SGBM reduced size image; 15 for SGBM full size image (1300px and above); 5 Works nicely P2=32 * 3 * window_size, disp12MaxDiff=12, uniquenessRatio=10, speckleWindowSize=50, speckleRange=32, preFilterCap=63, mode=cv2.STEREO_SGBM_MODE_SGBM_3WAY ) right_matcher = cv2.ximgproc.createRightMatcher(left_matcher) # FILTER Parameters lmbda = 80000 sigma = 1.3 visual_multiplier = 6 wls_filter = cv2.ximgproc.createDisparityWLSFilter(matcher_left=left_matcher) wls_filter.setLambda(lmbda) wls_filter.setSigmaColor(sigma) displ = left_matcher.compute(imgL, imgR) # .astype(np.float32)/16 dispr = right_matcher.compute(imgR, imgL) # .astype(np.float32)/16 displ = np.int16(displ) dispr = np.int16(dispr) filteredImg = wls_filter.filter(displ, imgL, None, dispr) # important to put "imgL" here!!! filteredImg = cv2.normalize(src=filteredImg, dst=filteredImg, beta=0, alpha=255, norm_type=cv2.NORM_MINMAX); filteredImg = np.uint8(filteredImg) return filteredImg