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)
예제 #2
0
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
예제 #3
0
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)
예제 #4
0
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)
예제 #5
0
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)
예제 #6
0
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)
예제 #7
0
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))
예제 #8
0
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
예제 #9
0
#
# ==============================================================================
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()