def test_graph(): plant_number = 1 voxels_size = 16 voxel_grid = phm_data.voxel_grid(plant_number=plant_number, voxels_size=voxels_size) graph = phm_seg.graph_from_voxel_grid(voxel_grid)
def test_meshing(): plant_number = 1 voxels_size = 16 dir_path = os.path.join(os.path.dirname(os.path.realpath(__file__)), "../data") print(dir_path) voxel_grid = phm_data.voxel_grid(dir_path, plant_number=plant_number, voxels_size=voxels_size) image_3d = voxel_grid.to_image_3d() vertices, faces = phm_mesh.meshing(image_3d, smoothing_iteration=2, reduction=0.95, verbose=True) assert 100 <= len(vertices) <= 500, len(vertices) assert 200 <= len(faces) <= 1000, len(faces) poly_data = phm_mesh.from_vertices_faces_to_vtk_poly_data(vertices, faces) vtk_image_data = phm_mesh.voxelization(poly_data, voxels_size=voxels_size) voxels_position = phm_mesh.from_vtk_image_data_to_voxels_center( vtk_image_data) assert len(voxels_position) >= 1000
def test_read_write(): plant_number = 1 voxels_size = 8 voxel_grid = phm_data.voxel_grid(plant_number=plant_number, voxels_size=voxels_size) filename = 'test.npz' voxel_grid.write_to_npz(filename) vg = phm_obj.VoxelGrid.read_from_npz(filename) os.remove(filename)
def test_maize(): plant_number = 3 voxels_size = 4 voxel_grid = phm_data.voxel_grid(plant_number=plant_number, voxels_size=voxels_size) graph = phm_seg.graph_from_voxel_grid(voxel_grid) voxel_skeleton = phm_seg.skeletonize(voxel_grid, graph) vms = phm_seg.maize_segmentation(voxel_skeleton, graph) vmsi = phm_seg.maize_analysis(vms)
def test_running(): plant_number = 1 voxels_size = 16 bin_images = phm_data.bin_images(plant_number=plant_number) calibrations = phm_data.calibrations(plant_number=plant_number) voxel_grid = phm_data.voxel_grid(plant_number=plant_number, voxels_size=voxels_size) graph = phm_seg.graph_from_voxel_grid(voxel_grid) voxel_skeleton = phm_seg.skeletonize(voxel_grid, graph) image_projection = list() for angle in [0, 120, 270]: projection = calibrations["side"].get_projection(angle) image_projection.append((bin_images["side"][angle], projection)) voxel_skeleton_reduced = phm_seg.segment_reduction(voxel_skeleton, image_projection, required_visible=1, nb_min_pixel=100)
def test_running(): bin_images = phm_data.bin_images(plant_1_dir) calibrations = phm_data.calibrations(plant_1_dir) voxel_grid = phm_data.voxel_grid(data_dir, 1, 32) # Load images binarize graph = phm_seg.graph_from_voxel_grid(voxel_grid) voxel_skeleton = phm_seg.skeletonize(voxel_grid, graph) image_projection = list() for angle in [0, 120, 270]: projection = calibrations["side"].get_projection(angle) image_projection.append((bin_images["side"][angle], projection)) voxel_skeleton = phm_seg.segment_reduction( voxel_skeleton, image_projection, required_visible=1, nb_min_pixel=100)
def test_time_graph(): plant_number = 1 voxels_size = 16 voxel_grid = phm_data.voxel_grid(plant_number=plant_number, voxels_size=voxels_size) # print(voxel_grid.voxels_position) voxels_size = int(voxel_grid.voxels_size) voxels_position = map(tuple, list(voxel_grid.voxels_position)) voxel_grid = phm_obj.VoxelGrid(voxels_position, voxels_size) number_of_loop = 2 best_time = float('inf') for i in range(number_of_loop): t0 = time.time() graph = phm_seg.graph_from_voxel_grid(voxel_grid) best_time = min(best_time, float(time.time() - t0)) print("{number_of_loop} loop, best of {number_of_loop}: " "{best_time}s per loop".format(best_time=best_time, number_of_loop=number_of_loop))
def test_meshing(): plant_number = 1 voxels_size = 16 voxel_grid = phm_data.voxel_grid(plant_number=plant_number, voxels_size=voxels_size) image_3d = voxel_grid.to_image_3d() vertices, faces = phm_mesh.meshing(image_3d, smoothing_iteration=2, reduction=0.95, verbose=True) assert 100 <= len(vertices) <= 500, len(vertices) assert 200 <= len(faces) <= 1000, len(faces) poly_data = phm_mesh.from_vertices_faces_to_vtk_poly_data(vertices, faces) vtk_image_data = phm_mesh.voxelization(poly_data, voxels_size=voxels_size) voxels_position = phm_mesh.from_vtk_image_data_to_voxels_center( vtk_image_data) assert len(voxels_position) >= 1000
# # ============================================================================== from __future__ import division, print_function import time import openalea.phenomenal.data as phm_data import openalea.phenomenal.object as phm_obj import openalea.phenomenal.segmentation as phm_seg # import openalea.phenomenal.display as phm_display # ============================================================================== plant_number = 2 voxels_size = 8 bin_images = phm_data.bin_images(plant_number=plant_number) calibrations = phm_data.calibrations(plant_number=plant_number) voxel_grid = phm_data.voxel_grid(plant_number=plant_number, voxels_size=voxels_size) init_start = time.time() # ============================================================================== start = time.time() graph = phm_seg.graph_from_voxel_grid(voxel_grid) print("time processing , graph_from_voxel_grid : {}".format(time.time() - start)) start = time.time() voxel_skeleton = phm_seg.skeletonize(voxel_grid, graph) print("time processing , skeletonize : {}".format(time.time() - start)) start = time.time() image_projection = list()