MCPcopy Create free account
hub / github.com/StevenWang30/R-PCC / QuantizationModule

Class QuantizationModule

utils/compress_utils.py:35–132  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

33
34
35class QuantizationModule:
36 def __init__(self, base_accuracy, level_kp_num=(30, 10, 3, 0), level_dacc=(0, 0.02, 0.04, 0.06),
37 ground_salience_level=2, feature_region=3, segments=8, sharp_num=4, less_sharp_num=8, flat_num=6,
38 uniform=True):
39 self.uniform = uniform
40 if uniform:
41 self.acc = base_accuracy
42 else:
43 ####################################################################################
44 # level_kp_num and level_dacc are enabled when non-uniform quantization. #
45 # level_kp_num: minimum number of key point in this salience level. #
46 # level_dacc: delta accuracy for this salience level. acc = base_acc + delta_acc. #
47 ####################################################################################
48 self.level_kp_num = np.array(level_kp_num)
49 self.acc = np.array([base_accuracy] * len(self.level_kp_num)) + np.array(level_dacc)
50 self.ground_level = ground_salience_level
51 self.feature_region = feature_region
52 self.segments = segments
53 self.sharp_num = sharp_num
54 self.less_sharp_num = less_sharp_num
55 self.flat_num = flat_num
56
57 def quantize_residual(self, residual, seg_idx, point_cloud=None, range_image=None):
58 if self.uniform:
59 residual_quantized = quantization_utils_cpp.uniform_quantize(seg_idx, residual, self.acc)
60 # # python version
61 # residual_collect = []
62 # cluster_num = np.max(seg_idx) + 1
63 # for m in range(cluster_num):
64 # if m == 1:
65 # # zero points.
66 # continue
67 # residual_collect.extend(residual[..., 0][np.where(seg_idx == m)])
68 # residual_quantized = np.rint(np.array(residual_collect) / self.acc).astype(np.int16)
69 salience_level = None
70 key_point_map = None
71 else:
72 feature_map, key_point_map = extract_features_without_ground(range_image, seg_idx,
73 self.feature_region, self.segments,
74 self.sharp_num, self.less_sharp_num,
75 self.flat_num)
76 # range_image, seg_idx, feature_region=3, segments=8, sharp_num=4, less_sharp_num=8, flat_num=6
77 (residual_quantized, salience_level) = quantization_utils_cpp.nonuniform_quantize(seg_idx,
78 residual, key_point_map,
79 self.level_kp_num,
80 self.acc,
81 self.ground_level)
82 # # python version
83 # cluster_num = np.max(seg_idx) + 1
84 # salience_level = np.ones(cluster_num, dtype=np.int32) * 3
85 #
86 # for cluster_id in range(cluster_num):
87 # if cluster_id == 0 or cluster_id == 1:
88 # continue
89 # cluster_idx = np.where(seg_idx == cluster_id)
90 # key_point_num = np.where(key_point_map[cluster_idx] > 0)[0].shape[0]
91 # cluster_points = point_cloud[cluster_idx]
92 # if cluster_points.shape[0] < 30:

Callers 4

compressFunction · 0.90
compress_datasetFunction · 0.90
decompress_datalistFunction · 0.90
decompressFunction · 0.90

Calls

no outgoing calls

Tested by

no test coverage detected