Bender/Documentation/2.0/Modules/FEMWorkflow: Difference between revisions
m (Copied from Bender/Documentation/1.1/Modules/Workflow) |
No edit summary |
||
Line 1: | Line 1: | ||
= Introduction = | = Introduction = | ||
The [[../ | The [[../FEMWorkflow|Workflow]] module guides the user step-by-step into transforming a volume using a [http://en.wikipedia.org/wiki/Skeletal_animation rigging, skinning and posing] technique using a multimaterial tetrahedral mesh and Finite Element Method (FEM). | ||
Typically, the anatomical pose of a voxelized model is limited by the imaging device used to acquire the underlying data, e.g., MRI and CT scanners have narrow entries. Changing the pose of an already acquired voxelized anatomical model enables new processing of human anatomy in a wide variety of poses. The workflow module allows an operator to specify a rigging that represents the anatomical pose of an existing voxel model, manipulate that rigging into a different anatomical pose, and then generate a new voxelized model that represents the original model resampled into that new position. | Typically, the anatomical pose of a voxelized model is limited by the imaging device used to acquire the underlying data, e.g., MRI and CT scanners have narrow entries. Changing the pose of an already acquired voxelized anatomical model enables new processing of human anatomy in a wide variety of poses. The workflow module allows an operator to specify a rigging that represents the anatomical pose of an existing voxel model, manipulate that rigging into a different anatomical pose, and then generate a new voxelized model that represents the original model resampled into that new position. | ||
Line 91: | Line 91: | ||
* '''Colors''': Select the color transfer function to apply to the volume. It is assigned to the volume automatically once selected. For each voxel intensity, a unique color is associated and is used at display time. It is important to select the right transfer function of the volume because the color names in the color transfer function are used in the [[#B.29_Merge_labels|Merge labels]] section. ''Grayscale'' means the volume is not a labelmap and there is no color transfer function associated to it. | * '''Colors''': Select the color transfer function to apply to the volume. It is assigned to the volume automatically once selected. For each voxel intensity, a unique color is associated and is used at display time. It is important to select the right transfer function of the volume because the color names in the color transfer function are used in the [[#B.29_Merge_labels|Merge labels]] section. ''Grayscale'' means the volume is not a labelmap and there is no color transfer function associated to it. | ||
'''Advanced workflow''' | '''Advanced workflow''' | ||
* '''Go | * '''Go to Volumes module''': Go to the [http://www.slicer.org/slicerWiki/index.php?title=Documentation/4.1/Modules/Volumes Volumes] module to read volume information (such as its size, origin, spacing, scalar type, range...) and display properties (window/level, threshold, interpolation...) | ||
* '''Go to Label Statistics module''': Go to the [[../LabelStatistics|Label Statistics]] module to compute statistics for each label of the loaded labelmap. | |||
* '''LPS <-> RAS''': Apply a (-1,-1, 1) transform to the volume. It can be used to apply the same coordinate system used by Bender to the volume. The "R,L,A,P,S,I" letters on the purple box in the 3D view represent the orientations "Right, Left, Anterior, Posterior, Superior, Inferior". Other transforms are available as well when opening the button's menu: | * '''LPS <-> RAS''': Apply a (-1,-1, 1) transform to the volume. It can be used to apply the same coordinate system used by Bender to the volume. The "R,L,A,P,S,I" letters on the purple box in the 3D view represent the orientations "Right, Left, Anterior, Posterior, Superior, Inferior". Other transforms are available as well when opening the button's menu: | ||
** '''Posterior <-> Anterior''' flips the image around the posterior anterior plane. | ** '''Posterior <-> Anterior''' flips the image around the posterior anterior plane. | ||
Line 97: | Line 98: | ||
** '''Center''' translates the image to the origin. | ** '''Center''' translates the image to the origin. | ||
|valign="top"|[[Image: | |valign="top"|[[Image:BenderFEMWorkflowAdjustPanel-2.0.png|thumb|550px|Adjust labelmap panel]] | ||
|} | |} | ||
== 2) | == 2) Merge and resample == | ||
The [[#2.29_Extract_bone_and_skin|2) Extract bone and skin]] page creates the bone and skin surface models to interactively control the posing. | The [[#2.29_Extract_bone_and_skin|2) Extract bone and skin]] page creates the bone and skin surface models to interactively control the posing. | ||
Line 151: | Line 152: | ||
| valign="top"| | | valign="top"| | ||
[[Image: | [[Image:BenderFEMExtractModelsPanel-2.0.png|thumb|550px|Extract bone and skin panel]] | ||
[[Image: | [[Image:BenderFEMWorkflow-2A-MergeLabels-2.0.png|thumb|550px|2-A)Merge labels]] | ||
[[Image: | [[Image:BenderFEMWorkflow-2B-ResampleImage-2.0.png|thumb|550px|2-B)Resample image]] | ||
[[Image: | [[Image:BenderFEMWorkflow-2B-ResampleImage-2.0.png|thumb|550px|2-C)Pad image]] | ||
|} | |} | ||
== 3) Mesh surface == | |||
The [[#3.29_Mesh_surface|3) Mesh]] page generates a multimaterial tetrahedral mesh from the image and extracts bone and skin surface models to interactively control the posing. | |||
{| width="100%" | |||
| valign="top"| | |||
===A) Create tetrahedral mesh=== | |||
In a FEM workflow, repositioning happens on a tetrahedral mesh instead of a labelmap volume. This section generates tetrahedrals with associated material for each voxel. | |||
'''Simple workflow''' | |||
* '''Output Mesh''': Select the output mesh that will contain the tetrahedrals. | |||
* '''Generate mesh''': Extract tetrahedrals from the voxelized labelmap. | |||
'''Advanced workflow''' | |||
* '''Merged Labelmap''': Select the input labelmap that contains a limited number of materials (up to 3). By default, it is ''Output labelmap'' in [[#C.29_Pad_image|2.C) Pad image]]. | |||
* '''Pad image''': If non zero labels are at the border of the image, pad the image for correct results. This option is not required if the image has previously been padded in [#C.29_Pad_image|2.C) Pad image]]. | |||
* '''Go To Create Tetrahedral Mesh module''': Open the [[../CreateTetrahedralMesh|Create Tetrahedral Mesh]] module to generate the tetrahedral mesh. | |||
===B) Extract bone mesh === | |||
This section extracts the bone material from the input tetrahedral mesh. | |||
'''Simple workflow''' | |||
* '''Output bone mesh''': Select the output mesh where the result mesh will be stored. | |||
* '''Extract bone model''': Generate the bone model using the [[../VolumeMaterialExtractor|Volume Material Extractor] module. The extracted bone mesh is used when placing or adjusting the armature by ensuring the armature bones are on top of the labelmap bones. | |||
'''Advanced workflow''' | |||
* '''Input mesh''': Select the tetrahedral mesh to extract the bone label from. | |||
* '''Bone material''': Select the label in the input mesh to create the bone mesh from. By default, it is the '''Bone Label''' value in [[#A.29_Merge_labels|Merge labels]]. | |||
* '''Go To Volume Material Extractor module''': Open the [[../VolumeMaterialExtractor|Volume Material Extractor] module to access more controls over the model extraction parameters. | |||
===C) Extract skin mesh=== | |||
This section extracts the surface of the skin label in the input labelmap volume. The algorithm is different than [[#B.29_Extract_bone_mesh|Extract bone mesh]] because it solely needs the information of the background label. It creates an outer surface of the Foreground labels (all the labels that are not "Background"). | |||
'''Simple workflow''' | |||
* '''Output skin model''': Select the output model for the skin model. | |||
* '''Show/Hide skin''': Toggle the visibility of the generated model in '''Output skin model'''. | |||
* '''Extract skin mesh''': Using the [http://wiki.slicer.org/slicerWiki/index.php/Documentation/4.1/Modules/GrayscaleModelMaker Grayscale Model Maker], extract the outer surface of the '''Input Labelmap'''. The skin surface is used to enable collision when reposing the entire tetrahedral mesh in [[#7.29_Pose_armature_.28posing.29|7) Pose Armature(posing)]]. | |||
'''Advanced workflow''' | |||
* '''Input labelmap''': Select the labelmap volume to extract the skin model from. | |||
* '''Background label''': Select the threshold used to differentiate the body in the labelmap (foreground) from the outside air (background). Default is 0. | |||
* '''Use skin label''': Peel the skin in the output model, this generates an eroded skin model. | |||
* '''Go To Models''': Open the [http://wiki.slicer.org/slicerWiki/index.php/Documentation/4.1/Modules/Models Models] module to change the created model properties such as name, opacity, color... | |||
* '''Go To Skin Model Maker''': Open the [[../SkinModelMaker|Skin Model Maker] module to access more controls over the model extraction parameters such as smoothing. | |||
| valign="top"| | |||
[[Image:BenderFEMExtractModelsPanel-2.0.png|thumb|550px|Merge surface panel]] | |||
[[Image:BenderFEMWorkflow-3A-CreateTetrahedralMesh-2.0.png|thumb|550px|3-A)Create tetrahedral mesh]] | |||
[[Image:BenderFEMWorkflow-3B-ExtractBoneMesh-2.0.png|thumb|550px|3-B)Extract bone mesh]] | |||
[[Image:BenderFEMWorkflow-3C-ExtractSkinMesh-2.0.png|thumb|550px|3-C)Extract skin mesh]] | |||
|} | |||
== 3) Create armature (rigging) == | == 3) Create armature (rigging) == | ||
Revision as of 14:15, 19 March 2014
Introduction
The Workflow module guides the user step-by-step into transforming a volume using a rigging, skinning and posing technique using a multimaterial tetrahedral mesh and Finite Element Method (FEM).
Typically, the anatomical pose of a voxelized model is limited by the imaging device used to acquire the underlying data, e.g., MRI and CT scanners have narrow entries. Changing the pose of an already acquired voxelized anatomical model enables new processing of human anatomy in a wide variety of poses. The workflow module allows an operator to specify a rigging that represents the anatomical pose of an existing voxel model, manipulate that rigging into a different anatomical pose, and then generate a new voxelized model that represents the original model resampled into that new position.
This module applies to voxelized models the Skeletal animation technique initially conceived for surfaces.
Details
Author: Julien Finet, Kitware
Contributor #1: Johan Andruejol, Kitware
Acknowledgements: This work is supported by the Air Force Research Laboratories.
Contact: Julien Finet
Use Cases
Tutorials
Parameters
Advanced properties
The Advanced properties can be shown or hidden by clicking on the expanding button.
Settings
|
Data
|
Volume Rendering
The Volume Rendering section can volume render intermediate or final volume/labelmap.
|
1) Adjust labelmap
The Adjust labelmap is the first step of the workflow. The user selects here the volume to pose and can optionally prepare the volume before any further computation is applied.
A) LabelmapThis section makes sure the input labelmap has the right color table associated with it and is in the right coordinate system. Simple workflow
Advanced workflow
|
2) Merge and resample
The 2) Extract bone and skin page creates the bone and skin surface models to interactively control the posing.
A) Merge labelsSome labelmaps can have multiple labels for representing bones (e.g. bone marrow, bone cancellous, skull...). This section provides the functionality of merging the bones labels and the skin labels of the input labelmap to simplify the visualization and usability of the bones and the skin. It is important to merge those similar labels into a unique label (1 for the bones, 1 for the skin) as the Bender workflow handles only 1 label for the bones and 1 label for the skin. . Simple workflow
Advanced workflow
B) Bone model makerThis section extracts the surface of the bone label in the input labelmap volume. If there is more than 1 bone label, you can use Merge labels to merge them into a unique label. Simple workflow
Advanced workflow
C) Skin model makerThis section extracts the surface of the skin label in the input labelmap volume. The algorithm is different than Bone model maker because it solely needs the information of the background label. It creates an outer surface of the Foreground labels (all the labels that are not "Background"). Simple workflow
Advanced workflow
|
3) Mesh surface
The 3) Mesh page generates a multimaterial tetrahedral mesh from the image and extracts bone and skin surface models to interactively control the posing.
A) Create tetrahedral meshIn a FEM workflow, repositioning happens on a tetrahedral mesh instead of a labelmap volume. This section generates tetrahedrals with associated material for each voxel. Simple workflow
Advanced workflow
B) Extract bone meshThis section extracts the bone material from the input tetrahedral mesh. Simple workflow
Advanced workflow
C) Extract skin meshThis section extracts the surface of the skin label in the input labelmap volume. The algorithm is different than Extract bone mesh because it solely needs the information of the background label. It creates an outer surface of the Foreground labels (all the labels that are not "Background"). Simple workflow
Advanced workflow
|
3) Create armature (rigging)
This section creates the rig of the volume to pose. Note: When opening this page, the view will automatically switch to 3D Only to help creating/visualizing the armature.
A) ArmaturesManually create or load an existing armature to fit on the bones of the volume to pose. The user is redirected to the Armatures module for manually editing (e.g. create/edit/remove a bone segment). The armature (either created or loaded) is the interface between the user and the transformations needed to pose the volume models. Note: Once completed, the armature rest positions should not be changed since it would require all the following computations to be updated as well. It is therefore highly encouraged to save the created armature in order to be able to restore it with Load armature from model. Simple workflow
|
4) Volume skinning
Before computing the weights, the skinning volume must first be extracted. The skinning volume represents what bone influence the most a given voxel. For each voxel a unique bone index is assigned. This means that if we were to use binary weights (see Compute Armature Weight) , a given voxel would rotate similarly to its associated bone in the skinned volume. Because the skinning might not produces perfect results (some voxels might be assigned the wrong bones), and because the skinned volume drives the weight computation, it can be useful to tweak the output skinned volume, most notably in joints area. The Editor module can be used to edit the labelmap.
Note: When opening this page, the view switches to Four Up.
A) Volume skinningSimple workflow
Advanced workflow
B) Edit volume skinningSimple workflow
Advanced workflow
|
4) Compute weights
The Compute weights section assigns a weight for each voxel of the input volume. The weights represent how much a voxel is influenced by a bone. It is later used when posing the volume and computing the unique transform to apply at a voxel (by interpolating the influencing bones transforms).
A) Compute armature weightSmooth the Skinned volume by computing weights in order to consider the influence of every bone on a given voxel. Simple workflow
Advanced workflow
B) Evaluate surface weightTo speed up Pose surface, weights at each vertices can be pre-computed. Simple workflow
Advanced workflow
|
5) Pose armature (posing)
The Pose armature section guides the user into posing the armature for the final Pose labelmap resampling.
Note: When opening this page, the current armature automatically switches to Pose mode.
A) ArmaturesPose the armature by applying rotations to armature bones. You can directly pose the armature from the 3D view, if needed the Armatures module can provide more controls. Note: At this point only the Pose of the armature can be edited, if the "Rest" mode of the armature is changed, the skinned volume and bone weights must be recomputed. Simple workflow
B) Pose surfaceTransform a surface model according to the armature pose. Posing the skin (or bone) surface model gives a fairly good idea of what the result of the 6) Pose labelmap will look like. Simple workflow
Advanced workflow
|
6) Pose labelmap
The 6) Pose labelmap section is the final step of the workflow, it uses the posed armature and the weights associated with the volume to compute the posed labelmap.
A) Resample labelmap with posePose a labelmap volume given an armature and its weights. Simple workflow
Advanced workflow
|
Similar Modules
- Used modules
- Bender modules: Armatures, Change Label, Compute Armature Weight, Model Quadric Clustering Decimation, Pose Surface, Pose Labelmap, Sample Data, Skin Model Maker, Volume Skinning
- Slicer modules: Grayscale Model Maker, Models, Model Maker, Volumes, Volume Rendering
Developer Information
This module is a Python script module that can be manually edited for custom behavior (even in the installed version of Bender).