Segmentation 3D#
0. Imports#
[1]:
import openalea.phenomenal.data as phm_data
import openalea.phenomenal.display.notebook as phm_display_notebook
import openalea.phenomenal.object as phm_obj
import openalea.phenomenal.segmentation as phm_seg
from openalea.phenotyping_data.fetch import fetch_all_data
---------------------------------------------------------------------------
ModuleNotFoundError Traceback (most recent call last)
Cell In[1], line 2
1 import openalea.phenomenal.data as phm_data
----> 2 import openalea.phenomenal.display.notebook as phm_display_notebook
3 import openalea.phenomenal.object as phm_obj
4 import openalea.phenomenal.segmentation as phm_seg
File ~/checkouts/readthedocs.org/user_builds/phenomenal/checkouts/v1.9.9/src/openalea/phenomenal/display/notebook.py:13
10 from __future__ import division, print_function, absolute_import
12 import numpy
---> 13 import ipyvolume
15 from ._order_color_map import order_color_map
16 # ==============================================================================
ModuleNotFoundError: No module named 'ipyvolume'
1. Prerequisites#
1.1 Load cloud point of voxel centers#
[2]:
plant_number = 2
voxels_size = 16
data_dir = fetch_all_data(f"plant_{plant_number}")
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
Cell In[2], line 3
1 plant_number = 2
2 voxels_size = 16
----> 3 data_dir = fetch_all_data(f"plant_{plant_number}")
NameError: name 'fetch_all_data' is not defined
[3]:
bin_images = phm_data.bin_images(data_dir)
calibrations = phm_data.calibrations(data_dir)
voxel_grid = phm_data.voxel_grid(data_dir, voxels_size=voxels_size)
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
Cell In[3], line 1
----> 1 bin_images = phm_data.bin_images(data_dir)
2 calibrations = phm_data.calibrations(data_dir)
3 voxel_grid = phm_data.voxel_grid(data_dir, voxels_size=voxels_size)
NameError: name 'data_dir' is not defined
1.2 Display voxel grid#
[4]:
phm_display_notebook.show_voxel_grid(voxel_grid, size=1)
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
Cell In[4], line 1
----> 1 phm_display_notebook.show_voxel_grid(voxel_grid, size=1)
NameError: name 'phm_display_notebook' is not defined
2. Skeletonization#
2.1 Compute Graph and the skeleton#
Compute the skeleton of the plant voxelgrid
[5]:
graph = phm_seg.graph_from_voxel_grid(voxel_grid, connect_all_point=True)
voxel_skeleton = phm_seg.skeletonize(voxel_grid, graph)
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
Cell In[5], line 1
----> 1 graph = phm_seg.graph_from_voxel_grid(voxel_grid, connect_all_point=True)
2 voxel_skeleton = phm_seg.skeletonize(voxel_grid, graph)
NameError: name 'phm_seg' is not defined
2.2 Display it#
[6]:
phm_display_notebook.show_skeleton(voxel_skeleton, with_voxel=True, size=1)
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
Cell In[6], line 1
----> 1 phm_display_notebook.show_skeleton(voxel_skeleton, with_voxel=True, size=1)
NameError: name 'phm_display_notebook' is not defined
2.3 Remove not enouth visible segment#
[7]:
# Select images
image_projection = list()
for angle in bin_images["side"]:
projection = calibrations["side"].get_projection(angle)
image_projection.append((bin_images["side"][angle], projection))
voxel_skeleton_denoised = phm_seg.segment_reduction(
voxel_skeleton, image_projection, required_visible=5, nb_min_pixel=400
)
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
Cell In[7], line 3
1 # Select images
2 image_projection = list()
----> 3 for angle in bin_images["side"]:
4 projection = calibrations["side"].get_projection(angle)
5 image_projection.append((bin_images["side"][angle], projection))
NameError: name 'bin_images' is not defined
2.4 Display it#
[8]:
phm_display_notebook.show_skeleton(voxel_skeleton_denoised, size=1)
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
Cell In[8], line 1
----> 1 phm_display_notebook.show_skeleton(voxel_skeleton_denoised, size=1)
NameError: name 'phm_display_notebook' is not defined
3. Maize Segmentation#
3.1 Process#
Voxel skeleton are segmented in several label “stem”, “mature_leaf”, “growing_leaf” and “unknow”
[9]:
vms = phm_seg.maize_segmentation(voxel_skeleton_denoised, graph)
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
Cell In[9], line 1
----> 1 vms = phm_seg.maize_segmentation(voxel_skeleton_denoised, graph)
NameError: name 'phm_seg' is not defined
3.2 Write / Read#
[10]:
# Write
vms.write_to_json_gz("voxel_maize_segmentation.json")
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
Cell In[10], line 2
1 # Write
----> 2 vms.write_to_json_gz("voxel_maize_segmentation.json")
NameError: name 'vms' is not defined
[11]:
# Load
vms = phm_obj.VoxelSegmentation.read_from_json_gz("voxel_maize_segmentation.json")
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
Cell In[11], line 2
1 # Load
----> 2 vms = phm_obj.VoxelSegmentation.read_from_json_gz("voxel_maize_segmentation.json")
NameError: name 'phm_obj' is not defined
3.3 Display#
[12]:
phm_display_notebook.show_segmentation(vms, size=1)
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
Cell In[12], line 1
----> 1 phm_display_notebook.show_segmentation(vms, size=1)
NameError: name 'phm_display_notebook' is not defined
4. Maize Analysis#
4.1 Process#
[13]:
vmsi = phm_seg.maize_analysis(vms)
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
Cell In[13], line 1
----> 1 vmsi = phm_seg.maize_analysis(vms)
NameError: name 'phm_seg' is not defined
4.2 How to save analysis result :#
[14]:
vmsi.write_to_json_gz("voxel_maize_segmentation_info.json.gz")
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
Cell In[14], line 1
----> 1 vmsi.write_to_json_gz("voxel_maize_segmentation_info.json.gz")
NameError: name 'vmsi' is not defined
[15]:
vmsi = phm_obj.VoxelSegmentation.read_from_json_gz(
"voxel_maize_segmentation_info.json.gz"
)
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
Cell In[15], line 1
----> 1 vmsi = phm_obj.VoxelSegmentation.read_from_json_gz(
2 "voxel_maize_segmentation_info.json.gz"
3 )
NameError: name 'phm_obj' is not defined
4.3 Visualize results:#
[16]:
phm_display_notebook.show_segmentation(vmsi, size=1)
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
Cell In[16], line 1
----> 1 phm_display_notebook.show_segmentation(vmsi, size=1)
NameError: name 'phm_display_notebook' is not defined