MCPcopy Create free account
hub / github.com/DIVE128/DMVSNet / filter_depth

Function filter_depth

filter/pcd.py:244–361  ·  view source on GitHub ↗
(args, pair_folder, scan_folder, out_folder, plyfilename)

Source from the content-addressed store, hash-verified

242 return mask, depth_reprojected, x2d_src, y2d_src
243
244def filter_depth(args, pair_folder, scan_folder, out_folder, plyfilename):
245 num_stage = len(args.ndepths)
246
247 # the pair file
248 pair_file = os.path.join(pair_folder, "pair.txt")
249 # for the final point cloud
250 vertexs = []
251 vertex_colors = []
252
253 pair_data = read_pair_file(pair_file)
254 nviews = len(pair_data)
255
256 for ref_view, src_views in pair_data:
257
258 # src_views = src_views[:args.num_view]
259 # load the camera parameters
260 ref_intrinsics, ref_extrinsics = read_camera_parameters(
261 os.path.join(scan_folder, 'cams/{:0>8}_cam.txt'.format(ref_view)))
262 # load the reference image
263 ref_img = read_img(os.path.join(scan_folder, 'images/{:0>8}.jpg'.format(ref_view)))
264 # load the estimated depth of the reference view
265 ref_depth_est = read_pfm(os.path.join(out_folder, 'depth_est/{:0>8}.pfm'.format(ref_view)))[0]
266
267 # load the photometric mask of the reference view
268 confidence = read_pfm(os.path.join(out_folder, 'confidence/{:0>8}.pfm'.format(ref_view)))[0]
269 if os.path.exists(os.path.join(out_folder, 'confidence/{:0>8}_stage2.pfm'.format(ref_view))):
270 confidence2 = read_pfm(os.path.join(out_folder, 'confidence/{:0>8}_stage2.pfm'.format(ref_view)))[0]
271 confidence1 = read_pfm(os.path.join(out_folder, 'confidence/{:0>8}_stage1.pfm'.format(ref_view)))[0]
272 else:
273 confidence2=confidence1=confidence
274 photo_mask = np.logical_and(np.logical_and(confidence > args.conf[2], confidence2 > args.conf[1]), confidence1 > args.conf[0])
275
276 all_srcview_depth_ests = []
277 all_srcview_x = []
278 all_srcview_y = []
279 all_srcview_geomask = []
280
281 # compute the geometric mask
282 geo_mask_sum = 0
283 for src_view in src_views:
284 # camera parameters of the source view
285 src_intrinsics, src_extrinsics = read_camera_parameters(
286 os.path.join(scan_folder, 'cams/{:0>8}_cam.txt'.format(src_view)))
287 # the estimated depth of the source view
288 src_depth_est = read_pfm(os.path.join(out_folder, 'depth_est/{:0>8}.pfm'.format(src_view)))[0]
289
290 geo_mask, depth_reprojected, x2d_src, y2d_src = check_geometric_consistency(ref_depth_est, ref_intrinsics, ref_extrinsics,
291 src_depth_est,
292 src_intrinsics, src_extrinsics)
293 geo_mask_sum += geo_mask.astype(np.int32)
294 all_srcview_depth_ests.append(depth_reprojected)
295 all_srcview_x.append(x2d_src)
296 all_srcview_y.append(y2d_src)
297 all_srcview_geomask.append(geo_mask)
298
299 depth_est_averaged = (sum(all_srcview_depth_ests) + ref_depth_est) / (geo_mask_sum + 1)
300
301 # at least args.thres_view source views matched

Callers 1

pcd_filter_workerFunction · 0.70

Calls 7

printFunction · 0.85
read_pair_fileFunction · 0.70
read_camera_parametersFunction · 0.70
read_imgFunction · 0.70
read_pfmFunction · 0.70
save_maskFunction · 0.70

Tested by

no test coverage detected