bulatko's picture
adding real MK
55e58d1
raw
history blame
1.31 kB
import numpy as np
def judge_bbox_overlay(bbox_1, bbox_2):
for i in range(3):
if bbox_1[0][i] > bbox_2[1][i] or bbox_2[0][i] > bbox_1[1][i]:
return False
return True
def denoise(pcd):
labels = np.array(pcd.cluster_dbscan(eps=0.04, min_points=4)) + 1 # -1 for noise
mask = np.ones(len(labels), dtype=bool)
count = np.bincount(labels)
# remove component with less than 20% points
for i in range(len(count)):
if count[i] < 0.2 * len(labels):
mask[labels == i] = False
remain_index = np.where(mask)[0]
pcd = pcd.select_by_index(remain_index)
pcd, index = pcd.remove_statistical_outlier(nb_neighbors=20, std_ratio=2.0)
remain_index = remain_index[index]
return pcd, remain_index
def filter_boundary(depth, delta=0.05):
remove_mask = np.zeros(depth.shape).astype(bool)
delta_depth_1 = np.abs(depth[1:, :] - depth[:-1, :])
delta_depth_2 = np.abs(depth[:, 1:] - depth[:, :-1])
remove_mask[1:, :] = remove_mask[1:, :] | (delta_depth_1 > delta)
remove_mask[:-1, :] = remove_mask[:-1, :] | (delta_depth_1 > delta)
remove_mask[:, 1:] = remove_mask[:, 1:] | (delta_depth_2 > delta)
remove_mask[:, :-1] = remove_mask[:, :-1] | (delta_depth_2 > delta)
depth[remove_mask] = 0
return depth