normalement ca marche mais il faut faire beaucoup de calculs
This commit is contained in:
parent
1d8f97b2fd
commit
4af6119841
18
src/main.py
18
src/main.py
|
@ -11,8 +11,8 @@ from fvi import fast_voxel_intersect
|
||||||
|
|
||||||
VOXEL_SIZE = 5e-3
|
VOXEL_SIZE = 5e-3
|
||||||
X_MIN, X_MAX = 0.7, 1.3
|
X_MIN, X_MAX = 0.7, 1.3
|
||||||
Y_MIN, Y_MAX = -0.1, 0.1
|
Y_MIN, Y_MAX = -0.05, 0.05
|
||||||
Z_MIN, Z_MAX = -0.1, 0.1
|
Z_MIN, Z_MAX = -0.05, 0.05
|
||||||
|
|
||||||
nb_frame = 24
|
nb_frame = 24
|
||||||
|
|
||||||
|
@ -35,7 +35,7 @@ for k in range(nb_frame):
|
||||||
matrices = pickle.load(file)
|
matrices = pickle.load(file)
|
||||||
proj_mat = matrices["P"]
|
proj_mat = matrices["P"]
|
||||||
proj_mats.append(proj_mat)
|
proj_mats.append(proj_mat)
|
||||||
position = matrices["RT"][:, 3]
|
position = -np.linalg.inv(matrices["RT"][:3,:3]) @ matrices["RT"][:3,3]
|
||||||
positions.append(position)
|
positions.append(position)
|
||||||
|
|
||||||
cam_points = proj_mat @ points.T
|
cam_points = proj_mat @ points.T
|
||||||
|
@ -71,8 +71,7 @@ for k in range(nb_frame):
|
||||||
# cv2.imshow('Frame', frame)
|
# cv2.imshow('Frame', frame)
|
||||||
# cv2.waitKey(0)
|
# cv2.waitKey(0)
|
||||||
|
|
||||||
|
voxel = np.zeros((int((X_MAX-X_MIN)/VOXEL_SIZE), int((Y_MAX-Y_MIN)/VOXEL_SIZE), int((Z_MAX-Z_MIN)/VOXEL_SIZE)))
|
||||||
voxel = np.zeros((int((X_MAX-X_MIN)/VOXEL_SIZE + 1), int((Y_MAX-Y_MIN)/VOXEL_SIZE + 1), int((Z_MAX-Z_MIN)/VOXEL_SIZE + 1)))
|
|
||||||
idx = np.floor_divide(points[:, :3] - np.array([X_MIN, Y_MIN, Z_MIN]), VOXEL_SIZE).astype(int)
|
idx = np.floor_divide(points[:, :3] - np.array([X_MIN, Y_MIN, Z_MIN]), VOXEL_SIZE).astype(int)
|
||||||
voxel[idx[:,0], idx[:,1], idx[:,2]] = 1
|
voxel[idx[:,0], idx[:,1], idx[:,2]] = 1
|
||||||
|
|
||||||
|
@ -107,9 +106,11 @@ for idx in track(np.argwhere(border)):
|
||||||
|
|
||||||
# si le rayon ne traverse aucun autre voxel entre le centre du voxel (idx) et le centre de la caméra
|
# si le rayon ne traverse aucun autre voxel entre le centre du voxel (idx) et le centre de la caméra
|
||||||
_, _, voxels_intersected = fast_voxel_intersect(start, end, origin, step, shape)
|
_, _, voxels_intersected = fast_voxel_intersect(start, end, origin, step, shape)
|
||||||
print(f"ntm: {voxels_intersected}")
|
|
||||||
voxels_intersected = np.array(voxels_intersected, dtype=np.int32)
|
voxels_intersected = np.array(voxels_intersected, dtype=np.int32)
|
||||||
visible = voxel[voxels_intersected].sum() == 0
|
if len(voxels_intersected) == 0:
|
||||||
|
visible = True
|
||||||
|
else:
|
||||||
|
visible = voxel[voxels_intersected[:, 0], voxels_intersected[:, 1], voxels_intersected[:, 2]].sum() == 0
|
||||||
|
|
||||||
if visible:
|
if visible:
|
||||||
proj = proj_mats[i] @ np.array([start[0], start[1], start[2], 1.0])
|
proj = proj_mats[i] @ np.array([start[0], start[1], start[2], 1.0])
|
||||||
|
@ -119,8 +120,7 @@ for idx in track(np.argwhere(border)):
|
||||||
|
|
||||||
# calcule écartype des valeurs
|
# calcule écartype des valeurs
|
||||||
std = np.std(values)
|
std = np.std(values)
|
||||||
# print(std)
|
print(f"std: {std}, values: {values}, nb_values: {len(values)}")
|
||||||
# print(values)
|
|
||||||
|
|
||||||
# changer le levelset en fonction de l'écartype
|
# changer le levelset en fonction de l'écartype
|
||||||
if std < 2:
|
if std < 2:
|
||||||
|
|
Loading…
Reference in a new issue