(희소한) 블록 선택 및 활성화이며, (밀집된) 복셀 값 통합examples/python/t_reconstruction_system/integrate.py에서 확인할 수 있습니다.중복 없는 블록 좌표를 생성하는 프러스텀 해시 맵과 이러한 블록 좌표를 활성화하고 쿼리하는 블록 해시 맵을 사용하여 구현됩니다.# examples/python/t_reconstruction_system/integrate.py
frustum_block_coords = vbg.compute_unique_block_coordinates(
    depth, depth_intrinsic, extrinsic, config.depth_scale,
    config.depth_max)
frustum_block_coords에 해당하는 블록 내의 복셀을 처리할 수 있습니다. 관련된 모든 복셀을 입력 이미지에 투영하고 가중 평균을 수행하는 것으로, 이는 해시 맵 작업 없이 순수하게 기하학적인 과정입니다.vbg.integrate 함수가 어떤 로직으로 integrate를 수행하는지 파악# examples/python/t_reconstruction_system/integrate.py
if config.integrate_color:
    color = o3d.t.io.read_image(color_file_names[i]).to(device)
    vbg.integrate(frustum_block_coords, depth, color, depth_intrinsic,
                  color_intrinsic, extrinsic, config.depth_scale,
                  config.depth_max)
else:
    vbg.integrate(frustum_block_coords, depth, depth_intrinsic,
                  extrinsic, config.depth_scale, config.depth_max)
깊이 이미지, 컬러 이미지, 복셀 그리드의 TSDF, 복셀 그리드의 가중치, 복셀 그리드의 컬러 순입니다.template void IntegrateCPU<uint16_t, uint8_t, float, uint16_t, uint16_t>(FN_ARGUMENTS);
template void IntegrateCPU<uint16_t, uint8_t, float, float, float>(FN_ARGUMENTS);
template void IntegrateCPU<float, float, float, uint16_t, uint16_t>(FN_ARGUMENTS);
template void IntegrateCPU<float, float, float, float, float>(FN_ARGUMENTS);
template void IntegrateCUDA<uint16_t, uint8_t, float, uint16_t, uint16_t>(FN_ARGUMENTS);
template void IntegrateCUDA<uint16_t, uint8_t, float, float, float>(FN_ARGUMENTS);
template void IntegrateCUDA<float, float, float, uint16_t, uint16_t>(FN_ARGUMENTS);
template void IntegrateCUDA<float, float, float, float, float>(FN_ARGUMENTS);
# examples/python/t_reconstruction_system/integrate.py
pcd = vbg.extract_point_cloud()
o3d.visualization.draw([pcd])
mesh = vbg.extract_triangle_mesh()
o3d.visualization.draw([mesh.to_legacy()])
extract_triangle_mesh는 마칭 큐브 알고리즘을 적용하여 메쉬를 생성extract_point_cloud는 비슷한 알고리즘을 사용하지만 삼각형 면 생성 단계를 생략.npz 파일 형식으로 저장 및 로드할 수 있으며, 이는 numpy를 통해 접근할 수 있습니다.# examples/python/t_reconstruction_system/integrate.py
for i in tqdm(range(n_files)):
위에서 언급한 복셀 블록 그리드의 .npz 파일에는 다음과 같은 항목이 포함됩니다:
attr_name_tsdf: 값 버퍼 인덱스: 0
attr_name_weight: 값 버퍼 인덱스: 1
attr_name_color: 값 버퍼 인덱스: 2
value_000: TSDF 값 버퍼
value_001: 가중치 값 버퍼
value_002: 색상 값 버퍼
key: 모든 활성 키
block_resolution: 8
voxel_size: 0.0059 = 3.0 / 512
CUDA:0: 디바이스