option to use global binning
This commit is contained in:
+18
-11
@@ -67,7 +67,7 @@ def get_bins(values, nr_of_bins):
|
|||||||
return bins
|
return bins
|
||||||
|
|
||||||
|
|
||||||
def generate_curvatures(folder, frame, neighbourhoods=[25], nr_of_labels=6):
|
def generate_curvatures(folder, frame, bins, neighbourhoods=[25], nr_of_labels=6):
|
||||||
id = frame.split('_')[0]
|
id = frame.split('_')[0]
|
||||||
frame_nr = int(frame.split('_')[1].split('.')[0])
|
frame_nr = int(frame.split('_')[1].split('.')[0])
|
||||||
|
|
||||||
@@ -98,20 +98,20 @@ def generate_curvatures(folder, frame, neighbourhoods=[25], nr_of_labels=6):
|
|||||||
cloud.add_scalar_field("curvature", ev=ev)
|
cloud.add_scalar_field("curvature", ev=ev)
|
||||||
curvature = np.array(cloud.points["curvature(" + str(neighbourhood+1) + ")"])
|
curvature = np.array(cloud.points["curvature(" + str(neighbourhood+1) + ")"])
|
||||||
|
|
||||||
bins = get_bins(curvature, nr_of_labels)
|
bins_local = bins[neighbourhood] if bins is not None else get_bins(curvature, nr_of_labels)
|
||||||
labels = np.linspace(0, bins.shape[0] - 2, bins.shape[0] - 1)
|
labels = np.linspace(0, bins_local.shape[0] - 2, bins_local.shape[0] - 1)
|
||||||
|
|
||||||
frame_labels = np.zeros((curvature.shape[0]), dtype=np.float32)
|
frame_labels = np.zeros((curvature.shape[0]), dtype=np.float32)
|
||||||
for j in range(bins.shape[0] - 2):
|
for j in range(bins_local.shape[0] - 2):
|
||||||
frame_labels[(curvature >= bins[j]) * (curvature < bins[j+1])] = labels[j]
|
frame_labels[(curvature >= bins_local[j]) * (curvature < bins_local[j+1])] = labels[j]
|
||||||
frame_labels[curvature >= bins[-2]] = labels[-1]
|
frame_labels[curvature >= bins_local[-2]] = labels[-1]
|
||||||
|
|
||||||
curvatures.append(frame_labels)
|
curvatures.append(frame_labels)
|
||||||
|
|
||||||
return curvatures
|
return curvatures
|
||||||
|
|
||||||
|
|
||||||
def visualize_curvature_labels(folder, frame, neighbourhoods):
|
def visualize_curvature_labels(folder, frame, bins, neighbourhoods):
|
||||||
id = frame.split('_')[0]
|
id = frame.split('_')[0]
|
||||||
frame_nr = frame.split('_')[1].split('.')[0]
|
frame_nr = frame.split('_')[1].split('.')[0]
|
||||||
|
|
||||||
@@ -119,7 +119,7 @@ def visualize_curvature_labels(folder, frame, neighbourhoods):
|
|||||||
_, faces = _maskFaces(np.zeros((14475,3)), F, mask)
|
_, faces = _maskFaces(np.zeros((14475,3)), F, mask)
|
||||||
verts = np.load(os.path.join(folder, 'mesh_posed', f'{id}_{frame_nr}.npz'))['mesh_posed'][mask,:]
|
verts = np.load(os.path.join(folder, 'mesh_posed', f'{id}_{frame_nr}.npz'))['mesh_posed'][mask,:]
|
||||||
|
|
||||||
curvature_labels_all = generate_curvatures(folder, frame, neighbourhoods)
|
curvature_labels_all = generate_curvatures(folder, frame, bins, neighbourhoods)
|
||||||
colors_binned_all = []
|
colors_binned_all = []
|
||||||
|
|
||||||
for curvature_labels in curvature_labels_all:
|
for curvature_labels in curvature_labels_all:
|
||||||
@@ -166,7 +166,7 @@ def visualize_curvature_labels(folder, frame, neighbourhoods):
|
|||||||
scene2_aspectmode='manual', scene2_aspectratio=dict(x=1, y=1, z=1),
|
scene2_aspectmode='manual', scene2_aspectratio=dict(x=1, y=1, z=1),
|
||||||
scene3_aspectmode='manual', scene3_aspectratio=dict(x=1, y=1, z=1),
|
scene3_aspectmode='manual', scene3_aspectratio=dict(x=1, y=1, z=1),
|
||||||
scene4_aspectmode='manual', scene4_aspectratio=dict(x=1, y=1, z=1),
|
scene4_aspectmode='manual', scene4_aspectratio=dict(x=1, y=1, z=1),
|
||||||
scene5_aspectmode='manual', scene5_aspectratio=dict(x=1, y=1, z=1),
|
# scene5_aspectmode='manual', scene5_aspectratio=dict(x=1, y=1, z=1),
|
||||||
)
|
)
|
||||||
helper = dict(xaxis = dict(nticks=4, range=[-1,1],),
|
helper = dict(xaxis = dict(nticks=4, range=[-1,1],),
|
||||||
yaxis = dict(nticks=4, range=[-1,1],),
|
yaxis = dict(nticks=4, range=[-1,1],),
|
||||||
@@ -175,7 +175,7 @@ def visualize_curvature_labels(folder, frame, neighbourhoods):
|
|||||||
scene2 = helper,
|
scene2 = helper,
|
||||||
scene3 = helper,
|
scene3 = helper,
|
||||||
scene4 = helper,
|
scene4 = helper,
|
||||||
scene5 = helper,
|
# scene5 = helper,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@@ -211,6 +211,13 @@ if __name__ == '__main__':
|
|||||||
# k_neighbours(k=25)
|
# k_neighbours(k=25)
|
||||||
|
|
||||||
folder = '/home/workspace/local-data/valid_skirt'
|
folder = '/home/workspace/local-data/valid_skirt'
|
||||||
|
bins = dict()
|
||||||
|
bins[10] = np.load(f'custom_data/train_bins_skirt_10.npy')
|
||||||
|
bins[25] = np.load(f'custom_data/train_bins_skirt.npy')
|
||||||
|
bins[100] = np.load(f'custom_data/train_bins_skirt_100.npy')
|
||||||
|
|
||||||
|
bins = None
|
||||||
|
|
||||||
|
|
||||||
nr_of_labels = 6
|
nr_of_labels = 6
|
||||||
neighbourhood = 50
|
neighbourhood = 50
|
||||||
@@ -220,4 +227,4 @@ if __name__ == '__main__':
|
|||||||
else:
|
else:
|
||||||
dist = np.load('custom_data/dijkstra_skirt.npy')
|
dist = np.load('custom_data/dijkstra_skirt.npy')
|
||||||
|
|
||||||
visualize_curvature_labels(folder, '02572_1', neighbourhoods=[10, 25, 50, 100])
|
visualize_curvature_labels(folder, '02572_1', bins, neighbourhoods=[10, 25, 100])
|
||||||
Reference in New Issue
Block a user