kcml commited on
Commit
2469221
·
1 Parent(s): b41887b

avoid clean_pcd process large number of points; roll back to conservative version (retain noise cluster)

Browse files
Files changed (1) hide show
  1. handcrafted_solution.py +13 -9
handcrafted_solution.py CHANGED
@@ -775,16 +775,20 @@ def clean_gest(gest_seg_np):
775
  return gest_seg_np
776
 
777
  def clean_PCD(XYZ, rgb):
778
- db = DBSCAN(eps=150, min_samples=20).fit(XYZ)
779
- labels = db.labels_
780
- unique_labels = set(labels)
781
- core_samples_mask = np.zeros_like(labels, dtype=bool)
782
  center_thr = 500
783
- retain_class_mask = labels == -2
784
  largest_blob_size = 0
785
  largest_blob = 0
786
- lowest_z = 0
 
 
 
 
 
 
787
  #print('uni label:', len(unique_labels))
 
 
788
  if len(unique_labels) > 40 or len(unique_labels) == 1:
789
  return XYZ, rgb, lowest_z
790
 
@@ -797,11 +801,11 @@ def clean_PCD(XYZ, rgb):
797
 
798
  for k in unique_labels:
799
  class_member_mask = labels == k
800
- '''
801
  if k == -1:
802
  retain_class_mask = retain_class_mask | class_member_mask
803
  continue
804
- '''
805
  ''' center prior is not valid
806
  pt_k = XYZ[class_member_mask]
807
  Xmean = np.mean(pt_k[:,0])
@@ -813,7 +817,7 @@ def clean_PCD(XYZ, rgb):
813
  retain_class_mask = retain_class_mask | class_member_mask
814
  pt_k = XYZ[class_member_mask]
815
  lowest_z = min(pt_k[:,2])
816
- break
817
 
818
  XYZ = XYZ[retain_class_mask]
819
  rgb = rgb[retain_class_mask]
 
775
  return gest_seg_np
776
 
777
  def clean_PCD(XYZ, rgb):
778
+ lowest_z = 0
 
 
 
779
  center_thr = 500
 
780
  largest_blob_size = 0
781
  largest_blob = 0
782
+ # avoid memory issue
783
+ if len(XYZ) > 130000 or len(XYZ) < 20:
784
+ return XYZ, rgb, lowest_z
785
+ # clustering
786
+ db = DBSCAN(eps=150, min_samples=20).fit(XYZ)
787
+ labels = db.labels_
788
+ unique_labels = set(labels)
789
  #print('uni label:', len(unique_labels))
790
+ #core_samples_mask = np.zeros_like(labels, dtype=bool)
791
+ retain_class_mask = labels == -2
792
  if len(unique_labels) > 40 or len(unique_labels) == 1:
793
  return XYZ, rgb, lowest_z
794
 
 
801
 
802
  for k in unique_labels:
803
  class_member_mask = labels == k
804
+
805
  if k == -1:
806
  retain_class_mask = retain_class_mask | class_member_mask
807
  continue
808
+
809
  ''' center prior is not valid
810
  pt_k = XYZ[class_member_mask]
811
  Xmean = np.mean(pt_k[:,0])
 
817
  retain_class_mask = retain_class_mask | class_member_mask
818
  pt_k = XYZ[class_member_mask]
819
  lowest_z = min(pt_k[:,2])
820
+ #break
821
 
822
  XYZ = XYZ[retain_class_mask]
823
  rgb = rgb[retain_class_mask]