<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.slicer.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Lantiga</id>
	<title>Slicer Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://www.slicer.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Lantiga"/>
	<link rel="alternate" type="text/html" href="https://www.slicer.org/wiki/Special:Contributions/Lantiga"/>
	<updated>2026-04-05T08:59:39Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.33.0</generator>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Developer_Meetings/20131008&amp;diff=36456</id>
		<title>Developer Meetings/20131008</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Developer_Meetings/20131008&amp;diff=36456"/>
		<updated>2013-11-07T23:47:40Z</updated>

		<summary type="html">&lt;p&gt;Lantiga: /* Recently updated Module Documentations */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
== Update documentation ==&lt;br /&gt;
* Ron's priorities for final year of NAMIC funding&lt;br /&gt;
===Not yet done===&lt;br /&gt;
# Update the slicer user documentation pages by RSNA. Describe up-to-date workflows in the examples. Make sure all the features are described. Make sure authors, institutions, and grants are properly acknowledged. The following is an incomplete list:&lt;br /&gt;
##	Probe Volume With Model	(Lauren O'Donnell) &lt;br /&gt;
##	ACPC Transform	(Nicole	Aucoin)&lt;br /&gt;
##	Cast Scalar Volume	(Nicole	Aucoin)&lt;br /&gt;
##	Colors	(Nicole	Aucoin)&lt;br /&gt;
##	LUTs	(Nicole	Aucoin)&lt;br /&gt;
##	Mask Scalar Volume	(Nicole	Aucoin)&lt;br /&gt;
##	Merge Models	(Nicole	Aucoin)&lt;br /&gt;
##	Model Maker	(Nicole	Aucoin)&lt;br /&gt;
##	Models	(Nicole	Aucoin)&lt;br /&gt;
##	Model To LabelMap	(Nicole	Aucoin)&lt;br /&gt;
##	PET Standard Uptake Value Computation	(Nicole	Aucoin)&lt;br /&gt;
##	Threshold Scalar Volume	(Nicole	Aucoin)&lt;br /&gt;
##	Fiducial Registration	(Stephen	Aylward)&lt;br /&gt;
##	Gaussian Blur Image Filter	(Stephen	Aylward)&lt;br /&gt;
##	Resample Scalar/Vector/DWI Volume	(Francois	Budin)&lt;br /&gt;
##	Data	(Julien	Finet)&lt;br /&gt;
##	Models	(Julien	Finet)&lt;br /&gt;
##	Robust Statistics Segmenter	(Yi	Gao)&lt;br /&gt;
##	Segmentation Aided Registration	(Yi	Gao)&lt;br /&gt;
##	Reformat	(Michael	Jeulin-Lagarrigue)&lt;br /&gt;
##	Demon Registration (BRAINS)	(Hans	Johnson)&lt;br /&gt;
##	Foreground Masking (BRAINS)	(Hans	Johnson)&lt;br /&gt;
##	General Brainsfit Registration	(Hans	Johnson)&lt;br /&gt;
##	Resample Image (BRAINS)	(Hans	Johnson)&lt;br /&gt;
##	Vector Demon Registration	(Hans	Johnson)&lt;br /&gt;
##	KSlice Interactive Segmenter	(Ivan	Kolesov)&lt;br /&gt;
##	Simple Filters	(Bradley	Lowekamp)&lt;br /&gt;
##	WatershedFromMarkers	(Bradley	Lowekamp)&lt;br /&gt;
##	SNR Measurement	(Babak	Matinfar)&lt;br /&gt;
##	Main window	(JC)	&lt;br /&gt;
##	Welcome to Slicer	(JC)	&lt;br /&gt;
##	Add Scalar Volumes	(Jim	Miller)&lt;br /&gt;
##	CheckerBoard Filter	(Jim	Miller)&lt;br /&gt;
##	Create DICOM Series	(Jim	Miller)&lt;br /&gt;
##	Curvature Anisotropic Diffusion	(Jim	Miller)&lt;br /&gt;
##	Dicom to Nrrd Converter	(Jim	Miller)&lt;br /&gt;
##	Extract Skeleton	(Jim	Miller)&lt;br /&gt;
##	Gradient Anisotropic Diffusion	(Jim	Miller)&lt;br /&gt;
##	Grayscale Fill Hole Image Filter	(Jim	Miller)&lt;br /&gt;
##	Grayscale Grind Peak Image Filter	(Jim	Miller)&lt;br /&gt;
##	Grayscale Model Maker	(Jim	Miller)&lt;br /&gt;
##	Histogram Matching	(Jim	Miller)&lt;br /&gt;
##	Median Image Filter	(Jim	Miller)&lt;br /&gt;
##	Multiply Scalar Volumes	(Jim	Miller)&lt;br /&gt;
##	Orient Scalar Volume	(Jim	Miller)&lt;br /&gt;
##	Simple Region Growing Segmentation	(Jim	Miller)&lt;br /&gt;
##	Subtract Scalar Volumes	(Jim	Miller)&lt;br /&gt;
##	View Controllers	(Jim	Miller)&lt;br /&gt;
##	Voting Binary Hole Filling Image Filter	(Jim	Miller)&lt;br /&gt;
##	Label Map Smoothing	(Dirk	Padfield)&lt;br /&gt;
##	Data Probe	(Steve	Pieper)&lt;br /&gt;
##	DICOM	(Steve	Pieper)&lt;br /&gt;
##	Editor	(Steve	Pieper)&lt;br /&gt;
##	Endoscopy	(Steve	Pieper)&lt;br /&gt;
##	Fiber Bundle to Label Map	(Steve	Pieper)&lt;br /&gt;
##	Label Statistics	(Steve	Pieper)&lt;br /&gt;
##	.mrb	(Steve	Pieper)&lt;br /&gt;
##	Sample Data	(Steve	Pieper)&lt;br /&gt;
##	Vector to Scalar Volume	(Steve	Pieper)&lt;br /&gt;
##	Volumes	(Steve	Pieper)&lt;br /&gt;
##	EMSegment Command-line	(Kilian	Pohl)&lt;br /&gt;
##	EMSegment Easy (no atlas)	(Kilian	Pohl)&lt;br /&gt;
##	EMSegment (with atlas)	(Kilian	Pohl)&lt;br /&gt;
##	DTIExport	(Sonia	Pujol)&lt;br /&gt;
##	DTIImport	(Sonia	Pujol)&lt;br /&gt;
##	OpenIGTLink IF	(Junichi	Tokuda)&lt;br /&gt;
##	Diffusion Tensor Scalar Measurements	(Demian	Wasserman)&lt;br /&gt;
##	Diffusion Weighted Volume Masking	(Demian	Wasserman)&lt;br /&gt;
##	DWI Joint Rician LMMSE Image Filter	(Demian	Wasserman)&lt;br /&gt;
##	DWI Rician LMMSE Filter	(Demian	Wasserman)&lt;br /&gt;
##	DWI To DTI Estimation	(Demian	Wasserman)&lt;br /&gt;
##	DWI to Full Brain Tractography	(Demian	Wasserman)&lt;br /&gt;
##	Resample DTI Volume	(Demian	Wasserman)&lt;br /&gt;
##	Tractography Label Map Seeding	(Demian	Wasserman)&lt;br /&gt;
##	Image Label Combine	(Alex	Yarmarkovich)&lt;br /&gt;
##	Sceneviews	(Alex	Yarmarkovich)&lt;br /&gt;
##	Tractography Interactive Seeding	(Alex	Yarmarkovich)&lt;br /&gt;
##	Transforms	(Alex	Yarmarkovich)&lt;br /&gt;
##	Left Atrial Scar Segmenter	(LiangJia	Zhu)&lt;br /&gt;
##	Left Atrium Segmenter	(LiangJia	Zhu)&lt;br /&gt;
&lt;br /&gt;
===Recently updated Module Documentations===&lt;br /&gt;
##	Annotations	(Nicole	Aucoin) 12:11, 24 September 2013.&lt;br /&gt;
##	Markups	(Nicole	Aucoin) 11:59, 24 September 2013.&lt;br /&gt;
##	Volume rendering (including label data sets)	(Julien	Finet)  11:43, 19 September 2013.&lt;br /&gt;
##	Introduction to Registration	(Dominik	Meier) 16:18, 13 September 2013.&lt;br /&gt;
##	Tractography Display	(Demian	Wasserman) 12:26, 13 September 2013. by Alex	Yarmarkovich&lt;br /&gt;
##	FiberBundleLabelSelect	(Alex	Yarmarkovich) 11:33, 13 September 2013.&lt;br /&gt;
##	N4ITK Bias Field Correction	(Andrey	Fedorov) (svn tags updated in 4.3 and Nightly, don't recall how updates are propagated to the wiki page content) 7 Nov 2013&lt;br /&gt;
##	Intensity Difference Metric	(Andrey	Fedorov) -- Not applicable -- this is an extension, not Slicer core 7 Nov 2013&lt;br /&gt;
##	Crop Volume	(Andrey	Fedorov) updated 7 Nov 2013&lt;br /&gt;
##	SurfaceToolbox	(Luca Antiga) updated 7 Nov 2013&lt;br /&gt;
&lt;br /&gt;
==Other improvements==&lt;br /&gt;
## when I save an MRB repeatedly, (1) &amp;lt;del&amp;gt;my customizations from last time should be remembered. Right now, the save module forgets that I selected .mrb for my last save. I need to tell it again.&amp;lt;/del&amp;gt; (2) When doing so, the default name turns into .mrb.mrb. (3) &amp;lt;del&amp;gt;It also forgets that I pointed it to a particular directory and offers to save in the default location.&amp;lt;/del&amp;gt; (4) &amp;lt;del&amp;gt;Having this persist for the session only would be good. If persistent across session, a reset button would be good.&amp;lt;/del&amp;gt; See [http://www.na-mic.org/Bug/view.php?id=3484 #3484] and [http://www.na-mic.org/Bug/view.php?id=2948 #2948]&lt;br /&gt;
##the location from which something was loaded should be the default for saving.&lt;br /&gt;
##create a preset w/l+LUT in the volume module (scaled from 0 to 1), and corresponding transfer function for FA maps in the volume rendering module (bug #1857)&lt;br /&gt;
##on/off switch in the editor module for volume rendering of active label map&lt;br /&gt;
# All tutorials should be updated, including new basic features such as .drag and drop and .mrb&lt;br /&gt;
# [http://www.na-mic.org/Bug/view.php?id=3452 Unable to use Volume module Threshold widget in a meaningful way ]&lt;br /&gt;
#[http://www.na-mic.org/Bug/view.php?id=1299 Better presentation of text in sceneviews]&lt;br /&gt;
&lt;br /&gt;
#Review critical bugs / Open questions&lt;br /&gt;
* Nonlinear transform support (Alex)&lt;br /&gt;
** Resampled on the fly&lt;br /&gt;
** Pre-cached non-linear hardened version&lt;br /&gt;
** Need to fix read/write of grid transforms&lt;br /&gt;
** Fix resample CLIs to consistently accept grid transforms &lt;br /&gt;
** See: http://www.na-mic.org/Wiki/index.php/Handling_deformable_transforms_in_Slicer_meeting_minutes&lt;br /&gt;
* Migrating Rulers into Markups module (Nicole)&lt;br /&gt;
* Pluggable registration module (Steve, for Head and Neck Radiotherapy DBP)&lt;br /&gt;
* Each DBP to be pinged for wish list by Engineering contact&lt;br /&gt;
** Steve -&amp;gt; Greg&lt;br /&gt;
** Jim -&amp;gt; Rob/Josh&lt;br /&gt;
** Stephen -&amp;gt; Jack&lt;br /&gt;
** Dan -&amp;gt; Hans&lt;br /&gt;
* Steve will send blanket email to all DBPs requesting their priorities&lt;br /&gt;
* In coming months we will finalize a strategy for 4.x releases as final NA-MIC deliverables&lt;/div&gt;</summary>
		<author><name>Lantiga</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Developer_Meetings/20131008&amp;diff=36455</id>
		<title>Developer Meetings/20131008</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Developer_Meetings/20131008&amp;diff=36455"/>
		<updated>2013-11-07T23:47:13Z</updated>

		<summary type="html">&lt;p&gt;Lantiga: /* Not yet done */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
== Update documentation ==&lt;br /&gt;
* Ron's priorities for final year of NAMIC funding&lt;br /&gt;
===Not yet done===&lt;br /&gt;
# Update the slicer user documentation pages by RSNA. Describe up-to-date workflows in the examples. Make sure all the features are described. Make sure authors, institutions, and grants are properly acknowledged. The following is an incomplete list:&lt;br /&gt;
##	Probe Volume With Model	(Lauren O'Donnell) &lt;br /&gt;
##	ACPC Transform	(Nicole	Aucoin)&lt;br /&gt;
##	Cast Scalar Volume	(Nicole	Aucoin)&lt;br /&gt;
##	Colors	(Nicole	Aucoin)&lt;br /&gt;
##	LUTs	(Nicole	Aucoin)&lt;br /&gt;
##	Mask Scalar Volume	(Nicole	Aucoin)&lt;br /&gt;
##	Merge Models	(Nicole	Aucoin)&lt;br /&gt;
##	Model Maker	(Nicole	Aucoin)&lt;br /&gt;
##	Models	(Nicole	Aucoin)&lt;br /&gt;
##	Model To LabelMap	(Nicole	Aucoin)&lt;br /&gt;
##	PET Standard Uptake Value Computation	(Nicole	Aucoin)&lt;br /&gt;
##	Threshold Scalar Volume	(Nicole	Aucoin)&lt;br /&gt;
##	Fiducial Registration	(Stephen	Aylward)&lt;br /&gt;
##	Gaussian Blur Image Filter	(Stephen	Aylward)&lt;br /&gt;
##	Resample Scalar/Vector/DWI Volume	(Francois	Budin)&lt;br /&gt;
##	Data	(Julien	Finet)&lt;br /&gt;
##	Models	(Julien	Finet)&lt;br /&gt;
##	Robust Statistics Segmenter	(Yi	Gao)&lt;br /&gt;
##	Segmentation Aided Registration	(Yi	Gao)&lt;br /&gt;
##	Reformat	(Michael	Jeulin-Lagarrigue)&lt;br /&gt;
##	Demon Registration (BRAINS)	(Hans	Johnson)&lt;br /&gt;
##	Foreground Masking (BRAINS)	(Hans	Johnson)&lt;br /&gt;
##	General Brainsfit Registration	(Hans	Johnson)&lt;br /&gt;
##	Resample Image (BRAINS)	(Hans	Johnson)&lt;br /&gt;
##	Vector Demon Registration	(Hans	Johnson)&lt;br /&gt;
##	KSlice Interactive Segmenter	(Ivan	Kolesov)&lt;br /&gt;
##	Simple Filters	(Bradley	Lowekamp)&lt;br /&gt;
##	WatershedFromMarkers	(Bradley	Lowekamp)&lt;br /&gt;
##	SNR Measurement	(Babak	Matinfar)&lt;br /&gt;
##	Main window	(JC)	&lt;br /&gt;
##	Welcome to Slicer	(JC)	&lt;br /&gt;
##	Add Scalar Volumes	(Jim	Miller)&lt;br /&gt;
##	CheckerBoard Filter	(Jim	Miller)&lt;br /&gt;
##	Create DICOM Series	(Jim	Miller)&lt;br /&gt;
##	Curvature Anisotropic Diffusion	(Jim	Miller)&lt;br /&gt;
##	Dicom to Nrrd Converter	(Jim	Miller)&lt;br /&gt;
##	Extract Skeleton	(Jim	Miller)&lt;br /&gt;
##	Gradient Anisotropic Diffusion	(Jim	Miller)&lt;br /&gt;
##	Grayscale Fill Hole Image Filter	(Jim	Miller)&lt;br /&gt;
##	Grayscale Grind Peak Image Filter	(Jim	Miller)&lt;br /&gt;
##	Grayscale Model Maker	(Jim	Miller)&lt;br /&gt;
##	Histogram Matching	(Jim	Miller)&lt;br /&gt;
##	Median Image Filter	(Jim	Miller)&lt;br /&gt;
##	Multiply Scalar Volumes	(Jim	Miller)&lt;br /&gt;
##	Orient Scalar Volume	(Jim	Miller)&lt;br /&gt;
##	Simple Region Growing Segmentation	(Jim	Miller)&lt;br /&gt;
##	Subtract Scalar Volumes	(Jim	Miller)&lt;br /&gt;
##	View Controllers	(Jim	Miller)&lt;br /&gt;
##	Voting Binary Hole Filling Image Filter	(Jim	Miller)&lt;br /&gt;
##	Label Map Smoothing	(Dirk	Padfield)&lt;br /&gt;
##	Data Probe	(Steve	Pieper)&lt;br /&gt;
##	DICOM	(Steve	Pieper)&lt;br /&gt;
##	Editor	(Steve	Pieper)&lt;br /&gt;
##	Endoscopy	(Steve	Pieper)&lt;br /&gt;
##	Fiber Bundle to Label Map	(Steve	Pieper)&lt;br /&gt;
##	Label Statistics	(Steve	Pieper)&lt;br /&gt;
##	.mrb	(Steve	Pieper)&lt;br /&gt;
##	Sample Data	(Steve	Pieper)&lt;br /&gt;
##	Vector to Scalar Volume	(Steve	Pieper)&lt;br /&gt;
##	Volumes	(Steve	Pieper)&lt;br /&gt;
##	EMSegment Command-line	(Kilian	Pohl)&lt;br /&gt;
##	EMSegment Easy (no atlas)	(Kilian	Pohl)&lt;br /&gt;
##	EMSegment (with atlas)	(Kilian	Pohl)&lt;br /&gt;
##	DTIExport	(Sonia	Pujol)&lt;br /&gt;
##	DTIImport	(Sonia	Pujol)&lt;br /&gt;
##	OpenIGTLink IF	(Junichi	Tokuda)&lt;br /&gt;
##	Diffusion Tensor Scalar Measurements	(Demian	Wasserman)&lt;br /&gt;
##	Diffusion Weighted Volume Masking	(Demian	Wasserman)&lt;br /&gt;
##	DWI Joint Rician LMMSE Image Filter	(Demian	Wasserman)&lt;br /&gt;
##	DWI Rician LMMSE Filter	(Demian	Wasserman)&lt;br /&gt;
##	DWI To DTI Estimation	(Demian	Wasserman)&lt;br /&gt;
##	DWI to Full Brain Tractography	(Demian	Wasserman)&lt;br /&gt;
##	Resample DTI Volume	(Demian	Wasserman)&lt;br /&gt;
##	Tractography Label Map Seeding	(Demian	Wasserman)&lt;br /&gt;
##	Image Label Combine	(Alex	Yarmarkovich)&lt;br /&gt;
##	Sceneviews	(Alex	Yarmarkovich)&lt;br /&gt;
##	Tractography Interactive Seeding	(Alex	Yarmarkovich)&lt;br /&gt;
##	Transforms	(Alex	Yarmarkovich)&lt;br /&gt;
##	Left Atrial Scar Segmenter	(LiangJia	Zhu)&lt;br /&gt;
##	Left Atrium Segmenter	(LiangJia	Zhu)&lt;br /&gt;
&lt;br /&gt;
===Recently updated Module Documentations===&lt;br /&gt;
##	Annotations	(Nicole	Aucoin) 12:11, 24 September 2013.&lt;br /&gt;
##	Markups	(Nicole	Aucoin) 11:59, 24 September 2013.&lt;br /&gt;
##	Volume rendering (including label data sets)	(Julien	Finet)  11:43, 19 September 2013.&lt;br /&gt;
##	Introduction to Registration	(Dominik	Meier) 16:18, 13 September 2013.&lt;br /&gt;
##	Tractography Display	(Demian	Wasserman) 12:26, 13 September 2013. by Alex	Yarmarkovich&lt;br /&gt;
##	FiberBundleLabelSelect	(Alex	Yarmarkovich) 11:33, 13 September 2013.&lt;br /&gt;
##	N4ITK Bias Field Correction	(Andrey	Fedorov) (svn tags updated in 4.3 and Nightly, don't recall how updates are propagated to the wiki page content) 7 Nov 2013&lt;br /&gt;
##	Intensity Difference Metric	(Andrey	Fedorov) -- Not applicable -- this is an extension, not Slicer core 7 Nov 2013&lt;br /&gt;
##	Crop Volume	(Andrey	Fedorov) updated 7 Nov 2013&lt;br /&gt;
&lt;br /&gt;
==Other improvements==&lt;br /&gt;
## when I save an MRB repeatedly, (1) &amp;lt;del&amp;gt;my customizations from last time should be remembered. Right now, the save module forgets that I selected .mrb for my last save. I need to tell it again.&amp;lt;/del&amp;gt; (2) When doing so, the default name turns into .mrb.mrb. (3) &amp;lt;del&amp;gt;It also forgets that I pointed it to a particular directory and offers to save in the default location.&amp;lt;/del&amp;gt; (4) &amp;lt;del&amp;gt;Having this persist for the session only would be good. If persistent across session, a reset button would be good.&amp;lt;/del&amp;gt; See [http://www.na-mic.org/Bug/view.php?id=3484 #3484] and [http://www.na-mic.org/Bug/view.php?id=2948 #2948]&lt;br /&gt;
##the location from which something was loaded should be the default for saving.&lt;br /&gt;
##create a preset w/l+LUT in the volume module (scaled from 0 to 1), and corresponding transfer function for FA maps in the volume rendering module (bug #1857)&lt;br /&gt;
##on/off switch in the editor module for volume rendering of active label map&lt;br /&gt;
# All tutorials should be updated, including new basic features such as .drag and drop and .mrb&lt;br /&gt;
# [http://www.na-mic.org/Bug/view.php?id=3452 Unable to use Volume module Threshold widget in a meaningful way ]&lt;br /&gt;
#[http://www.na-mic.org/Bug/view.php?id=1299 Better presentation of text in sceneviews]&lt;br /&gt;
&lt;br /&gt;
#Review critical bugs / Open questions&lt;br /&gt;
* Nonlinear transform support (Alex)&lt;br /&gt;
** Resampled on the fly&lt;br /&gt;
** Pre-cached non-linear hardened version&lt;br /&gt;
** Need to fix read/write of grid transforms&lt;br /&gt;
** Fix resample CLIs to consistently accept grid transforms &lt;br /&gt;
** See: http://www.na-mic.org/Wiki/index.php/Handling_deformable_transforms_in_Slicer_meeting_minutes&lt;br /&gt;
* Migrating Rulers into Markups module (Nicole)&lt;br /&gt;
* Pluggable registration module (Steve, for Head and Neck Radiotherapy DBP)&lt;br /&gt;
* Each DBP to be pinged for wish list by Engineering contact&lt;br /&gt;
** Steve -&amp;gt; Greg&lt;br /&gt;
** Jim -&amp;gt; Rob/Josh&lt;br /&gt;
** Stephen -&amp;gt; Jack&lt;br /&gt;
** Dan -&amp;gt; Hans&lt;br /&gt;
* Steve will send blanket email to all DBPs requesting their priorities&lt;br /&gt;
* In coming months we will finalize a strategy for 4.x releases as final NA-MIC deliverables&lt;/div&gt;</summary>
		<author><name>Lantiga</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/Nightly/Modules/SurfaceToolbox&amp;diff=36454</id>
		<title>Documentation/Nightly/Modules/SurfaceToolbox</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/Nightly/Modules/SurfaceToolbox&amp;diff=36454"/>
		<updated>2013-11-07T23:46:31Z</updated>

		<summary type="html">&lt;p&gt;Lantiga: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;{{documentation/versioncheck}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-header}}&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Introduction and Acknowledgements}}&lt;br /&gt;
&lt;br /&gt;
* Luca Antiga: Orobix Srl&lt;br /&gt;
* Daniel Blezek: Mayo Clinic&lt;br /&gt;
* Ron Kikinis, BWH&lt;br /&gt;
* Steve Pieper, Isomics&lt;br /&gt;
* Contact: Luca Antiga, luca.antiga@orobix.com&lt;br /&gt;
&lt;br /&gt;
{{documentation/{{documentation/version}}/module-introduction-logo-gallery&lt;br /&gt;
|Image:Logo-namicnew2.jpg|NA-MIC&lt;br /&gt;
|Image:Logo-isomics.png|Isomics, Inc.&lt;br /&gt;
|Image:Orobix_logo.jpg|Orobix&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Module Description}}&lt;br /&gt;
{{documentation/{{documentation/version}}/module-description}}&lt;br /&gt;
&lt;br /&gt;
This module supports cleanup and optimization processes on surface models, namely&lt;br /&gt;
&lt;br /&gt;
* Decimation: topology-preserving reduction of surface triangles&lt;br /&gt;
* Smoothing: surface regularization using a Laplacian filter or Taubin's [1] non-shrinking algorithm&lt;br /&gt;
* Normals: generation of surface normals (for geometry algorithms or for improving visualization, since surface shading rendering needs normals to be defined on the surface) &lt;br /&gt;
* Cleaner: merging of coincident points, removal of unused points (i.e. not used by any cell), treatment of degenerate cells&lt;br /&gt;
* Connectivity: extraction of the largest connected portion of the surface model&lt;br /&gt;
&lt;br /&gt;
The filters are arranged in a pipeline following the order in which they are listed above. Individual filters can be activated/deactivated by pressing/depressing the respective buttons. In case a filter needs parameters to be specified, a panel will be shown when the filter is activated.&lt;br /&gt;
&lt;br /&gt;
Clicking Apply will run the filters in the pipeline and produce an output. Clicking on the Toggle Models button will toggle the visibility of the model before and after filtering.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Use Cases}}&lt;br /&gt;
&lt;br /&gt;
The module is appropriate when a surface has been extracted (e.g. with the Model Maker module) but its appearance has to be improved.&lt;br /&gt;
&lt;br /&gt;
This module supports various cleanup and optimization processes on surface models.  For example, a noisy image data set can lead to models that have bumpy surfaces which do not accurately depict the actual anatomy of interest.  In this case, the model can be smoothed to better approximate the actual surface.  &lt;br /&gt;
&lt;br /&gt;
Another application is to reduce the geometric complexity of surface models using decimation to reduce the file size or rendering time of the models.&lt;br /&gt;
&lt;br /&gt;
Normals are used to improve the visual appearance of STL surfaces rendered as flat polygons due to a lack in normal information. Normals should also be recomputed after smoothing, since smoothing doesn't re-orient normals and shading depends on normal orientation. Activating Splitting, feature edges (i.e. seams in the surface) will be visually enhanced through the creation of a discontinuity in surface normal orientation producing a discontinuity in surface shading.&lt;br /&gt;
&lt;br /&gt;
Connectivity can be employed after the extraction of an isosurface using Grayscale Model Maker, in order to get rid of tiny pieces of surface associated to noise with intensity greater than the isosurface level.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[Image:SurfaceToolbox_Original.png|thumb|520px|Surface obtained using Grayscale Model Maker]]&lt;br /&gt;
|[[Image:SurfaceToolbox_Filtered.png|thumb|520px|Filtered surface]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Tutorials}}&lt;br /&gt;
N/A&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Panels}}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[Image:SurfaceToolbox.png|thumb|520px|SurfaceToolbox User Interface]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Select the input and output models, and then enable the stages of the pipeline by selecting the buttons. Stages that include parameters will open up when they are enabled. Click apply to activate the pipeline and then click the Toggle button to compare the model before and after the operation.&lt;br /&gt;
&lt;br /&gt;
** ''Input Model'': the input model&lt;br /&gt;
** ''Output Model'': the output model, i.e. the input model filtered through all the &amp;quot;Enabled&amp;quot; filters.&lt;br /&gt;
&lt;br /&gt;
* '''Decimation:'''&lt;br /&gt;
** ''Enabled'': enable topology-preserving surface decimation.&lt;br /&gt;
** ''Target reduction'': target percentage reduction in number of triangles (this target reduction may not be achieved depending on the constraints on the topology).&lt;br /&gt;
** ''Boundary vertex deletion'': allow deletion of points located on the boundary of the surface.&lt;br /&gt;
* '''Smoothing:'''&lt;br /&gt;
** ''Enabled'': enable surface smoothing.&lt;br /&gt;
** ''Smoothing method'': choose between Laplace or Taubin [1] surface smoothing algorithms (while Taubin is a non-shrinking filter, Laplace will tend to shrink the surface under the effect of curvature).&lt;br /&gt;
** ''Boundary smoothing'': allow smoothing of points located on the boundary of the surface.&lt;br /&gt;
** ''Laplace number of iterations'': number of iterations set when the Laplace algorithm is selected.&lt;br /&gt;
** ''Laplace relaxation factor'': the factor by which a point moves towards the barycenter of its neighbors in the Laplace algorithm.&lt;br /&gt;
** ''Taubin number of iterations'': number of iterations set when the Taubin algorithm is selected.&lt;br /&gt;
** ''Taubin passband'': spatial frequency cutoff for the Taubin algorithm.&lt;br /&gt;
* '''Normals:'''&lt;br /&gt;
** ''Enabled'': enable computation of consistently-oriented surface normals (advised after smoothing - smoothing algorithms only move points and do not update normals accordingly, so the surface might still look non-smooth after smoothing when Gouraud shading is used).&lt;br /&gt;
** ''Flip normals'': toggle direction of normals - the algorithm will do its best to orient the normals consistently &amp;quot;outwards&amp;quot; a surface, if the surface is orientable. This switch will make normals point &amp;quot;inwards&amp;quot;&lt;br /&gt;
** ''Splitting'': toggle splitting of surface when angle between the normals of two neighboring triangles is above the Feature angle. This improves the shading appearance of sharp edges but produces topological holes in the surface.&lt;br /&gt;
** ''Feature angle'': angle (in degrees) between two neighboring triangles beyond which the edge between the triangles is split. &lt;br /&gt;
* '''Cleaner:'''&lt;br /&gt;
** ''Enabled'': enable cleaning (merging of coincident points, elimination of unused points, treatment of degenerate cells) of the surface.&lt;br /&gt;
* '''Connectivity:'''&lt;br /&gt;
** ''Enabled'': enable extracting the largest connected portion of the surface and getting rid of the rest.&lt;br /&gt;
&lt;br /&gt;
* '''Toggle Models:'''&lt;br /&gt;
** ''Clicked'': toggle the visualization of the input or the output model, allowing to compare them and visualize the effect of filtering.&lt;br /&gt;
* '''Apply:'''&lt;br /&gt;
** ''Clicked'': apply the pipeline of all Enabled filters to the input model and produce the output model.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|References}}&lt;br /&gt;
&lt;br /&gt;
[1] IBM tech report RC-20404 (#90237, dated 3/12/96) &amp;quot;Optimal Surface Smoothing as Filter Design&amp;quot; G. Taubin, T. Zhang and G. Golub&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Information for Developers}}&lt;br /&gt;
{{documentation/{{documentation/version}}/module-developerinfo}}&lt;br /&gt;
&lt;br /&gt;
The implementation isolates the module state in a class object defined in the setup method of the SurfaceToolboxWidget class. &lt;br /&gt;
&lt;br /&gt;
A custom connect function, wrapping Qt's signal/slot connect, is defined within the setup method, allowing to concisely connect all signals originating from GUI controls to slots setting a variable in the state object in one line.&lt;br /&gt;
&lt;br /&gt;
An updateGUI function is defined within the setup method, where controls take values from the state object. At the end of the setup method, self.updateGUI is set to the updateGUI function defined in setup. This allows updateGUI to close over (see [http://en.wikipedia.org/wiki/Closure_(computer_science) closures]), all widget objects instantiated in the setup method. This bypasses the need for making every widget an instance variable and having it connect to an instance method, achieving greater conciseness. An analogous technique is used for the onApply and onToggleModels functions, which are defined in the setup method body and then directly passed to the connect method of the respective widgets.&lt;br /&gt;
&lt;br /&gt;
The SurfaceToolboxLogic class is in charge of executing the filtering pipeline. It is a stateless class, its applyFilters method takes the state defined in SurfaceToolboxWidget's setup method as an argument and configures the processing pipeline accordingly.&lt;br /&gt;
&lt;br /&gt;
The module internally uses the following VTK filters:&lt;br /&gt;
&lt;br /&gt;
[http://www.vtk.org/doc/nightly/html/classvtkDecimatePro.html vtkDecimatePro]&lt;br /&gt;
&lt;br /&gt;
[http://www.vtk.org/doc/nightly/html/classvtkSmoothPolyDataFilter.html vtkSmoothPolyDataFilter]&lt;br /&gt;
&lt;br /&gt;
[http://www.vtk.org/doc/nightly/html/classvtkWindowedSincPolyDataFilter.html vtkWindowedSincPolyDataFilter]&lt;br /&gt;
&lt;br /&gt;
[http://www.vtk.org/doc/nightly/html/classvtkPolyDataNormals.html vtkPolyDataNormals]&lt;br /&gt;
&lt;br /&gt;
[http://www.vtk.org/doc/nightly/html/classvtkCleanPolyData.html vtkCleanPolyData]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-footer}}&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lantiga</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=File:SurfaceToolbox_Filtered.png&amp;diff=36453</id>
		<title>File:SurfaceToolbox Filtered.png</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=File:SurfaceToolbox_Filtered.png&amp;diff=36453"/>
		<updated>2013-11-07T23:44:13Z</updated>

		<summary type="html">&lt;p&gt;Lantiga: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Lantiga</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=File:SurfaceToolbox_Original.png&amp;diff=36452</id>
		<title>File:SurfaceToolbox Original.png</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=File:SurfaceToolbox_Original.png&amp;diff=36452"/>
		<updated>2013-11-07T23:43:25Z</updated>

		<summary type="html">&lt;p&gt;Lantiga: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Lantiga</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/4.3/Modules/SurfaceToolbox&amp;diff=36450</id>
		<title>Documentation/4.3/Modules/SurfaceToolbox</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/4.3/Modules/SurfaceToolbox&amp;diff=36450"/>
		<updated>2013-11-07T23:41:55Z</updated>

		<summary type="html">&lt;p&gt;Lantiga: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;{{documentation/versioncheck}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-header}}&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Introduction and Acknowledgements}}&lt;br /&gt;
&lt;br /&gt;
* Luca Antiga: Orobix Srl&lt;br /&gt;
* Daniel Blezek: Mayo Clinic&lt;br /&gt;
* Ron Kikinis, BWH&lt;br /&gt;
* Steve Pieper, Isomics&lt;br /&gt;
* Contact: Luca Antiga, luca.antiga@orobix.com&lt;br /&gt;
&lt;br /&gt;
{{documentation/{{documentation/version}}/module-introduction-logo-gallery&lt;br /&gt;
|Image:Logo-namicnew2.jpg|NA-MIC&lt;br /&gt;
|Image:Logo-isomics.png|Isomics, Inc.&lt;br /&gt;
|Image:Orobix_logo.jpg|Orobix&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Module Description}}&lt;br /&gt;
{{documentation/{{documentation/version}}/module-description}}&lt;br /&gt;
&lt;br /&gt;
This module supports cleanup and optimization processes on surface models, namely&lt;br /&gt;
&lt;br /&gt;
* Decimation: topology-preserving reduction of surface triangles&lt;br /&gt;
* Smoothing: surface regularization using a Laplacian filter or Taubin's [1] non-shrinking algorithm&lt;br /&gt;
* Normals: generation of surface normals (for geometry algorithms or for improving visualization, since surface shading rendering needs normals to be defined on the surface) &lt;br /&gt;
* Cleaner: merging of coincident points, removal of unused points (i.e. not used by any cell), treatment of degenerate cells&lt;br /&gt;
* Connectivity: extraction of the largest connected portion of the surface model&lt;br /&gt;
&lt;br /&gt;
The filters are arranged in a pipeline following the order in which they are listed above. Individual filters can be activated/deactivated by pressing/depressing the respective buttons. In case a filter needs parameters to be specified, a panel will be shown when the filter is activated.&lt;br /&gt;
&lt;br /&gt;
Clicking Apply will run the filters in the pipeline and produce an output. Clicking on the Toggle Models button will toggle the visibility of the model before and after filtering.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Use Cases}}&lt;br /&gt;
&lt;br /&gt;
The module is appropriate when a surface has been extracted (e.g. with the Model Maker module) but its appearance has to be improved.&lt;br /&gt;
&lt;br /&gt;
This module supports various cleanup and optimization processes on surface models.  For example, a noisy image data set can lead to models that have bumpy surfaces which do not accurately depict the actual anatomy of interest.  In this case, the model can be smoothed to better approximate the actual surface.  &lt;br /&gt;
&lt;br /&gt;
Another application is to reduce the geometric complexity of surface models using decimation to reduce the file size or rendering time of the models.&lt;br /&gt;
&lt;br /&gt;
Normals are used to improve the visual appearance of STL surfaces rendered as flat polygons due to a lack in normal information. Normals should also be recomputed after smoothing, since smoothing doesn't re-orient normals and shading depends on normal orientation. Activating Splitting, feature edges (i.e. seams in the surface) will be visually enhanced through the creation of a discontinuity in surface normal orientation producing a discontinuity in surface shading.&lt;br /&gt;
&lt;br /&gt;
Connectivity can be employed after the extraction of an isosurface using Grayscale Model Maker, in order to get rid of tiny pieces of surface associated to noise with intensity greater than the isosurface level.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[Image:SurfaceToolbox_Original.png|thumb|520px|Surface obtained using Grayscale Model Maker]]&lt;br /&gt;
|[[Image:SurfaceToolbox_Filtered.png|thumb|520px|Filtered surface]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Tutorials}}&lt;br /&gt;
N/A&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Panels}}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[Image:SurfaceToolbox.png|thumb|520px|SurfaceToolbox User Interface]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Select the input and output models, and then enable the stages of the pipeline by selecting the buttons. Stages that include parameters will open up when they are enabled. Click apply to activate the pipeline and then click the Toggle button to compare the model before and after the operation.&lt;br /&gt;
&lt;br /&gt;
** ''Input Model'': the input model&lt;br /&gt;
** ''Output Model'': the output model, i.e. the input model filtered through all the &amp;quot;Enabled&amp;quot; filters.&lt;br /&gt;
&lt;br /&gt;
* '''Decimation:'''&lt;br /&gt;
** ''Enabled'': enable topology-preserving surface decimation.&lt;br /&gt;
** ''Target reduction'': target percentage reduction in number of triangles (this target reduction may not be achieved depending on the constraints on the topology).&lt;br /&gt;
** ''Boundary vertex deletion'': allow deletion of points located on the boundary of the surface.&lt;br /&gt;
* '''Smoothing:'''&lt;br /&gt;
** ''Enabled'': enable surface smoothing.&lt;br /&gt;
** ''Smoothing method'': choose between Laplace or Taubin [1] surface smoothing algorithms (while Taubin is a non-shrinking filter, Laplace will tend to shrink the surface under the effect of curvature).&lt;br /&gt;
** ''Boundary smoothing'': allow smoothing of points located on the boundary of the surface.&lt;br /&gt;
** ''Laplace number of iterations'': number of iterations set when the Laplace algorithm is selected.&lt;br /&gt;
** ''Laplace relaxation factor'': the factor by which a point moves towards the barycenter of its neighbors in the Laplace algorithm.&lt;br /&gt;
** ''Taubin number of iterations'': number of iterations set when the Taubin algorithm is selected.&lt;br /&gt;
** ''Taubin passband'': spatial frequency cutoff for the Taubin algorithm.&lt;br /&gt;
* '''Normals:'''&lt;br /&gt;
** ''Enabled'': enable computation of consistently-oriented surface normals (advised after smoothing - smoothing algorithms only move points and do not update normals accordingly, so the surface might still look non-smooth after smoothing when Gouraud shading is used).&lt;br /&gt;
** ''Flip normals'': toggle direction of normals - the algorithm will do its best to orient the normals consistently &amp;quot;outwards&amp;quot; a surface, if the surface is orientable. This switch will make normals point &amp;quot;inwards&amp;quot;&lt;br /&gt;
** ''Splitting'': toggle splitting of surface when angle between the normals of two neighboring triangles is above the Feature angle. This improves the shading appearance of sharp edges but produces topological holes in the surface.&lt;br /&gt;
** ''Feature angle'': angle (in degrees) between two neighboring triangles beyond which the edge between the triangles is split. &lt;br /&gt;
* '''Cleaner:'''&lt;br /&gt;
** ''Enabled'': enable cleaning (merging of coincident points, elimination of unused points, treatment of degenerate cells) of the surface.&lt;br /&gt;
* '''Connectivity:'''&lt;br /&gt;
** ''Enabled'': enable extracting the largest connected portion of the surface and getting rid of the rest.&lt;br /&gt;
&lt;br /&gt;
* '''Toggle Models:'''&lt;br /&gt;
** ''Clicked'': toggle the visualization of the input or the output model, allowing to compare them and visualize the effect of filtering.&lt;br /&gt;
* '''Apply:'''&lt;br /&gt;
** ''Clicked'': apply the pipeline of all Enabled filters to the input model and produce the output model.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|References}}&lt;br /&gt;
&lt;br /&gt;
[1] IBM tech report RC-20404 (#90237, dated 3/12/96) &amp;quot;Optimal Surface Smoothing as Filter Design&amp;quot; G. Taubin, T. Zhang and G. Golub&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Information for Developers}}&lt;br /&gt;
{{documentation/{{documentation/version}}/module-developerinfo}}&lt;br /&gt;
&lt;br /&gt;
The implementation isolates the module state in a class object defined in the setup method of the SurfaceToolboxWidget class. &lt;br /&gt;
&lt;br /&gt;
A custom connect function, wrapping Qt's signal/slot connect, is defined within the setup method, allowing to concisely connect all signals originating from GUI controls to slots setting a variable in the state object in one line.&lt;br /&gt;
&lt;br /&gt;
An updateGUI function is defined within the setup method, where controls take values from the state object. At the end of the setup method, self.updateGUI is set to the updateGUI function defined in setup. This allows updateGUI to close over (see [http://en.wikipedia.org/wiki/Closure_(computer_science) closures]), all widget objects instantiated in the setup method. This bypasses the need for making every widget an instance variable and having it connect to an instance method, achieving greater conciseness. An analogous technique is used for the onApply and onToggleModels functions, which are defined in the setup method body and then directly passed to the connect method of the respective widgets.&lt;br /&gt;
&lt;br /&gt;
The SurfaceToolboxLogic class is in charge of executing the filtering pipeline. It is a stateless class, its applyFilters method takes the state defined in SurfaceToolboxWidget's setup method as an argument and configures the processing pipeline accordingly.&lt;br /&gt;
&lt;br /&gt;
The module internally uses the following VTK filters:&lt;br /&gt;
&lt;br /&gt;
[http://www.vtk.org/doc/nightly/html/classvtkDecimatePro.html vtkDecimatePro]&lt;br /&gt;
&lt;br /&gt;
[http://www.vtk.org/doc/nightly/html/classvtkSmoothPolyDataFilter.html vtkSmoothPolyDataFilter]&lt;br /&gt;
&lt;br /&gt;
[http://www.vtk.org/doc/nightly/html/classvtkWindowedSincPolyDataFilter.html vtkWindowedSincPolyDataFilter]&lt;br /&gt;
&lt;br /&gt;
[http://www.vtk.org/doc/nightly/html/classvtkPolyDataNormals.html vtkPolyDataNormals]&lt;br /&gt;
&lt;br /&gt;
[http://www.vtk.org/doc/nightly/html/classvtkCleanPolyData.html vtkCleanPolyData]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-footer}}&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lantiga</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/4.3/Modules/SurfaceToolbox&amp;diff=36437</id>
		<title>Documentation/4.3/Modules/SurfaceToolbox</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/4.3/Modules/SurfaceToolbox&amp;diff=36437"/>
		<updated>2013-11-07T22:55:14Z</updated>

		<summary type="html">&lt;p&gt;Lantiga: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;{{documentation/versioncheck}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-header}}&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Introduction and Acknowledgements}}&lt;br /&gt;
&lt;br /&gt;
* Luca Antiga: Orobix Srl&lt;br /&gt;
* Daniel Blezek: Mayo Clinic&lt;br /&gt;
* Ron Kikinis, BWH&lt;br /&gt;
* Steve Pieper, Isomics&lt;br /&gt;
* Contact: Luca Antiga, luca.antiga@orobix.com&lt;br /&gt;
&lt;br /&gt;
{{documentation/{{documentation/version}}/module-introduction-logo-gallery&lt;br /&gt;
|Image:Logo-namicnew2.jpg|NA-MIC&lt;br /&gt;
|Image:Logo-isomics.png|Isomics, Inc.&lt;br /&gt;
|Image:Orobix_logo.jpg|Orobix&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Module Description}}&lt;br /&gt;
{{documentation/{{documentation/version}}/module-description}}&lt;br /&gt;
&lt;br /&gt;
This module supports cleanup and optimization processes on surface models, namely&lt;br /&gt;
&lt;br /&gt;
* Decimation: topology-preserving reduction of surface triangles&lt;br /&gt;
* Smoothing: surface regularization using a Laplacian filter or Taubin's [1] non-shrinking algorithm&lt;br /&gt;
* Normals: generation of surface normals (for geometry algorithms or for improving visualization, since surface shading rendering needs normals to be defined on the surface) &lt;br /&gt;
* Cleaner: merging of coincident points, removal of unused points (i.e. not used by any cell), treatment of degenerate cells&lt;br /&gt;
* Connectivity: extraction of the largest connected portion of the surface model&lt;br /&gt;
&lt;br /&gt;
The filters are arranged in a pipeline following the order in which they are listed above. Individual filters can be activated/deactivated by pressing/depressing the respective buttons. In case a filter needs parameters to be specified, a panel will be shown when the filter is activated.&lt;br /&gt;
&lt;br /&gt;
Clicking Apply will run the filters in the pipeline and produce an output. Clicking on the Toggle Models button will toggle the visibility of the model before and after filtering.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Use Cases}}&lt;br /&gt;
&lt;br /&gt;
The module is appropriate when a surface has been extracted (e.g. with the Model Maker module) but its appearance has to be improved.&lt;br /&gt;
&lt;br /&gt;
This module supports various cleanup and optimization processes on surface models.  For example, a noisy image data set can lead to models that have bumpy surfaces which do not accurately depict the actual anatomy of interest.  In this case, the model can be smoothed to better approximate the actual surface.  &lt;br /&gt;
&lt;br /&gt;
Another application is to reduce the geometric complexity of surface models using decimation to reduce the file size or rendering time of the models.&lt;br /&gt;
&lt;br /&gt;
Normals are used to improve the visual appearance of STL surfaces rendered as flat polygons due to a lack in normal information. Normals should also be recomputed after smoothing, since smoothing doesn't re-orient normals and shading depends on normal orientation. Activating Splitting, feature edges (i.e. seams in the surface) will be visually enhanced through the creation of a discontinuity in surface normal orientation producing a discontinuity in surface shading.&lt;br /&gt;
&lt;br /&gt;
Connectivity can be employed after the extraction of an isosurface using Grayscale Model Maker, in order to get rid of tiny pieces of surface associated to noise with intensity greater than the isosurface level.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Tutorials}}&lt;br /&gt;
N/A&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Panels}}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[Image:SurfaceToolbox.png|thumb|520px|SurfaceToolbox User Interface]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Select the input and output models, and then enable the stages of the pipeline by selecting the buttons. Stages that include parameters will open up when they are enabled. Click apply to activate the pipeline and then click the Toggle button to compare the model before and after the operation.&lt;br /&gt;
&lt;br /&gt;
** ''Input Model'': the input model&lt;br /&gt;
** ''Output Model'': the output model, i.e. the input model filtered through all the &amp;quot;Enabled&amp;quot; filters.&lt;br /&gt;
&lt;br /&gt;
* '''Decimation:'''&lt;br /&gt;
** ''Enabled'': enable topology-preserving surface decimation.&lt;br /&gt;
** ''Target reduction'': target percentage reduction in number of triangles (this target reduction may not be achieved depending on the constraints on the topology).&lt;br /&gt;
** ''Boundary vertex deletion'': allow deletion of points located on the boundary of the surface.&lt;br /&gt;
* '''Smoothing:'''&lt;br /&gt;
** ''Enabled'': enable surface smoothing.&lt;br /&gt;
** ''Smoothing method'': choose between Laplace or Taubin [1] surface smoothing algorithms (while Taubin is a non-shrinking filter, Laplace will tend to shrink the surface under the effect of curvature).&lt;br /&gt;
** ''Boundary smoothing'': allow smoothing of points located on the boundary of the surface.&lt;br /&gt;
** ''Laplace number of iterations'': number of iterations set when the Laplace algorithm is selected.&lt;br /&gt;
** ''Laplace relaxation factor'': the factor by which a point moves towards the barycenter of its neighbors in the Laplace algorithm.&lt;br /&gt;
** ''Taubin number of iterations'': number of iterations set when the Taubin algorithm is selected.&lt;br /&gt;
** ''Taubin passband'': spatial frequency cutoff for the Taubin algorithm.&lt;br /&gt;
* '''Normals:'''&lt;br /&gt;
** ''Enabled'': enable computation of consistently-oriented surface normals (advised after smoothing - smoothing algorithms only move points and do not update normals accordingly, so the surface might still look non-smooth after smoothing when Gouraud shading is used).&lt;br /&gt;
** ''Flip normals'': toggle direction of normals - the algorithm will do its best to orient the normals consistently &amp;quot;outwards&amp;quot; a surface, if the surface is orientable. This switch will make normals point &amp;quot;inwards&amp;quot;&lt;br /&gt;
** ''Splitting'': toggle splitting of surface when angle between the normals of two neighboring triangles is above the Feature angle. This improves the shading appearance of sharp edges but produces topological holes in the surface.&lt;br /&gt;
** ''Feature angle'': angle (in degrees) between two neighboring triangles beyond which the edge between the triangles is split. &lt;br /&gt;
* '''Cleaner:'''&lt;br /&gt;
** ''Enabled'': enable cleaning (merging of coincident points, elimination of unused points, treatment of degenerate cells) of the surface.&lt;br /&gt;
* '''Connectivity:'''&lt;br /&gt;
** ''Enabled'': enable extracting the largest connected portion of the surface and getting rid of the rest.&lt;br /&gt;
&lt;br /&gt;
* '''Toggle Models:'''&lt;br /&gt;
** ''Clicked'': toggle the visualization of the input or the output model, allowing to compare them and visualize the effect of filtering.&lt;br /&gt;
* '''Apply:'''&lt;br /&gt;
** ''Clicked'': apply the pipeline of all Enabled filters to the input model and produce the output model.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|References}}&lt;br /&gt;
&lt;br /&gt;
[1] IBM tech report RC-20404 (#90237, dated 3/12/96) &amp;quot;Optimal Surface Smoothing as Filter Design&amp;quot; G. Taubin, T. Zhang and G. Golub&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Information for Developers}}&lt;br /&gt;
{{documentation/{{documentation/version}}/module-developerinfo}}&lt;br /&gt;
&lt;br /&gt;
The implementation isolates the module state in a class object defined in the setup method of the SurfaceToolboxWidget class. &lt;br /&gt;
&lt;br /&gt;
A custom connect function, wrapping Qt's signal/slot connect, is defined within the setup method, allowing to concisely connect all signals originating from GUI controls to slots setting a variable in the state object in one line.&lt;br /&gt;
&lt;br /&gt;
An updateGUI function is defined within the setup method, where controls take values from the state object. At the end of the setup method, self.updateGUI is set to the updateGUI function defined in setup. This allows updateGUI to close over (see [http://en.wikipedia.org/wiki/Closure_(computer_science) closures]), all widget objects instantiated in the setup method. This bypasses the need for making every widget an instance variable and having it connect to an instance method, achieving greater conciseness. An analogous technique is used for the onApply and onToggleModels functions, which are defined in the setup method body and then directly passed to the connect method of the respective widgets.&lt;br /&gt;
&lt;br /&gt;
The SurfaceToolboxLogic class is in charge of executing the filtering pipeline. It is a stateless class, its applyFilters method takes the state defined in SurfaceToolboxWidget's setup method as an argument and configures the processing pipeline accordingly.&lt;br /&gt;
&lt;br /&gt;
The module internally uses the following VTK filters:&lt;br /&gt;
&lt;br /&gt;
[http://www.vtk.org/doc/nightly/html/classvtkDecimatePro.html vtkDecimatePro]&lt;br /&gt;
&lt;br /&gt;
[http://www.vtk.org/doc/nightly/html/classvtkSmoothPolyDataFilter.html vtkSmoothPolyDataFilter]&lt;br /&gt;
&lt;br /&gt;
[http://www.vtk.org/doc/nightly/html/classvtkWindowedSincPolyDataFilter.html vtkWindowedSincPolyDataFilter]&lt;br /&gt;
&lt;br /&gt;
[http://www.vtk.org/doc/nightly/html/classvtkPolyDataNormals.html vtkPolyDataNormals]&lt;br /&gt;
&lt;br /&gt;
[http://www.vtk.org/doc/nightly/html/classvtkCleanPolyData.html vtkCleanPolyData]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-footer}}&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lantiga</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/4.3/Modules/SurfaceToolbox&amp;diff=36436</id>
		<title>Documentation/4.3/Modules/SurfaceToolbox</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/4.3/Modules/SurfaceToolbox&amp;diff=36436"/>
		<updated>2013-11-07T22:53:04Z</updated>

		<summary type="html">&lt;p&gt;Lantiga: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;{{documentation/versioncheck}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-header}}&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Introduction and Acknowledgements}}&lt;br /&gt;
&lt;br /&gt;
* Luca Antiga: Orobix Srl&lt;br /&gt;
* Daniel Blezek: Mayo Clinic&lt;br /&gt;
* Ron Kikinis, BWH&lt;br /&gt;
* Steve Pieper, Isomics&lt;br /&gt;
* Contact: Luca Antiga, luca.antiga@orobix.com&lt;br /&gt;
&lt;br /&gt;
{{documentation/{{documentation/version}}/module-introduction-logo-gallery&lt;br /&gt;
|Image:Logo-namicnew2.jpg|NA-MIC&lt;br /&gt;
|Image:Logo-isomics.png|Isomics, Inc.&lt;br /&gt;
|Image:Orobix_logo.jpg|Orobix&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Module Description}}&lt;br /&gt;
{{documentation/{{documentation/version}}/module-description}}&lt;br /&gt;
&lt;br /&gt;
This module supports cleanup and optimization processes on surface models, namely&lt;br /&gt;
&lt;br /&gt;
* Decimation: topology-preserving reduction of surface triangles&lt;br /&gt;
* Smoothing: surface regularization using a Laplacian filter or Taubin's [1] non-shrinking algorithm&lt;br /&gt;
* Normals: generation of surface normals (for geometry algorithms or for improving visualization, since surface shading rendering needs normals to be defined on the surface) &lt;br /&gt;
* Cleaner: merging of coincident points, removal of unused points (i.e. not used by any cell), treatment of degenerate cells&lt;br /&gt;
* Connectivity: extraction of the largest connected portion of the surface model&lt;br /&gt;
&lt;br /&gt;
The filters are arranged in a pipeline following the order in which they are listed above. Individual filters can be activated/deactivated by pressing/depressing the respective buttons. In case a filter needs parameters to be specified, a panel will be shown when the filter is activated.&lt;br /&gt;
&lt;br /&gt;
Clicking Apply will run the filters in the pipeline and produce an output. Clicking on the Toggle Models button will toggle the visibility of the model before and after filtering.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Use Cases}}&lt;br /&gt;
&lt;br /&gt;
The module is appropriate when a surface has been extracted (e.g. with the Model Maker module) but its appearance has to be improved.&lt;br /&gt;
&lt;br /&gt;
This module supports various cleanup and optimization processes on surface models.  For example, a noisy image data set can lead to models that have bumpy surfaces which do not accurately depict the actual anatomy of interest.  In this case, the model can be smoothed to better approximate the actual surface.  &lt;br /&gt;
&lt;br /&gt;
Another application is to reduce the geometric complexity of surface models using decimation to reduce the file size or rendering time of the models.&lt;br /&gt;
&lt;br /&gt;
Normals are used to improve the visual appearance of STL surfaces rendered as flat polygons due to a lack in normal information. Normals should also be recomputed after smoothing, since smoothing doesn't re-orient normals and shading depends on normal orientation. Activating Splitting, feature edges (i.e. seams in the surface) will be visually enhanced through the creation of a discontinuity in surface normal orientation producing a discontinuity in surface shading.&lt;br /&gt;
&lt;br /&gt;
Connectivity can be employed after the extraction of an isosurface using Grayscale Model Maker, in order to get rid of tiny pieces of surface associated to noise with intensity greater than the isosurface level.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Tutorials}}&lt;br /&gt;
N/A&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Panels}}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[Image:SurfaceToolbox.png|thumb|520px|SurfaceToolbox User Interface]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Select the input and output models, and then enable the stages of the pipeline by selecting the buttons. Stages that include parameters will open up when they are enabled. Click apply to activate the pipeline and then click the Toggle button to compare the model before and after the operation.&lt;br /&gt;
&lt;br /&gt;
** ''Input Model'': the input model&lt;br /&gt;
** ''Output Model'': the output model, i.e. the input model filtered through all the &amp;quot;Enabled&amp;quot; filters.&lt;br /&gt;
&lt;br /&gt;
* '''Decimation:'''&lt;br /&gt;
** ''Enabled'': enable topology-preserving surface decimation.&lt;br /&gt;
** ''Target reduction'': target percentage reduction in number of triangles (this target reduction may not be achieved depending on the constraints on the topology).&lt;br /&gt;
** ''Boundary vertex deletion'': allow deletion of points located on the boundary of the surface.&lt;br /&gt;
* '''Smoothing:'''&lt;br /&gt;
** ''Enabled'': enable surface smoothing.&lt;br /&gt;
** ''Smoothing method'': choose between Laplace or Taubin [1] surface smoothing algorithms (while Taubin is a non-shrinking filter, Laplace will tend to shrink the surface under the effect of curvature).&lt;br /&gt;
** ''Boundary smoothing'': allow smoothing of points located on the boundary of the surface.&lt;br /&gt;
** ''Laplace number of iterations'': number of iterations set when the Laplace algorithm is selected.&lt;br /&gt;
** ''Laplace relaxation factor'': the factor by which a point moves towards the barycenter of its neighbors in the Laplace algorithm.&lt;br /&gt;
** ''Taubin number of iterations'': number of iterations set when the Taubin algorithm is selected.&lt;br /&gt;
** ''Taubin passband'': spatial frequency cutoff for the Taubin algorithm.&lt;br /&gt;
* '''Normals:'''&lt;br /&gt;
** ''Enabled'': enable computation of consistently-oriented surface normals (advised after smoothing - smoothing algorithms only move points and do not update normals accordingly, so the surface might still look non-smooth after smoothing when Gouraud shading is used).&lt;br /&gt;
** ''Flip normals'': toggle direction of normals - the algorithm will do its best to orient the normals consistently &amp;quot;outwards&amp;quot; a surface, if the surface is orientable. This switch will make normals point &amp;quot;inwards&amp;quot;&lt;br /&gt;
** ''Splitting'': toggle splitting of surface when angle between the normals of two neighboring triangles is above the Feature angle. This improves the shading appearance of sharp edges but produces topological holes in the surface.&lt;br /&gt;
** ''Feature angle'': angle (in degrees) between two neighboring triangles beyond which the edge between the triangles is split. &lt;br /&gt;
* '''Cleaner:'''&lt;br /&gt;
** ''Enabled'': enable cleaning (merging of coincident points, elimination of unused points, treatment of degenerate cells) of the surface.&lt;br /&gt;
* '''Connectivity:'''&lt;br /&gt;
** ''Enabled'': enable extracting the largest connected portion of the surface and getting rid of the rest.&lt;br /&gt;
&lt;br /&gt;
* '''Toggle Models:'''&lt;br /&gt;
** ''Clicked'': toggle the visualization of the input or the output model, allowing to compare them and visualize the effect of filtering.&lt;br /&gt;
* '''Apply:'''&lt;br /&gt;
** ''Clicked'': apply the pipeline of all Enabled filters to the input model and produce the output model.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|References}}&lt;br /&gt;
&lt;br /&gt;
[1] IBM tech report RC-20404 (#90237, dated 3/12/96) &amp;quot;Optimal Surface Smoothing as Filter Design&amp;quot; G. Taubin, T. Zhang and G. Golub&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Information for Developers}}&lt;br /&gt;
{{documentation/{{documentation/version}}/module-developerinfo}}&lt;br /&gt;
&lt;br /&gt;
The implementation isolates the module state in a class object defined in the setup method of the SurfaceToolboxWidget class. &lt;br /&gt;
&lt;br /&gt;
A custom connect function, wrapping Qt's signal/slot connect, is defined within the setup method, allowing to concisely connect all signals originating from GUI controls to slots setting a variable in the state object in one line.&lt;br /&gt;
&lt;br /&gt;
An updateGUI function is defined within the setup method, where controls take values from the state object. At the end of the setup method, self.updateGUI is set to the updateGUI function defined in setup. This allows updateGUI to close over (see [http://en.wikipedia.org/wiki/Closure_(computer_science) closures]), all widget objects instantiated in the setup method. This bypasses the need for making every widget an instance variable and having it connect to an instance method, achieving greater conciseness. An analogous technique is used for the onApply and onToggleModels functions, which are defined in the setup method body and then directly passed to the connect method of the respective widgets.&lt;br /&gt;
&lt;br /&gt;
The module internally uses the following VTK filters:&lt;br /&gt;
&lt;br /&gt;
[http://www.vtk.org/doc/nightly/html/classvtkDecimatePro.html vtkDecimatePro]&lt;br /&gt;
&lt;br /&gt;
[http://www.vtk.org/doc/nightly/html/classvtkSmoothPolyDataFilter.html vtkSmoothPolyDataFilter]&lt;br /&gt;
&lt;br /&gt;
[http://www.vtk.org/doc/nightly/html/classvtkWindowedSincPolyDataFilter.html vtkWindowedSincPolyDataFilter]&lt;br /&gt;
&lt;br /&gt;
[http://www.vtk.org/doc/nightly/html/classvtkPolyDataNormals.html vtkPolyDataNormals]&lt;br /&gt;
&lt;br /&gt;
[http://www.vtk.org/doc/nightly/html/classvtkCleanPolyData.html vtkCleanPolyData]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-footer}}&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lantiga</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/4.3/Modules/SurfaceToolbox&amp;diff=36435</id>
		<title>Documentation/4.3/Modules/SurfaceToolbox</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/4.3/Modules/SurfaceToolbox&amp;diff=36435"/>
		<updated>2013-11-07T22:35:06Z</updated>

		<summary type="html">&lt;p&gt;Lantiga: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;{{documentation/versioncheck}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-header}}&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Introduction and Acknowledgements}}&lt;br /&gt;
&lt;br /&gt;
* Luca Antiga: Orobix Srl&lt;br /&gt;
* Daniel Blezek: Mayo Clinic&lt;br /&gt;
* Ron Kikinis, BWH&lt;br /&gt;
* Steve Pieper, Isomics&lt;br /&gt;
* Contact: Luca Antiga, luca.antiga@orobix.com&lt;br /&gt;
&lt;br /&gt;
{{documentation/{{documentation/version}}/module-introduction-logo-gallery&lt;br /&gt;
|Image:Logo-namicnew2.jpg|NA-MIC&lt;br /&gt;
|Image:Logo-isomics.png|Isomics, Inc.&lt;br /&gt;
|Image:Orobix_logo.jpg|Orobix&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Module Description}}&lt;br /&gt;
{{documentation/{{documentation/version}}/module-description}}&lt;br /&gt;
&lt;br /&gt;
This module supports cleanup and optimization processes on surface models, namely&lt;br /&gt;
&lt;br /&gt;
* Decimation: topology-preserving reduction of surface triangles&lt;br /&gt;
* Smoothing: surface regularization using a Laplacian filter or Taubin's [1] non-shrinking algorithm&lt;br /&gt;
* Normals: generation of surface normals (for geometry algorithms or for improving visualization, since surface shading rendering needs normals to be defined on the surface) &lt;br /&gt;
* Cleaner: merging of coincident points, removal of unused points (i.e. not used by any cell), treatment of degenerate cells&lt;br /&gt;
* Connectivity: extraction of the largest connected portion of the surface model&lt;br /&gt;
&lt;br /&gt;
The filters are arranged in a pipeline following the order in which they are listed above. Individual filters can be activated/deactivated by pressing/depressing the respective buttons. In case a filter needs parameters to be specified, a panel will be shown when the filter is activated.&lt;br /&gt;
&lt;br /&gt;
Clicking Apply will run the filters in the pipeline and produce an output. Clicking on the Toggle Models button will toggle the visibility of the model before and after filtering.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Use Cases}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The module is appropriate when a surface has been extracted (e.g. with the Model Maker module) but its appearance has to be improved.&lt;br /&gt;
&lt;br /&gt;
This module supports various cleanup and optimization processes on surface models.  For example, a noisy image data set can lead to models that have bumpy surfaces which do not accurately depict the actual anatomy of interest.  In this case, the model can be smoothed to better approximate the actual surface.  &lt;br /&gt;
&lt;br /&gt;
Another application is to reduce the geometric complexity of surface models using decimation to reduce the file size or rendering time of the models.&lt;br /&gt;
&lt;br /&gt;
Normals are used to improve the visual appearance of STL surfaces rendered as flat polygons due to a lack in normal information. Normals should also be recomputed after smoothing, since smoothing doesn't re-orient normals and shading depends on normal orientation. Activating Splitting, feature edges (i.e. seams in the surface) will be visually enhanced through the creation of a discontinuity in surface normal orientation producing a discontinuity in surface shading.&lt;br /&gt;
&lt;br /&gt;
Connectivity can be employed after the extraction of an isosurface using Grayscale Model Maker, in order to get rid of tiny pieces of surface associated to noise with intensity greater than the isosurface level.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Tutorials}}&lt;br /&gt;
N/A&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Panels}}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[Image:SurfaceToolbox.png|thumb|640px|SurfaceToolbox User Interface]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Select the input and output models, and then enable the stages of the pipeline by selecting the buttons. Stages that include parameters will open up when they are enabled. Click apply to activate the pipeline and then click the Toggle button to compare the model before and after the operation.&lt;br /&gt;
&lt;br /&gt;
** ''Input Model'': the input model&lt;br /&gt;
** ''Output Model'': the output model, i.e. the input model filtered through all the &amp;quot;Enabled&amp;quot; filters.&lt;br /&gt;
&lt;br /&gt;
* '''Decimation:'''&lt;br /&gt;
** ''Enabled'': enable topology-preserving surface decimation.&lt;br /&gt;
** ''Target reduction'': target percentage reduction in number of triangles (this target reduction may not be achieved depending on the constraints on the topology).&lt;br /&gt;
** ''Boundary vertex deletion'': allow deletion of points located on the boundary of the surface.&lt;br /&gt;
* '''Smoothing:'''&lt;br /&gt;
** ''Enabled'': enable surface smoothing.&lt;br /&gt;
** ''Smoothing method'': choose between Laplace or Taubin [1] surface smoothing algorithms (while Taubin is a non-shrinking filter, Laplace will tend to shrink the surface under the effect of curvature).&lt;br /&gt;
** ''Boundary smoothing'': allow smoothing of points located on the boundary of the surface.&lt;br /&gt;
** ''Laplace number of iterations'': number of iterations set when the Laplace algorithm is selected.&lt;br /&gt;
** ''Laplace relaxation factor'': the factor by which a point moves towards the barycenter of its neighbors in the Laplace algorithm.&lt;br /&gt;
** ''Taubin number of iterations'': number of iterations set when the Taubin algorithm is selected.&lt;br /&gt;
** ''Taubin passband'': spatial frequency cutoff for the Taubin algorithm.&lt;br /&gt;
* '''Normals:'''&lt;br /&gt;
** ''Enabled'': enable computation of consistently-oriented surface normals (advised after smoothing - smoothing algorithms only move points and do not update normals accordingly, so the surface might still look non-smooth after smoothing when Gouraud shading is used).&lt;br /&gt;
** ''Flip normals'': toggle direction of normals - the algorithm will do its best to orient the normals consistently &amp;quot;outwards&amp;quot; a surface, if the surface is orientable. This switch will make normals point &amp;quot;inwards&amp;quot;&lt;br /&gt;
** ''Splitting'': toggle splitting of surface when angle between the normals of two neighboring triangles is above the Feature angle. This improves the shading appearance of sharp edges but produces topological holes in the surface.&lt;br /&gt;
** ''Feature angle'': angle (in degrees) between two neighboring triangles beyond which the edge between the triangles is split. &lt;br /&gt;
* '''Cleaner:'''&lt;br /&gt;
** ''Enabled'': enable cleaning (merging of coincident points, elimination of unused points, treatment of degenerate cells) of the surface.&lt;br /&gt;
* '''Connectivity:'''&lt;br /&gt;
** ''Enabled'': enable extracting the largest connected portion of the surface and getting rid of the rest.&lt;br /&gt;
&lt;br /&gt;
* '''Toggle Models:'''&lt;br /&gt;
** ''Clicked'': toggle the visualization of the input or the output model, allowing to compare them and visualize the effect of filtering.&lt;br /&gt;
* '''Apply:'''&lt;br /&gt;
** ''Clicked'': apply the pipeline of all Enabled filters to the input model and produce the output model.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|References}}&lt;br /&gt;
&lt;br /&gt;
[1] IBM tech report RC-20404 (#90237, dated 3/12/96) &amp;quot;Optimal Surface Smoothing as Filter Design&amp;quot; G. Taubin, T. Zhang and G. Golub&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Information for Developers}}&lt;br /&gt;
{{documentation/{{documentation/version}}/module-developerinfo}}&lt;br /&gt;
This is a scripted module.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The module internally uses the following VTK filters:&lt;br /&gt;
&lt;br /&gt;
[http://www.vtk.org/doc/nightly/html/classvtkDecimatePro.html vtkDecimatePro]&lt;br /&gt;
&lt;br /&gt;
[http://www.vtk.org/doc/nightly/html/classvtkSmoothPolyDataFilter.html vtkSmoothPolyDataFilter]&lt;br /&gt;
&lt;br /&gt;
[http://www.vtk.org/doc/nightly/html/classvtkWindowedSincPolyDataFilter.html vtkWindowedSincPolyDataFilter]&lt;br /&gt;
&lt;br /&gt;
[http://www.vtk.org/doc/nightly/html/classvtkPolyDataNormals.html vtkPolyDataNormals]&lt;br /&gt;
&lt;br /&gt;
[http://www.vtk.org/doc/nightly/html/classvtkCleanPolyData.html vtkCleanPolyData]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-footer}}&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lantiga</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/4.3/Modules/SurfaceToolbox&amp;diff=36434</id>
		<title>Documentation/4.3/Modules/SurfaceToolbox</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/4.3/Modules/SurfaceToolbox&amp;diff=36434"/>
		<updated>2013-11-07T22:33:39Z</updated>

		<summary type="html">&lt;p&gt;Lantiga: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;{{documentation/versioncheck}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-header}}&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Introduction and Acknowledgements}}&lt;br /&gt;
&lt;br /&gt;
* Luca Antiga: Orobix Srl&lt;br /&gt;
* Daniel Blezek: Mayo Clinic&lt;br /&gt;
* Ron Kikinis, BWH&lt;br /&gt;
* Steve Pieper, Isomics&lt;br /&gt;
* Contact: Luca Antiga, luca.antiga@orobix.com&lt;br /&gt;
&lt;br /&gt;
{{documentation/{{documentation/version}}/module-introduction-logo-gallery&lt;br /&gt;
|Image:Logo-namicnew2.jpg|NA-MIC&lt;br /&gt;
|Image:Logo-isomics.png|Isomics, Inc.&lt;br /&gt;
|Image:Orobix_logo.jpg|Orobix&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Module Description}}&lt;br /&gt;
{{documentation/{{documentation/version}}/module-description}}&lt;br /&gt;
&lt;br /&gt;
This module supports cleanup and optimization processes on surface models, namely&lt;br /&gt;
&lt;br /&gt;
* Decimation: topology-preserving reduction of surface triangles&lt;br /&gt;
* Smoothing: surface regularization using a Laplacian filter or Taubin's [1] non-shrinking algorithm&lt;br /&gt;
* Normals: generation of surface normals (for geometry algorithms or for improving visualization, since surface shading rendering needs normals to be defined on the surface) &lt;br /&gt;
* Cleaner: merging of coincident points, removal of unused points (i.e. not used by any cell), treatment of degenerate cells&lt;br /&gt;
* Connectivity: extraction of the largest connected portion of the surface model&lt;br /&gt;
&lt;br /&gt;
The filters are arranged in a pipeline following the order in which they are listed above. Individual filters can be activated/deactivated by pressing/depressing the respective buttons. In case a filter needs parameters to be specified, a panel will be shown when the filter is activated.&lt;br /&gt;
&lt;br /&gt;
Clicking Apply will run the filters in the pipeline and produce an output. Clicking on the Toggle Models button will toggle the visibility of the model before and after filtering.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Use Cases}}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[Image:SurfaceToolbox.png|thumb|380px|SurfaceToolbox User Interface]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The module is appropriate when a surface has been extracted (e.g. with the Model Maker module) but its appearance has to be improved.&lt;br /&gt;
&lt;br /&gt;
This module supports various cleanup and optimization processes on surface models.  For example, a noisy image data set can lead to models that have bumpy surfaces which do not accurately depict the actual anatomy of interest.  In this case, the model can be smoothed to better approximate the actual surface.  &lt;br /&gt;
&lt;br /&gt;
Another application is to reduce the geometric complexity of surface models using decimation to reduce the file size or rendering time of the models.&lt;br /&gt;
&lt;br /&gt;
Normals are used to improve the visual appearance of STL surfaces rendered as flat polygons due to a lack in normal information. Normals should also be recomputed after smoothing, since smoothing doesn't re-orient normals and shading depends on normal orientation. Activating Splitting, feature edges (i.e. seams in the surface) will be visually enhanced through the creation of a discontinuity in surface normal orientation producing a discontinuity in surface shading.&lt;br /&gt;
&lt;br /&gt;
Connectivity can be employed after the extraction of an isosurface using Grayscale Model Maker, in order to get rid of tiny pieces of surface associated to noise with intensity greater than the isosurface level.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Tutorials}}&lt;br /&gt;
N/A&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Panels}}&lt;br /&gt;
&lt;br /&gt;
Select the input and output models, and then enable the stages of the pipeline by selecting the buttons. Stages that include parameters will open up when they are enabled. Click apply to activate the pipeline and then click the Toggle button to compare the model before and after the operation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
** ''Input Model'': the input model&lt;br /&gt;
** ''Output Model'': the output model, i.e. the input model filtered through all the &amp;quot;Enabled&amp;quot; filters.&lt;br /&gt;
&lt;br /&gt;
* '''Decimation:'''&lt;br /&gt;
** ''Enabled'': enable topology-preserving surface decimation.&lt;br /&gt;
** ''Target reduction'': target percentage reduction in number of triangles (this target reduction may not be achieved depending on the constraints on the topology).&lt;br /&gt;
** ''Boundary vertex deletion'': allow deletion of points located on the boundary of the surface.&lt;br /&gt;
* '''Smoothing:'''&lt;br /&gt;
** ''Enabled'': enable surface smoothing.&lt;br /&gt;
** ''Smoothing method'': choose between Laplace or Taubin [1] surface smoothing algorithms (while Taubin is a non-shrinking filter, Laplace will tend to shrink the surface under the effect of curvature).&lt;br /&gt;
** ''Boundary smoothing'': allow smoothing of points located on the boundary of the surface.&lt;br /&gt;
** ''Laplace number of iterations'': number of iterations set when the Laplace algorithm is selected.&lt;br /&gt;
** ''Laplace relaxation factor'': the factor by which a point moves towards the barycenter of its neighbors in the Laplace algorithm.&lt;br /&gt;
** ''Taubin number of iterations'': number of iterations set when the Taubin algorithm is selected.&lt;br /&gt;
** ''Taubin passband'': spatial frequency cutoff for the Taubin algorithm.&lt;br /&gt;
* '''Normals:'''&lt;br /&gt;
** ''Enabled'': enable computation of consistently-oriented surface normals (advised after smoothing - smoothing algorithms only move points and do not update normals accordingly, so the surface might still look non-smooth after smoothing when Gouraud shading is used).&lt;br /&gt;
** ''Flip normals'': toggle direction of normals - the algorithm will do its best to orient the normals consistently &amp;quot;outwards&amp;quot; a surface, if the surface is orientable. This switch will make normals point &amp;quot;inwards&amp;quot;&lt;br /&gt;
** ''Splitting'': toggle splitting of surface when angle between the normals of two neighboring triangles is above the Feature angle. This improves the shading appearance of sharp edges but produces topological holes in the surface.&lt;br /&gt;
** ''Feature angle'': angle (in degrees) between two neighboring triangles beyond which the edge between the triangles is split. &lt;br /&gt;
* '''Cleaner:'''&lt;br /&gt;
** ''Enabled'': enable cleaning (merging of coincident points, elimination of unused points, treatment of degenerate cells) of the surface.&lt;br /&gt;
* '''Connectivity:'''&lt;br /&gt;
** ''Enabled'': enable extracting the largest connected portion of the surface and getting rid of the rest.&lt;br /&gt;
&lt;br /&gt;
* '''Toggle Models:'''&lt;br /&gt;
** ''Clicked'': toggle the visualization of the input or the output model, allowing to compare them and visualize the effect of filtering.&lt;br /&gt;
* '''Apply:'''&lt;br /&gt;
** ''Clicked'': apply the pipeline of all Enabled filters to the input model and produce the output model.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|References}}&lt;br /&gt;
&lt;br /&gt;
[1] IBM tech report RC-20404 (#90237, dated 3/12/96) &amp;quot;Optimal Surface Smoothing as Filter Design&amp;quot; G. Taubin, T. Zhang and G. Golub&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Information for Developers}}&lt;br /&gt;
{{documentation/{{documentation/version}}/module-developerinfo}}&lt;br /&gt;
This is a scripted module.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The module internally uses the following VTK filters:&lt;br /&gt;
&lt;br /&gt;
[http://www.vtk.org/doc/nightly/html/classvtkDecimatePro.html vtkDecimatePro]&lt;br /&gt;
&lt;br /&gt;
[http://www.vtk.org/doc/nightly/html/classvtkSmoothPolyDataFilter.html vtkSmoothPolyDataFilter]&lt;br /&gt;
&lt;br /&gt;
[http://www.vtk.org/doc/nightly/html/classvtkWindowedSincPolyDataFilter.html vtkWindowedSincPolyDataFilter]&lt;br /&gt;
&lt;br /&gt;
[http://www.vtk.org/doc/nightly/html/classvtkPolyDataNormals.html vtkPolyDataNormals]&lt;br /&gt;
&lt;br /&gt;
[http://www.vtk.org/doc/nightly/html/classvtkCleanPolyData.html vtkCleanPolyData]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-footer}}&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lantiga</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/4.3/Modules/SurfaceToolbox&amp;diff=36433</id>
		<title>Documentation/4.3/Modules/SurfaceToolbox</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/4.3/Modules/SurfaceToolbox&amp;diff=36433"/>
		<updated>2013-11-07T22:15:05Z</updated>

		<summary type="html">&lt;p&gt;Lantiga: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;{{documentation/versioncheck}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-header}}&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Introduction and Acknowledgements}}&lt;br /&gt;
&lt;br /&gt;
* Luca Antiga: Orobix Srl&lt;br /&gt;
* Daniel Blezek: Mayo Clinic&lt;br /&gt;
* Ron Kikinis, BWH&lt;br /&gt;
* Steve Pieper, Isomics&lt;br /&gt;
* Contact: Luca Antiga, luca.antiga@orobix.com&lt;br /&gt;
&lt;br /&gt;
{{documentation/{{documentation/version}}/module-introduction-logo-gallery&lt;br /&gt;
|Image:Logo-namicnew2.jpg|NA-MIC&lt;br /&gt;
|Image:Logo-isomics.png|Isomics, Inc.&lt;br /&gt;
|Image:Orobix_logo.jpg|Orobix&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Module Description}}&lt;br /&gt;
{{documentation/{{documentation/version}}/module-description}}&lt;br /&gt;
&lt;br /&gt;
This module supports cleanup and optimization processes on surface models, namely&lt;br /&gt;
&lt;br /&gt;
* Decimation: topology-preserving reduction of surface triangles&lt;br /&gt;
* Smoothing: surface regularization using a Laplacian filter or Taubin's non-shrinking algorithm&lt;br /&gt;
* Normals: generation of surface normals (for geometry algorithms or for improving visualization, since surface shading rendering needs normals to be defined on the surface) &lt;br /&gt;
* Cleaner: merging of coincident points, removal of unused points (i.e. not used by any cell), treatment of degenerate cells&lt;br /&gt;
* Connectivity: extraction of the largest connected portion of the surface model&lt;br /&gt;
&lt;br /&gt;
The filters are arranged in a pipeline following the order in which they are listed above. Individual filters can be activated/deactivated by pressing/depressing the respective buttons. In case a filter needs parameters to be specified, a panel will be shown when the filter is activated.&lt;br /&gt;
&lt;br /&gt;
Clicking Apply will run the filters in the pipeline and produce an output. Clicking on the Toggle Models button will toggle the visibility of the model before and after filtering.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Use Cases}}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[Image:SurfaceToolbox.png|thumb|380px|SurfaceToolbox User Interface]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The module is appropriate when a surface has been extracted (e.g. with the Modelmaker module) but its appearance has to be improved.&lt;br /&gt;
&lt;br /&gt;
This module supports various cleanup and optimization processes on surface models.  For example, a noisy image data set can lead to models that have bumpy surfaces which do not accurately depict the actual anatomy of interest.  In this case, the model can be smoothed to better approximate the actual surface.  &lt;br /&gt;
&lt;br /&gt;
Another application is to reduce the geometric complexity of surface models using decimation to reduce the file size or rendering time of the models.&lt;br /&gt;
&lt;br /&gt;
Normals are used to improve the visual appearance of STL surfaces rendered as flat polygons due to a lack in normal information. Normals should also be recomputed after smoothing, since smoothing doesn't re-orient normals and shading depends on normal orientation. Activating Splitting, feature edges (i.e. seams in the surface) will be visually enhanced through the creation of a discontinuity in surface normal orientation producing a discontinuity in surface shading.&lt;br /&gt;
&lt;br /&gt;
Connectivity can be employed after the extraction of an isosurface using Grayscale Model Maker, in order to get rid of tiny pieces of surface associated to noise with intensity greater than the isosurface level.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Tutorials}}&lt;br /&gt;
N/A&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Panels}}&lt;br /&gt;
&lt;br /&gt;
Select the input and output models, and then enable the stages of the pipeline by selecting the buttons. Stages that include parameters will open up when they are enabled. Click apply to activate the pipeline and then click the Toggle button to compare the model before and after the operation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
** ''Input Model'': the input model&lt;br /&gt;
** ''Output Model'': the output model, i.e. the input model filtered through all the &amp;quot;Enabled&amp;quot; filters.&lt;br /&gt;
&lt;br /&gt;
* '''Decimation:'''&lt;br /&gt;
** ''Enabled'': enable topology-preserving surface decimation.&lt;br /&gt;
** ''Target reduction'': target percentage reduction in number of triangles (this target reduction may not be achieved depending on the constraints on the topology).&lt;br /&gt;
** ''Boundary vertex deletion'': allow deletion of points located on the boundary of the surface.&lt;br /&gt;
* '''Smoothing:'''&lt;br /&gt;
** ''Enabled'': enable surface smoothing.&lt;br /&gt;
** ''Smoothing method'': choose between Laplace or Taubin surface smoothing algorithms (while Taubin is a non-shrinking filter, Laplace will tend to shrink the surface under the effect of curvature).&lt;br /&gt;
** ''Boundary smoothing'': allow smoothing of points located on the boundary of the surface.&lt;br /&gt;
** ''Laplace number of iterations'': number of iterations set when the Laplace algorithm is selected.&lt;br /&gt;
** ''Laplace relaxation factor'': the factor by which a point moves towards the barycenter of its neighbors in the Laplace algorithm.&lt;br /&gt;
** ''Taubin number of iterations'': number of iterations set when the Taubin algorithm is selected.&lt;br /&gt;
** ''Taubin passband'': spatial frequency cutoff for the Taubin algorithm.&lt;br /&gt;
* '''Normals:'''&lt;br /&gt;
** ''Enabled'': enable computation of consistently-oriented surface normals (advised after smoothing - smoothing algorithms only move points and do not update normals accordingly, so the surface might still look non-smooth after smoothing when Gouraud shading is used).&lt;br /&gt;
** ''Flip normals'': toggle direction of normals - the algorithm will do its best to orient the normals consistently &amp;quot;outwards&amp;quot; a surface, if the surface is orientable. This switch will make normals point &amp;quot;inwards&amp;quot;&lt;br /&gt;
** ''Splitting'': toggle splitting of surface when angle between the normals of two neighboring triangles is above the Feature angle. This improves the shading appearance of sharp edges but produces topological holes in the surface.&lt;br /&gt;
** ''Feature angle'': angle (in degrees) between two neighboring triangles beyond which the edge between the triangles is split. &lt;br /&gt;
* '''Cleaner:'''&lt;br /&gt;
** ''Enabled'': enable cleaning (merging of coincident points, elimination of unused points, treatment of degenerate cells) of the surface.&lt;br /&gt;
* '''Connectivity:'''&lt;br /&gt;
** ''Enabled'': enable extracting the largest connected portion of the surface and getting rid of the rest.&lt;br /&gt;
&lt;br /&gt;
* '''Toggle Models:'''&lt;br /&gt;
** ''Clicked'': toggle the visualization of the input or the output model, allowing to compare them and visualize the effect of filtering.&lt;br /&gt;
* '''Apply:'''&lt;br /&gt;
** ''Clicked'': apply the pipeline of all Enabled filters to the input model and produce the output model.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|References}}&lt;br /&gt;
N/A&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Information for Developers}}&lt;br /&gt;
{{documentation/{{documentation/version}}/module-developerinfo}}&lt;br /&gt;
This is a scripted module.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The module internally uses the following VTK filters:&lt;br /&gt;
&lt;br /&gt;
[http://www.vtk.org/doc/nightly/html/classvtkDecimatePro.html vtkDecimatePro]&lt;br /&gt;
&lt;br /&gt;
[http://www.vtk.org/doc/nightly/html/classvtkSmoothPolyDataFilter.html vtkSmoothPolyDataFilter]&lt;br /&gt;
&lt;br /&gt;
[http://www.vtk.org/doc/nightly/html/classvtkWindowedSincPolyDataFilter.html vtkWindowedSincPolyDataFilter]&lt;br /&gt;
&lt;br /&gt;
[http://www.vtk.org/doc/nightly/html/classvtkPolyDataNormals.html vtkPolyDataNormals]&lt;br /&gt;
&lt;br /&gt;
[http://www.vtk.org/doc/nightly/html/classvtkCleanPolyData.html vtkCleanPolyData]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-footer}}&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lantiga</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/4.3/Modules/SurfaceToolbox&amp;diff=36432</id>
		<title>Documentation/4.3/Modules/SurfaceToolbox</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/4.3/Modules/SurfaceToolbox&amp;diff=36432"/>
		<updated>2013-11-07T22:14:40Z</updated>

		<summary type="html">&lt;p&gt;Lantiga: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;{{documentation/versioncheck}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-header}}&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Introduction and Acknowledgements}}&lt;br /&gt;
&lt;br /&gt;
* Luca Antiga: Orobix Srl&lt;br /&gt;
* Daniel Blezek: Mayo Clinic&lt;br /&gt;
* Ron Kikinis, BWH&lt;br /&gt;
* Steve Pieper, Isomics&lt;br /&gt;
* Contact: Luca Antiga, luca.antiga@orobix.com&lt;br /&gt;
&lt;br /&gt;
{{documentation/{{documentation/version}}/module-introduction-logo-gallery&lt;br /&gt;
|Image:Logo-namicnew2.jpg|NA-MIC&lt;br /&gt;
|Image:Logo-isomics.png|Isomics, Inc.&lt;br /&gt;
|Image:Orobix_logo.jpg|Orobix&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Module Description}}&lt;br /&gt;
{{documentation/{{documentation/version}}/module-description}}&lt;br /&gt;
&lt;br /&gt;
This module supports cleanup and optimization processes on surface models, namely&lt;br /&gt;
&lt;br /&gt;
* Decimation: topology-preserving reduction of surface triangles&lt;br /&gt;
* Smoothing: surface regularization using a Laplacian filter or Taubin's non-shrinking algorithm&lt;br /&gt;
* Normals: generation of surface normals (for geometry algorithms or for improving visualization, since surface shading rendering needs normals to be defined on the surface) &lt;br /&gt;
* Cleaner: merging of coincident points, removal of unused points (i.e. not used by any cell), treatment of degenerate cells&lt;br /&gt;
* Connectivity: extraction of the largest connected portion of the surface model&lt;br /&gt;
&lt;br /&gt;
The filters are arranged in a pipeline following the order in which they are listed above. Individual filters can be activated/deactivated by pressing/depressing the respective buttons. In case a filter needs parameters to be specified, a panel will be shown when the filter is activated.&lt;br /&gt;
&lt;br /&gt;
Clicking Apply will run the filters in the pipeline and produce an output. Clicking on the Toggle Models button will toggle the visibility of the model before and after filtering.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Use Cases}}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[Image:SurfaceToolbox.png|thumb|380px|SurfaceToolbox User Interface]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The module is appropriate when a surface has been extracted (e.g. with the Modelmaker module) but its appearance has to be improved.&lt;br /&gt;
&lt;br /&gt;
This module supports various cleanup and optimization processes on surface models.  For example, a noisy image data set can lead to models that have bumpy surfaces which do not accurately depict the actual anatomy of interest.  In this case, the model can be smoothed to better approximate the actual surface.  &lt;br /&gt;
&lt;br /&gt;
Another application is to reduce the geometric complexity of surface models using decimation to reduce the file size or rendering time of the models.&lt;br /&gt;
&lt;br /&gt;
Normals are used to improve the visual appearance of STL surfaces rendered as flat polygons due to a lack in normal information. Normals should also be recomputed after smoothing, since smoothing doesn't re-orient normals and shading depends on normal orientation. Activating Splitting, feature edges (i.e. seams in the surface) will be visually enhanced through the creation of a discontinuity in surface normal orientation producing a discontinuity in surface shading.&lt;br /&gt;
&lt;br /&gt;
Connectivity can be employed after the extraction of an isosurface using Grayscale Model Maker, in order to get rid of tiny pieces of surface associated to noise with intensity greater than the isosurface level.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Tutorials}}&lt;br /&gt;
N/A&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Panels}}&lt;br /&gt;
&lt;br /&gt;
Select the input and output models, and then enable the stages of the pipeline by selecting the buttons. Stages that include parameters will open up when they are enabled. Click apply to activate the pipeline and then click the Toggle button to compare the model before and after the operation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
** ''Input Model'': the input model&lt;br /&gt;
** ''Output Model'': the output model, i.e. the input model filtered through all the &amp;quot;Enabled&amp;quot; filters.&lt;br /&gt;
&lt;br /&gt;
* '''Decimation:'''&lt;br /&gt;
** ''Enabled'': enable topology-preserving surface decimation.&lt;br /&gt;
** ''Target reduction'': target percentage reduction in number of triangles (this target reduction may not be achieved depending on the constraints on the topology).&lt;br /&gt;
** ''Boundary vertex deletion'': allow deletion of points located on the boundary of the surface.&lt;br /&gt;
* '''Smoothing:'''&lt;br /&gt;
** ''Enabled'': enable surface smoothing.&lt;br /&gt;
** ''Smoothing method'': choose between Laplace or Taubin surface smoothing algorithms (while Taubin is a non-shrinking filter, Laplace will tend to shrink the surface under the effect of curvature).&lt;br /&gt;
** ''Boundary smoothing'': allow smoothing of points located on the boundary of the surface.&lt;br /&gt;
** ''Laplace number of iterations'': number of iterations set when the Laplace algorithm is selected.&lt;br /&gt;
** ''Laplace relaxation factor'': the factor by which a point moves towards the barycenter of its neighbors in the Laplace algorithm.&lt;br /&gt;
** ''Taubin number of iterations'': number of iterations set when the Taubin algorithm is selected.&lt;br /&gt;
** ''Taubin passband'': spatial frequency cutoff for the Taubin algorithm.&lt;br /&gt;
* '''Normals:'''&lt;br /&gt;
** ''Enabled'': enable computation of consistently-oriented surface normals (advised after smoothing - smoothing algorithms only move points and do not update normals accordingly, so the surface might still look non-smooth after smoothing when Gouraud shading is used).&lt;br /&gt;
** ''Flip normals'': toggle direction of normals - the algorithm will do its best to orient the normals consistently &amp;quot;outwards&amp;quot; a surface, if the surface is orientable. This switch will make normals point &amp;quot;inwards&amp;quot;&lt;br /&gt;
** ''Splitting'': toggle splitting of surface when angle between the normals of two neighboring triangles is above the Feature angle. This improves the shading appearance of sharp edges but produces topological holes in the surface.&lt;br /&gt;
** ''Feature angle'': angle (in degrees) between two neighboring triangles beyond which the edge between the triangles is split. &lt;br /&gt;
* '''Cleaner:'''&lt;br /&gt;
** ''Enabled'': enable cleaning (merging of coincident points, elimination of unused points, treatment of degenerate cells) of the surface.&lt;br /&gt;
* '''Connectivity:'''&lt;br /&gt;
** ''Enabled'': enable extracting the largest connected portion of the surface and getting rid of the rest.&lt;br /&gt;
&lt;br /&gt;
* '''Toggle Models:'''&lt;br /&gt;
** ''Clicked'': toggle the visualization of the input or the output model, allowing to compare them and visualize the effect of filtering.&lt;br /&gt;
* '''Apply:'''&lt;br /&gt;
* ''Clicked'': apply the pipeline of all Enabled filters to the input model and produce the output model.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|References}}&lt;br /&gt;
N/A&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Information for Developers}}&lt;br /&gt;
{{documentation/{{documentation/version}}/module-developerinfo}}&lt;br /&gt;
This is a scripted module.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The module internally uses the following VTK filters:&lt;br /&gt;
&lt;br /&gt;
[http://www.vtk.org/doc/nightly/html/classvtkDecimatePro.html vtkDecimatePro]&lt;br /&gt;
&lt;br /&gt;
[http://www.vtk.org/doc/nightly/html/classvtkSmoothPolyDataFilter.html vtkSmoothPolyDataFilter]&lt;br /&gt;
&lt;br /&gt;
[http://www.vtk.org/doc/nightly/html/classvtkWindowedSincPolyDataFilter.html vtkWindowedSincPolyDataFilter]&lt;br /&gt;
&lt;br /&gt;
[http://www.vtk.org/doc/nightly/html/classvtkPolyDataNormals.html vtkPolyDataNormals]&lt;br /&gt;
&lt;br /&gt;
[http://www.vtk.org/doc/nightly/html/classvtkCleanPolyData.html vtkCleanPolyData]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-footer}}&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lantiga</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/4.3/Modules/SurfaceToolbox&amp;diff=36431</id>
		<title>Documentation/4.3/Modules/SurfaceToolbox</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/4.3/Modules/SurfaceToolbox&amp;diff=36431"/>
		<updated>2013-11-07T22:03:20Z</updated>

		<summary type="html">&lt;p&gt;Lantiga: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;{{documentation/versioncheck}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-header}}&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Introduction and Acknowledgements}}&lt;br /&gt;
&lt;br /&gt;
* Luca Antiga: Orobix Srl&lt;br /&gt;
* Daniel Blezek: Mayo Clinic&lt;br /&gt;
* Ron Kikinis, BWH&lt;br /&gt;
* Steve Pieper, Isomics&lt;br /&gt;
* Contact: Luca Antiga, luca.antiga@orobix.com&lt;br /&gt;
&lt;br /&gt;
{{documentation/{{documentation/version}}/module-introduction-logo-gallery&lt;br /&gt;
|Image:Logo-namicnew2.jpg|NA-MIC&lt;br /&gt;
|Image:Logo-isomics.png|Isomics, Inc.&lt;br /&gt;
|Image:Orobix_logo.jpg|Orobix&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Module Description}}&lt;br /&gt;
{{documentation/{{documentation/version}}/module-description}}&lt;br /&gt;
&lt;br /&gt;
This module supports cleanup and optimization processes on surface models, namely&lt;br /&gt;
&lt;br /&gt;
* Decimation: topology-preserving reduction of surface triangles&lt;br /&gt;
* Smoothing: surface regularization using a Laplacian filter or Taubin's non-shrinking algorithm&lt;br /&gt;
* Normals: generation of surface normals (for geometry algorithms or for improving visualization, since surface shading rendering needs normals to be defined on the surface) &lt;br /&gt;
* Cleaner: merging of coincident points, removal of unused points (i.e. not used by any cell), treatment of degenerate cells&lt;br /&gt;
* Connectivity: extraction of the largest connected portion of the surface model&lt;br /&gt;
&lt;br /&gt;
The filters are arranged in a pipeline following the order in which they are listed above. Individual filters can be activated/deactivated by pressing/depressing the respective buttons. In case a filter needs parameters to be specified, a panel will be shown when the filter is activated.&lt;br /&gt;
&lt;br /&gt;
Clicking Apply will run the filters in the pipeline and produce an output. Clicking on the Toggle Models button will toggle the visibility of the model before and after filtering.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Use Cases}}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[Image:SurfaceToolbox.png|thumb|380px|SurfaceToolbox User Interface]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The module is appropriate when a surface has been extracted (e.g. with the Modelmaker module) but its appearance has to be improved.&lt;br /&gt;
&lt;br /&gt;
This module supports various cleanup and optimization processes on surface models.  For example, a noisy image data set can lead to models that have bumpy surfaces which do not accurately depict the actual anatomy of interest.  In this case, the model can be smoothed to better approximate the actual surface.  &lt;br /&gt;
&lt;br /&gt;
Another application is to reduce the geometric complexity of surface models using decimation to reduce the file size or rendering time of the models.&lt;br /&gt;
&lt;br /&gt;
Normals are used to improve the visual appearance of STL surfaces rendered as flat polygons due to a lack in normal information. Activating Splitting, feature edges (i.e. seams in the surface) will be visually enhanced through the creation of a discontinuity in surface normal orientation producing a discontinuity in surface shading.&lt;br /&gt;
&lt;br /&gt;
Connectivity can be employed after the extraction of an isosurface using Grayscale Model Maker, in order to get rid of tiny pieces of surface associated to noise with intensity greater than the isosurface level.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Tutorials}}&lt;br /&gt;
N/A&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Panels}}&lt;br /&gt;
&lt;br /&gt;
Select the input and output models, and then enable the stages of the pipeline by selecting the buttons. Stages that include parameters will open up when they are enabled. Click apply to activate the pipeline and then click the Toggle button to compare the model before and after the operation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Surface Decimation:'''&lt;br /&gt;
** ''Enabled'': enable topology-preserving surface decimation.&lt;br /&gt;
** ''Target reduction'': target percentage reduction in number of triangles (this target reduction may not be achieved depending on the constraints on the topology).&lt;br /&gt;
** ''Boundary vertex deletion'': allow deletion of points located on the boundary of the surface.&lt;br /&gt;
* '''Surface Smoothing:'''&lt;br /&gt;
** ''Enabled'': enable surface smoothing.&lt;br /&gt;
** ''Smoothing method'': choose between Laplace or Taubin surface smoothing algorithms (while Taubin is a non-shrinking filter, Laplace will tend to shrink the surface under the effect of curvature).&lt;br /&gt;
** ''Boundary smoothing'': allow smoothing of points located on the boundary of the surface.&lt;br /&gt;
** ''Laplace number of iterations'': number of iterations set when the Laplace algorithm is selected.&lt;br /&gt;
** ''Laplace relaxation factor'': the factor by which a point moves towards the barycenter of its neighbors in the Laplace algorithm.&lt;br /&gt;
** ''Taubin number of iterations'': number of iterations set when the Taubin algorithm is selected.&lt;br /&gt;
** ''Taubin passband'': spatial frequency cutoff for the Taubin algorithm.&lt;br /&gt;
* '''Surface Normals:'''&lt;br /&gt;
** ''Enabled'': enable computation of consistently-oriented surface normals (advised after smoothing - smoothing algorithms only move points and do not update normals accordingly, so the surface might still look non-smooth after smoothing when Gouraud shading is used).&lt;br /&gt;
** ''Flip normals'': toggle direction of normals - the algorithm will do its best to orient the normals consistently &amp;quot;outwards&amp;quot; a surface, if the surface is orientable. This switch will make normals point &amp;quot;inwards&amp;quot;&lt;br /&gt;
** ''Splitting'': toggle splitting of surface when angle between the normals of two neighboring triangles is above the Feature angle. This improves the shading appearance of sharp edges but produces topological holes in the surface.&lt;br /&gt;
** ''Feature angle'': angle (in degrees) between two neighboring triangles beyond which the edge between the triangles is split. &lt;br /&gt;
* '''Surface Cleaner:'''&lt;br /&gt;
** ''Enabled'': enable cleaning (merging of coincident points, elimination of unused points, treatment of degenerate cells) of the surface.&lt;br /&gt;
* '''IO:'''&lt;br /&gt;
** ''Input Surface'': the input surface&lt;br /&gt;
** ''Output Surface'': the output surface, i.e. the input surface filtered through all the &amp;quot;Enabled&amp;quot; filters.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|References}}&lt;br /&gt;
N/A&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Information for Developers}}&lt;br /&gt;
{{documentation/{{documentation/version}}/module-developerinfo}}&lt;br /&gt;
This is a scripted module.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The module internally uses the following VTK filters:&lt;br /&gt;
&lt;br /&gt;
[http://www.vtk.org/doc/nightly/html/classvtkDecimatePro.html vtkDecimatePro]&lt;br /&gt;
&lt;br /&gt;
[http://www.vtk.org/doc/nightly/html/classvtkSmoothPolyDataFilter.html vtkSmoothPolyDataFilter]&lt;br /&gt;
&lt;br /&gt;
[http://www.vtk.org/doc/nightly/html/classvtkWindowedSincPolyDataFilter.html vtkWindowedSincPolyDataFilter]&lt;br /&gt;
&lt;br /&gt;
[http://www.vtk.org/doc/nightly/html/classvtkPolyDataNormals.html vtkPolyDataNormals]&lt;br /&gt;
&lt;br /&gt;
[http://www.vtk.org/doc/nightly/html/classvtkCleanPolyData.html vtkCleanPolyData]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-footer}}&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lantiga</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/4.3/Modules/SurfaceToolbox&amp;diff=36430</id>
		<title>Documentation/4.3/Modules/SurfaceToolbox</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/4.3/Modules/SurfaceToolbox&amp;diff=36430"/>
		<updated>2013-11-07T22:02:57Z</updated>

		<summary type="html">&lt;p&gt;Lantiga: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;{{documentation/versioncheck}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-header}}&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Introduction and Acknowledgements}}&lt;br /&gt;
&lt;br /&gt;
* Luca Antiga: Orobix Srl&lt;br /&gt;
* Daniel Blezek: Mayo Clinic&lt;br /&gt;
* Ron Kikinis, BWH&lt;br /&gt;
* Steve Pieper, Isomics&lt;br /&gt;
* Contact: Luca Antiga, luca.antiga@orobix.com&lt;br /&gt;
&lt;br /&gt;
{{documentation/{{documentation/version}}/module-introduction-logo-gallery&lt;br /&gt;
|Image:Logo-namicnew2.jpg|NA-MIC&lt;br /&gt;
|Image:Logo-isomics.png|Isomics, Inc.&lt;br /&gt;
|Image:Orobix_logo.jpg|Orobix&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Module Description}}&lt;br /&gt;
{{documentation/{{documentation/version}}/module-description}}&lt;br /&gt;
&lt;br /&gt;
This module supports cleanup and optimization processes on surface models, namely&lt;br /&gt;
&lt;br /&gt;
* Decimation: topology-preserving reduction of surface triangles&lt;br /&gt;
* Smoothing: surface regularization using a Laplacian filter or Taubin's non-shrinking algorithm&lt;br /&gt;
* Normals: generation of surface normals (for geometry algorithms or for improving visualization, since surface shading rendering needs normals to be defined on the surface) &lt;br /&gt;
* Cleaner: merging of coincident points, removal of unused points (i.e. not used by any cell), treatment of degenerate cells&lt;br /&gt;
* Connectivity: extraction of the largest connected portion of the surface model&lt;br /&gt;
&lt;br /&gt;
The filters are arranged in a pipeline following the order in which they are listed above. Individual filters can be activated/deactivated by pressing/depressing the respective buttons. In case a filter needs parameters to be specified, a panel will be shown when the filter is activated.&lt;br /&gt;
&lt;br /&gt;
Clicking Apply will run the filters in the pipeline and produce an output. Clicking on the Toggle Models button will toggle the visibility of the model before and after filtering.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Use Cases}}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[Image:SurfaceToolbox.png|thumb|380px|SurfaceToolbox User Interface]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The module is appropriate when a surface has been extracted (e.g. with the Modelmaker module) but its appearance has to be improved.&lt;br /&gt;
&lt;br /&gt;
This module supports various cleanup and optimization processes on surface models.  For example, a noisy image data set can lead to models that have bumpy surfaces which do not accurately depict the actual anatomy of interest.  In this case, the model can be smoothed to better approximate the actual surface.  &lt;br /&gt;
&lt;br /&gt;
Another application is to reduce the geometric complexity of surface models using decimation to reduce the file size or rendering time of the models.&lt;br /&gt;
&lt;br /&gt;
Normals are used to improve the visual appearance of STL surfaces rendered as flat polygons due to a lack in normal information. Activating Splitting, feature edges (i.e. seams in the surface) will be visually enhanced through the creation of a discontinuity in surface normal orientation producing a discontinuity in shading values.&lt;br /&gt;
&lt;br /&gt;
Connectivity can be employed after the extraction of an isosurface using Grayscale Model Maker, in order to get rid of tiny pieces of surface associated to noise with intensity greater than the isosurface level.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Tutorials}}&lt;br /&gt;
N/A&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Panels}}&lt;br /&gt;
&lt;br /&gt;
Select the input and output models, and then enable the stages of the pipeline by selecting the buttons. Stages that include parameters will open up when they are enabled. Click apply to activate the pipeline and then click the Toggle button to compare the model before and after the operation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Surface Decimation:'''&lt;br /&gt;
** ''Enabled'': enable topology-preserving surface decimation.&lt;br /&gt;
** ''Target reduction'': target percentage reduction in number of triangles (this target reduction may not be achieved depending on the constraints on the topology).&lt;br /&gt;
** ''Boundary vertex deletion'': allow deletion of points located on the boundary of the surface.&lt;br /&gt;
* '''Surface Smoothing:'''&lt;br /&gt;
** ''Enabled'': enable surface smoothing.&lt;br /&gt;
** ''Smoothing method'': choose between Laplace or Taubin surface smoothing algorithms (while Taubin is a non-shrinking filter, Laplace will tend to shrink the surface under the effect of curvature).&lt;br /&gt;
** ''Boundary smoothing'': allow smoothing of points located on the boundary of the surface.&lt;br /&gt;
** ''Laplace number of iterations'': number of iterations set when the Laplace algorithm is selected.&lt;br /&gt;
** ''Laplace relaxation factor'': the factor by which a point moves towards the barycenter of its neighbors in the Laplace algorithm.&lt;br /&gt;
** ''Taubin number of iterations'': number of iterations set when the Taubin algorithm is selected.&lt;br /&gt;
** ''Taubin passband'': spatial frequency cutoff for the Taubin algorithm.&lt;br /&gt;
* '''Surface Normals:'''&lt;br /&gt;
** ''Enabled'': enable computation of consistently-oriented surface normals (advised after smoothing - smoothing algorithms only move points and do not update normals accordingly, so the surface might still look non-smooth after smoothing when Gouraud shading is used).&lt;br /&gt;
** ''Flip normals'': toggle direction of normals - the algorithm will do its best to orient the normals consistently &amp;quot;outwards&amp;quot; a surface, if the surface is orientable. This switch will make normals point &amp;quot;inwards&amp;quot;&lt;br /&gt;
** ''Splitting'': toggle splitting of surface when angle between the normals of two neighboring triangles is above the Feature angle. This improves the shading appearance of sharp edges but produces topological holes in the surface.&lt;br /&gt;
** ''Feature angle'': angle (in degrees) between two neighboring triangles beyond which the edge between the triangles is split. &lt;br /&gt;
* '''Surface Cleaner:'''&lt;br /&gt;
** ''Enabled'': enable cleaning (merging of coincident points, elimination of unused points, treatment of degenerate cells) of the surface.&lt;br /&gt;
* '''IO:'''&lt;br /&gt;
** ''Input Surface'': the input surface&lt;br /&gt;
** ''Output Surface'': the output surface, i.e. the input surface filtered through all the &amp;quot;Enabled&amp;quot; filters.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|References}}&lt;br /&gt;
N/A&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Information for Developers}}&lt;br /&gt;
{{documentation/{{documentation/version}}/module-developerinfo}}&lt;br /&gt;
This is a scripted module.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The module internally uses the following VTK filters:&lt;br /&gt;
&lt;br /&gt;
[http://www.vtk.org/doc/nightly/html/classvtkDecimatePro.html vtkDecimatePro]&lt;br /&gt;
&lt;br /&gt;
[http://www.vtk.org/doc/nightly/html/classvtkSmoothPolyDataFilter.html vtkSmoothPolyDataFilter]&lt;br /&gt;
&lt;br /&gt;
[http://www.vtk.org/doc/nightly/html/classvtkWindowedSincPolyDataFilter.html vtkWindowedSincPolyDataFilter]&lt;br /&gt;
&lt;br /&gt;
[http://www.vtk.org/doc/nightly/html/classvtkPolyDataNormals.html vtkPolyDataNormals]&lt;br /&gt;
&lt;br /&gt;
[http://www.vtk.org/doc/nightly/html/classvtkCleanPolyData.html vtkCleanPolyData]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-footer}}&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lantiga</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/4.3/Modules/SurfaceToolbox&amp;diff=36429</id>
		<title>Documentation/4.3/Modules/SurfaceToolbox</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/4.3/Modules/SurfaceToolbox&amp;diff=36429"/>
		<updated>2013-11-07T21:55:58Z</updated>

		<summary type="html">&lt;p&gt;Lantiga: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;{{documentation/versioncheck}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-header}}&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Introduction and Acknowledgements}}&lt;br /&gt;
&lt;br /&gt;
* Luca Antiga: Orobix Srl&lt;br /&gt;
* Daniel Blezek: Mayo Clinic&lt;br /&gt;
* Ron Kikinis, BWH&lt;br /&gt;
* Steve Pieper, Isomics&lt;br /&gt;
* Contact: Luca Antiga, luca.antiga@orobix.com&lt;br /&gt;
&lt;br /&gt;
{{documentation/{{documentation/version}}/module-introduction-logo-gallery&lt;br /&gt;
|Image:Logo-namicnew2.jpg|NA-MIC&lt;br /&gt;
|Image:Logo-isomics.png|Isomics, Inc.&lt;br /&gt;
|Image:Orobix_logo.jpg|Orobix&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Module Description}}&lt;br /&gt;
{{documentation/{{documentation/version}}/module-description}}&lt;br /&gt;
&lt;br /&gt;
This module supports cleanup and optimization processes on surface models, namely&lt;br /&gt;
&lt;br /&gt;
* Decimation: topology-preserving reduction of surface triangles&lt;br /&gt;
* Smoothing: surface regularization using a Laplacian filter or Taubin's non-shrinking algorithm&lt;br /&gt;
* Normals: generation of surface normals (for geometry algorithms or for improving visualization, since surface shading rendering needs normals to be defined on the surface) &lt;br /&gt;
* Cleaner: merging of coincident points, removal of unused points (i.e. not used by any cell), treatment of degenerate cells&lt;br /&gt;
* Connectivity: extraction of the largest connected portion of the surface model&lt;br /&gt;
&lt;br /&gt;
The filters are arranged in a pipeline following the order in which they are listed above. Individual filters can be activated/deactivated by pressing/depressing the respective buttons. In case a filter needs parameters to be specified, a panel will be shown when the filter is activated.&lt;br /&gt;
&lt;br /&gt;
Clicking Apply will run the filters in the pipeline and produce an output. Clicking on the Toggle Models button will toggle the visibility of the model before and after filtering.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Use Cases}}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[Image:SurfaceToolbox.png|thumb|380px|SurfaceToolbox User Interface]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The module is appropriate when a surface has been extracted (e.g. with the Modelmaker module) but its appearance has to be improved.&lt;br /&gt;
&lt;br /&gt;
This module supports various cleanup and optimization processes on surface models.  For example, a noisy image data set can lead to models that have bumpy surfaces which do not accurately depict the actual anatomy of interest.  In this case, the model can be smoothed to better approximate the actual surface.  Another application is to reduce the geometric complexity of surface models to reduce the file size or rendering time of the models.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Tutorials}}&lt;br /&gt;
N/A&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Panels}}&lt;br /&gt;
&lt;br /&gt;
Select the input and output models, and then enable the stages of the pipeline by selecting the buttons. Stages that include parameters will open up when they are enabled. Click apply to activate the pipeline and then click the Toggle button to compare the model before and after the operation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Surface Decimation:'''&lt;br /&gt;
** ''Enabled'': enable topology-preserving surface decimation.&lt;br /&gt;
** ''Target reduction'': target percentage reduction in number of triangles (this target reduction may not be achieved depending on the constraints on the topology).&lt;br /&gt;
** ''Boundary vertex deletion'': allow deletion of points located on the boundary of the surface.&lt;br /&gt;
* '''Surface Smoothing:'''&lt;br /&gt;
** ''Enabled'': enable surface smoothing.&lt;br /&gt;
** ''Smoothing method'': choose between Laplace or Taubin surface smoothing algorithms (while Taubin is a non-shrinking filter, Laplace will tend to shrink the surface under the effect of curvature).&lt;br /&gt;
** ''Boundary smoothing'': allow smoothing of points located on the boundary of the surface.&lt;br /&gt;
** ''Laplace number of iterations'': number of iterations set when the Laplace algorithm is selected.&lt;br /&gt;
** ''Laplace relaxation factor'': the factor by which a point moves towards the barycenter of its neighbors in the Laplace algorithm.&lt;br /&gt;
** ''Taubin number of iterations'': number of iterations set when the Taubin algorithm is selected.&lt;br /&gt;
** ''Taubin passband'': spatial frequency cutoff for the Taubin algorithm.&lt;br /&gt;
* '''Surface Normals:'''&lt;br /&gt;
** ''Enabled'': enable computation of consistently-oriented surface normals (advised after smoothing - smoothing algorithms only move points and do not update normals accordingly, so the surface might still look non-smooth after smoothing when Gouraud shading is used).&lt;br /&gt;
** ''Flip normals'': toggle direction of normals - the algorithm will do its best to orient the normals consistently &amp;quot;outwards&amp;quot; a surface, if the surface is orientable. This switch will make normals point &amp;quot;inwards&amp;quot;&lt;br /&gt;
** ''Splitting'': toggle splitting of surface when angle between the normals of two neighboring triangles is above the Feature angle. This improves the shading appearance of sharp edges but produces topological holes in the surface.&lt;br /&gt;
** ''Feature angle'': angle (in degrees) between two neighboring triangles beyond which the edge between the triangles is split. &lt;br /&gt;
* '''Surface Cleaner:'''&lt;br /&gt;
** ''Enabled'': enable cleaning (merging of coincident points, elimination of unused points, treatment of degenerate cells) of the surface.&lt;br /&gt;
* '''IO:'''&lt;br /&gt;
** ''Input Surface'': the input surface&lt;br /&gt;
** ''Output Surface'': the output surface, i.e. the input surface filtered through all the &amp;quot;Enabled&amp;quot; filters.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|References}}&lt;br /&gt;
N/A&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Information for Developers}}&lt;br /&gt;
{{documentation/{{documentation/version}}/module-developerinfo}}&lt;br /&gt;
This is a scripted module.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The module internally uses the following VTK filters:&lt;br /&gt;
&lt;br /&gt;
[http://www.vtk.org/doc/nightly/html/classvtkDecimatePro.html vtkDecimatePro]&lt;br /&gt;
&lt;br /&gt;
[http://www.vtk.org/doc/nightly/html/classvtkSmoothPolyDataFilter.html vtkSmoothPolyDataFilter]&lt;br /&gt;
&lt;br /&gt;
[http://www.vtk.org/doc/nightly/html/classvtkWindowedSincPolyDataFilter.html vtkWindowedSincPolyDataFilter]&lt;br /&gt;
&lt;br /&gt;
[http://www.vtk.org/doc/nightly/html/classvtkPolyDataNormals.html vtkPolyDataNormals]&lt;br /&gt;
&lt;br /&gt;
[http://www.vtk.org/doc/nightly/html/classvtkCleanPolyData.html vtkCleanPolyData]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-footer}}&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lantiga</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Developer_Meetings/20131008&amp;diff=36425</id>
		<title>Developer Meetings/20131008</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Developer_Meetings/20131008&amp;diff=36425"/>
		<updated>2013-11-07T21:32:42Z</updated>

		<summary type="html">&lt;p&gt;Lantiga: /* Not yet done */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
== Update documentation ==&lt;br /&gt;
* Ron's priorities for final year of NAMIC funding&lt;br /&gt;
===Not yet done===&lt;br /&gt;
# Update the slicer user documentation pages by RSNA. Describe up-to-date workflows in the examples. Make sure all the features are described. Make sure authors, institutions, and grants are properly acknowledged. The following is an incomplete list:&lt;br /&gt;
##	Probe Volume With Model	(Lauren O'Donnell) &lt;br /&gt;
##	SurfaceToolbox	(Luca Antiga)&lt;br /&gt;
##	ACPC Transform	(Nicole	Aucoin)&lt;br /&gt;
##	Cast Scalar Volume	(Nicole	Aucoin)&lt;br /&gt;
##	Colors	(Nicole	Aucoin)&lt;br /&gt;
##	LUTs	(Nicole	Aucoin)&lt;br /&gt;
##	Mask Scalar Volume	(Nicole	Aucoin)&lt;br /&gt;
##	Merge Models	(Nicole	Aucoin)&lt;br /&gt;
##	Model Maker	(Nicole	Aucoin)&lt;br /&gt;
##	Models	(Nicole	Aucoin)&lt;br /&gt;
##	Model To LabelMap	(Nicole	Aucoin)&lt;br /&gt;
##	PET Standard Uptake Value Computation	(Nicole	Aucoin)&lt;br /&gt;
##	Threshold Scalar Volume	(Nicole	Aucoin)&lt;br /&gt;
##	Fiducial Registration	(Stephen	Aylward)&lt;br /&gt;
##	Gaussian Blur Image Filter	(Stephen	Aylward)&lt;br /&gt;
##	Resample Scalar/Vector/DWI Volume	(Francois	Budin)&lt;br /&gt;
##	Data	(Julien	Finet)&lt;br /&gt;
##	Models	(Julien	Finet)&lt;br /&gt;
##	Robust Statistics Segmenter	(Yi	Gao)&lt;br /&gt;
##	Segmentation Aided Registration	(Yi	Gao)&lt;br /&gt;
##	Reformat	(Michael	Jeulin-Lagarrigue)&lt;br /&gt;
##	Demon Registration (BRAINS)	(Hans	Johnson)&lt;br /&gt;
##	Foreground Masking (BRAINS)	(Hans	Johnson)&lt;br /&gt;
##	General Brainsfit Registration	(Hans	Johnson)&lt;br /&gt;
##	Resample Image (BRAINS)	(Hans	Johnson)&lt;br /&gt;
##	Vector Demon Registration	(Hans	Johnson)&lt;br /&gt;
##	KSlice Interactive Segmenter	(Ivan	Kolesov)&lt;br /&gt;
##	Simple Filters	(Bradley	Lowekamp)&lt;br /&gt;
##	WatershedFromMarkers	(Bradley	Lowekamp)&lt;br /&gt;
##	SNR Measurement	(Babak	Matinfar)&lt;br /&gt;
##	Main window	(JC)	&lt;br /&gt;
##	Welcome to Slicer	(JC)	&lt;br /&gt;
##	Add Scalar Volumes	(Jim	Miller)&lt;br /&gt;
##	CheckerBoard Filter	(Jim	Miller)&lt;br /&gt;
##	Create DICOM Series	(Jim	Miller)&lt;br /&gt;
##	Curvature Anisotropic Diffusion	(Jim	Miller)&lt;br /&gt;
##	Dicom to Nrrd Converter	(Jim	Miller)&lt;br /&gt;
##	Extract Skeleton	(Jim	Miller)&lt;br /&gt;
##	Gradient Anisotropic Diffusion	(Jim	Miller)&lt;br /&gt;
##	Grayscale Fill Hole Image Filter	(Jim	Miller)&lt;br /&gt;
##	Grayscale Grind Peak Image Filter	(Jim	Miller)&lt;br /&gt;
##	Grayscale Model Maker	(Jim	Miller)&lt;br /&gt;
##	Histogram Matching	(Jim	Miller)&lt;br /&gt;
##	Median Image Filter	(Jim	Miller)&lt;br /&gt;
##	Multiply Scalar Volumes	(Jim	Miller)&lt;br /&gt;
##	Orient Scalar Volume	(Jim	Miller)&lt;br /&gt;
##	Simple Region Growing Segmentation	(Jim	Miller)&lt;br /&gt;
##	Subtract Scalar Volumes	(Jim	Miller)&lt;br /&gt;
##	View Controllers	(Jim	Miller)&lt;br /&gt;
##	Voting Binary Hole Filling Image Filter	(Jim	Miller)&lt;br /&gt;
##	Label Map Smoothing	(Dirk	Padfield)&lt;br /&gt;
##	Data Probe	(Steve	Pieper)&lt;br /&gt;
##	DICOM	(Steve	Pieper)&lt;br /&gt;
##	Editor	(Steve	Pieper)&lt;br /&gt;
##	Endoscopy	(Steve	Pieper)&lt;br /&gt;
##	Fiber Bundle to Label Map	(Steve	Pieper)&lt;br /&gt;
##	Label Statistics	(Steve	Pieper)&lt;br /&gt;
##	.mrb	(Steve	Pieper)&lt;br /&gt;
##	Sample Data	(Steve	Pieper)&lt;br /&gt;
##	Vector to Scalar Volume	(Steve	Pieper)&lt;br /&gt;
##	Volumes	(Steve	Pieper)&lt;br /&gt;
##	EMSegment Command-line	(Kilian	Pohl)&lt;br /&gt;
##	EMSegment Easy (no atlas)	(Kilian	Pohl)&lt;br /&gt;
##	EMSegment (with atlas)	(Kilian	Pohl)&lt;br /&gt;
##	DTIExport	(Sonia	Pujol)&lt;br /&gt;
##	DTIImport	(Sonia	Pujol)&lt;br /&gt;
##	OpenIGTLink IF	(Junichi	Tokuda)&lt;br /&gt;
##	Diffusion Tensor Scalar Measurements	(Demian	Wasserman)&lt;br /&gt;
##	Diffusion Weighted Volume Masking	(Demian	Wasserman)&lt;br /&gt;
##	DWI Joint Rician LMMSE Image Filter	(Demian	Wasserman)&lt;br /&gt;
##	DWI Rician LMMSE Filter	(Demian	Wasserman)&lt;br /&gt;
##	DWI To DTI Estimation	(Demian	Wasserman)&lt;br /&gt;
##	DWI to Full Brain Tractography	(Demian	Wasserman)&lt;br /&gt;
##	Resample DTI Volume	(Demian	Wasserman)&lt;br /&gt;
##	Tractography Label Map Seeding	(Demian	Wasserman)&lt;br /&gt;
##	Image Label Combine	(Alex	Yarmarkovich)&lt;br /&gt;
##	Sceneviews	(Alex	Yarmarkovich)&lt;br /&gt;
##	Tractography Interactive Seeding	(Alex	Yarmarkovich)&lt;br /&gt;
##	Transforms	(Alex	Yarmarkovich)&lt;br /&gt;
##	Left Atrial Scar Segmenter	(LiangJia	Zhu)&lt;br /&gt;
##	Left Atrium Segmenter	(LiangJia	Zhu)&lt;br /&gt;
&lt;br /&gt;
===Recently updated Module Documentations===&lt;br /&gt;
##	Annotations	(Nicole	Aucoin) 12:11, 24 September 2013.&lt;br /&gt;
##	Markups	(Nicole	Aucoin) 11:59, 24 September 2013.&lt;br /&gt;
##	Volume rendering (including label data sets)	(Julien	Finet)  11:43, 19 September 2013.&lt;br /&gt;
##	Introduction to Registration	(Dominik	Meier) 16:18, 13 September 2013.&lt;br /&gt;
##	Tractography Display	(Demian	Wasserman) 12:26, 13 September 2013. by Alex	Yarmarkovich&lt;br /&gt;
##	FiberBundleLabelSelect	(Alex	Yarmarkovich) 11:33, 13 September 2013.&lt;br /&gt;
##	N4ITK Bias Field Correction	(Andrey	Fedorov) (svn tags updated in 4.3 and Nightly, don't recall how updates are propagated to the wiki page content) 7 Nov 2013&lt;br /&gt;
##	Intensity Difference Metric	(Andrey	Fedorov) -- Not applicable -- this is an extension, not Slicer core 7 Nov 2013&lt;br /&gt;
##	Crop Volume	(Andrey	Fedorov) updated 7 Nov 2013&lt;br /&gt;
&lt;br /&gt;
==Other improvements==&lt;br /&gt;
## when I save an MRB repeatedly, (1) &amp;lt;del&amp;gt;my customizations from last time should be remembered. Right now, the save module forgets that I selected .mrb for my last save. I need to tell it again.&amp;lt;/del&amp;gt; (2) When doing so, the default name turns into .mrb.mrb. (3) &amp;lt;del&amp;gt;It also forgets that I pointed it to a particular directory and offers to save in the default location.&amp;lt;/del&amp;gt; (4) &amp;lt;del&amp;gt;Having this persist for the session only would be good. If persistent across session, a reset button would be good.&amp;lt;/del&amp;gt; See [http://www.na-mic.org/Bug/view.php?id=3484 #3484] and [http://www.na-mic.org/Bug/view.php?id=2948 #2948]&lt;br /&gt;
##the location from which something was loaded should be the default for saving.&lt;br /&gt;
##create a preset w/l+LUT in the volume module (scaled from 0 to 1), and corresponding transfer function for FA maps in the volume rendering module (bug #1857)&lt;br /&gt;
##on/off switch in the editor module for volume rendering of active label map&lt;br /&gt;
# All tutorials should be updated, including new basic features such as .drag and drop and .mrb&lt;br /&gt;
# [http://www.na-mic.org/Bug/view.php?id=3452 Unable to use Volume module Threshold widget in a meaningful way ]&lt;br /&gt;
#[http://www.na-mic.org/Bug/view.php?id=1299 Better presentation of text in sceneviews]&lt;br /&gt;
&lt;br /&gt;
#Review critical bugs / Open questions&lt;br /&gt;
* Nonlinear transform support (Alex)&lt;br /&gt;
** Resampled on the fly&lt;br /&gt;
** Pre-cached non-linear hardened version&lt;br /&gt;
** Need to fix read/write of grid transforms&lt;br /&gt;
** Fix resample CLIs to consistently accept grid transforms &lt;br /&gt;
** See: http://www.na-mic.org/Wiki/index.php/Handling_deformable_transforms_in_Slicer_meeting_minutes&lt;br /&gt;
* Migrating Rulers into Markups module (Nicole)&lt;br /&gt;
* Pluggable registration module (Steve, for Head and Neck Radiotherapy DBP)&lt;br /&gt;
* Each DBP to be pinged for wish list by Engineering contact&lt;br /&gt;
** Steve -&amp;gt; Greg&lt;br /&gt;
** Jim -&amp;gt; Rob/Josh&lt;br /&gt;
** Stephen -&amp;gt; Jack&lt;br /&gt;
** Dan -&amp;gt; Hans&lt;br /&gt;
* Steve will send blanket email to all DBPs requesting their priorities&lt;br /&gt;
* In coming months we will finalize a strategy for 4.x releases as final NA-MIC deliverables&lt;/div&gt;</summary>
		<author><name>Lantiga</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Announcments-3.6-Team&amp;diff=15473</id>
		<title>Announcments-3.6-Team</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Announcments-3.6-Team&amp;diff=15473"/>
		<updated>2010-05-07T07:16:18Z</updated>

		<summary type="html">&lt;p&gt;Lantiga: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Back to the [[Announcements:Slicer3.6|Slicer 3.6 announcement]]&lt;br /&gt;
&lt;br /&gt;
Development of Slicer 3.6 has been supported through volunteer work and through a number of funding mechanisms and sources. Please see the [http://www.slicer.org/pages/Acknowledgments Slicer Acknowledgements] page.&lt;br /&gt;
&lt;br /&gt;
Major contributors for the Slicer 3.6 release include (in alphabetic order):&lt;br /&gt;
* [http://www.orobix.com/luca Luca Antiga]: Python integration, CLI&lt;br /&gt;
* [http://www.spl.harvard.edu/pages/People/nicole Nicole Aucoin]: Software development, Fiducials, Informatics&lt;br /&gt;
* [http://kitware.com/company/team/aylward.html Stephen Aylward]: Registration, ITK&lt;br /&gt;
* [http://www.kitware.com/company/team/barre.html Sébastien Barré]: GUI, KWWidgets&lt;br /&gt;
* [http://www.kitware.com/company/team/fillion.html Jean-Christophe Fillion-Robin]: CTK, Qt&lt;br /&gt;
* [http://kitware.com/company/team/finet.html Julien Finet]: Volume rendering, CTK&lt;br /&gt;
* [http://kitware.com/company/team/galbreath.html Zack Galbreath]: CDash, Wiki, Sys Admin&lt;br /&gt;
* [http://www.kitware.com/company/team/goodlett.html Casey Goodlett]: Registration&lt;br /&gt;
* [http://www.spl.harvard.edu/~hayes Kathryn Hayes]: Release engineering, software development, quality assurance&lt;br /&gt;
* [http://www.kitware.com/company/team/hoffman.html Bill Hoffman]: CMake, CTest, CPack, Software Process&lt;br /&gt;
* [http://kitware.com/company/team/ibanez.html Luis Ibanez]: Registration, Segmentation, ITK, Software Process (Testing)&lt;br /&gt;
* [http://kitware.com/company/team/jomier.html Julien Jomier]: MIDAS, CDash&lt;br /&gt;
* [http://www.spl.harvard.edu/~kikinis Ron Kikinis]: Principal Investigator, busboy&lt;br /&gt;
* [http://www.kitware.com/company/team/krishnan.html Karthik Krishnan]: 3D Widgets&lt;br /&gt;
* [http://wiki.na-mic.org/Wiki/index.php/User:Millerjv Jim Miller]: CLI, Registration, Lightbox&lt;br /&gt;
* [http://kitware.com/company/team/partyka.html Dave Partyka]: Cross-platform build and installation, CDash&lt;br /&gt;
* [http://www.spl.harvard.edu/~pieper Steve Pieper]: Chief architect, editor&lt;br /&gt;
* [http://www.spl.harvard.edu/pages/People/wjp Wendy Plesniak]: GUI, Informatics&lt;br /&gt;
* [http://lmi.bwh.harvard.edu/~spujol/ Sonia Pujol]: Workshops, Tutorials, Testing&lt;br /&gt;
* [http://kitware.com/company/team/schroeder.html Will Schroeder]: VTK, 3D widgets&lt;br /&gt;
* [http://lmi.bwh.harvard.edu/~westin Carl-Fredrik Westin]: Diffusion MRI overview&lt;br /&gt;
* [http://www.spl.harvard.edu/~alexy Alex Yarmarkovich]: MRML, DTI modules, software development&lt;br /&gt;
* [http://www.niral.unc.edu/people Francois Budin]: Resampling of scalar images and DTI&lt;br /&gt;
* [http://www.niral.unc.edu/people Clement Vachet]: ARCTIC cortical thickness, Shape Analysis module&lt;br /&gt;
* [http://www.uiowa.edu Hans Johnson]: BRAINSFit, BRAINSDemonWarp, BRAINSResample, BRAINSROIAuto&lt;br /&gt;
* [http://www.uiowa.edu Vincent Magnotta]: IA_FEM Mesh&lt;/div&gt;</summary>
		<author><name>Lantiga</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Modules:PythonSurfaceConnectivity-Documentation-3.6&amp;diff=14148</id>
		<title>Modules:PythonSurfaceConnectivity-Documentation-3.6</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Modules:PythonSurfaceConnectivity-Documentation-3.6&amp;diff=14148"/>
		<updated>2010-04-25T17:21:54Z</updated>

		<summary type="html">&lt;p&gt;Lantiga: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Documentation-3.6|Return to Slicer 3.6 Documentation]]&lt;br /&gt;
&lt;br /&gt;
[[Announcements:Slicer3.6#Highlights|Gallery of New Features]]&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
===Module Name===&lt;br /&gt;
Python Surface Connectivity&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[Image:screenshotBlankNotOptional.png|thumb|280px|User Interface]]&lt;br /&gt;
|[[Image:PythonSurfaceConnectivity1.png|thumb|280px|Figure 1: Clipped model of ICA aneurysm]]&lt;br /&gt;
|[[Image:PythonSurfaceConnectivity2.png|thumb|280px|Figure 2: Connnected region closest to user-specified seed is extracted]]&lt;br /&gt;
|[[Image:PythonSurfaceConnectivity3.png|thumb|280px|Figure 2: All connected regions are extracted and one seed is generated for every region]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== General Information ==&lt;br /&gt;
===Module Type &amp;amp; Category===&lt;br /&gt;
&lt;br /&gt;
Type: CLI&lt;br /&gt;
&lt;br /&gt;
Category: Surface Models&lt;br /&gt;
&lt;br /&gt;
===Authors, Collaborators &amp;amp; Contact===&lt;br /&gt;
* Luca Antiga: Orobix Srl, Mario Negri Institute&lt;br /&gt;
* Daniel Blezek: Mayo Clinic&lt;br /&gt;
* Contact: Luca Antiga, luca.antiga@orobix.com&lt;br /&gt;
&lt;br /&gt;
===Module Description===&lt;br /&gt;
This Python module takes in input a surface and labels it according to surface connectivity. The module either labels the surface with a different RegionId for each connected region, or it extracts the connected region closest to an input fiducial. Optionally, the module produces a list of fiducials positioned on each connected region and labeled with its RegionId.&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
&lt;br /&gt;
===Use Cases, Examples===&lt;br /&gt;
&lt;br /&gt;
* The module is appropriate when there is need of extracting different disconnected components of a model or label them.&lt;br /&gt;
* For developers: the module is a good example on how Python CLI modules can access and modify the MRML scene (unlike executable and shared library CLI modules)&lt;br /&gt;
&lt;br /&gt;
===Tutorials===&lt;br /&gt;
&lt;br /&gt;
NA&lt;br /&gt;
&lt;br /&gt;
===Quick Tour of Features and Use===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
* '''Surface Connectivity Parameters:'''&lt;br /&gt;
** ''Connectivity mode'': choose between assigning a RegionId to each connected region (AllRegions) or extract the connected region closest to a seed fiducial (ClosestToSeed). &lt;br /&gt;
** ''Enable output fiducials'': enable output of a fiducial list containing one fiducial per connected region labeled with the corresponding RegionId&lt;br /&gt;
* '''IO:'''&lt;br /&gt;
** ''Input Surface'': the input surface&lt;br /&gt;
** ''Output Surface'': the labeled surface (for AllRegions mode) or the labeled portion of the surface closest to the seed (for ClosestToSeed)&lt;br /&gt;
|[[Image:screenshotBlankNotOptional.png|thumb|280px|User Interface]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Development ==&lt;br /&gt;
&lt;br /&gt;
===Notes from the Developer(s)===&lt;br /&gt;
&lt;br /&gt;
The module internally uses [http://www.vtk.org/doc/nightly/html/classvtkPolyDataConnectivityFilter.html vtkPolyDataConnectivityFilter].&lt;br /&gt;
&lt;br /&gt;
===Dependencies===&lt;br /&gt;
&lt;br /&gt;
Python&lt;br /&gt;
&lt;br /&gt;
===Tests===&lt;br /&gt;
&lt;br /&gt;
NA&lt;br /&gt;
&lt;br /&gt;
===Known bugs===&lt;br /&gt;
&lt;br /&gt;
Follow this [http://na-mic.org/Mantis/main_page.php link] to the Slicer3 bug tracker. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Usability issues===&lt;br /&gt;
&lt;br /&gt;
Follow this [http://na-mic.org/Mantis/main_page.php link] to the Slicer3 bug tracker. Please select the '''usability issue category''' when browsing or contributing.&lt;br /&gt;
&lt;br /&gt;
===Source code &amp;amp; documentation===&lt;br /&gt;
&lt;br /&gt;
Links to the module's source code:&lt;br /&gt;
&lt;br /&gt;
Source code:&lt;br /&gt;
*[http://viewvc.slicer.org/viewcvs.cgi/trunk/Modules/Python/SurfaceConnectivity.py SurfaceConnectivity.py]&lt;br /&gt;
 &lt;br /&gt;
== More Information == &lt;br /&gt;
&lt;br /&gt;
===Acknowledgment===&lt;br /&gt;
NA&lt;br /&gt;
&lt;br /&gt;
===References===&lt;br /&gt;
NA&lt;/div&gt;</summary>
		<author><name>Lantiga</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Modules:PythonExplodeVolumeTransform-Documentation-3.6&amp;diff=14147</id>
		<title>Modules:PythonExplodeVolumeTransform-Documentation-3.6</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Modules:PythonExplodeVolumeTransform-Documentation-3.6&amp;diff=14147"/>
		<updated>2010-04-25T17:21:22Z</updated>

		<summary type="html">&lt;p&gt;Lantiga: Created page with 'Return to Slicer 3.6 Documentation  Gallery of New Features  __NOTOC__ ===Module Name=== Python Explode Volume Transf…'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Documentation-3.6|Return to Slicer 3.6 Documentation]]&lt;br /&gt;
&lt;br /&gt;
[[Announcements:Slicer3.6#Highlights|Gallery of New Features]]&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
===Module Name===&lt;br /&gt;
Python Explode Volume Transform&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[Image:screenshotBlankNotOptional.png|thumb|280px|User Interface]]&lt;br /&gt;
|}&lt;br /&gt;
{|&lt;br /&gt;
|[[Image:ExplodeVolumeTransform1.png|thumb|320px|Figure 1: Volume loaded with RAS orientation (orientation &amp;quot;From file&amp;quot;)]]&lt;br /&gt;
|[[Image:ExplodeVolumeTransform2.png|thumb|320px|Figure 2: Same volume loaded with IJK orientation]]&lt;br /&gt;
|}&lt;br /&gt;
{|&lt;br /&gt;
|[[Image:ExplodeVolumeTransform3.png|thumb|320px|Figure 3: Exploded RAS volume: ijkToRAS transform + IJK volume (see MRML tree widget on the left)]]&lt;br /&gt;
|[[Image:ExplodeVolumeTransform4.png|thumb|320px|Figure 4: The volume loaded with IJK orientation (from Figure 2) moved under the output transform assumes RAS orientation]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== General Information ==&lt;br /&gt;
===Module Type &amp;amp; Category===&lt;br /&gt;
&lt;br /&gt;
Type: CLI&lt;br /&gt;
&lt;br /&gt;
Category: Converters&lt;br /&gt;
&lt;br /&gt;
===Authors, Collaborators &amp;amp; Contact===&lt;br /&gt;
* Luca Antiga: Orobix Srl &amp;amp; Mario Negri Institute&lt;br /&gt;
* Daniel Blezek: Mayo Clinic&lt;br /&gt;
* Contact: Luca Antiga, luca.antiga@orobix.com&lt;br /&gt;
&lt;br /&gt;
===Module Description===&lt;br /&gt;
This Python module takes a volume in input, extracts its IJKToRAS transform by matrix manipulation, where IJK is the local (VTK-compatible) coordinate system, and generates an IJK-oriented volume in the MRML scene as a child of a IJKToRAS transform node.&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
&lt;br /&gt;
===Use Cases, Examples===&lt;br /&gt;
&lt;br /&gt;
* The module is appropriate when a CLI module can only handle non-oriented images (i.e. images oriented as the XYZ axes), like pure-VTK modules.&lt;br /&gt;
* The typical use is as follows: run a volume through this filter, use the output volume as input for the non-orientation-aware CLI module and place the output of this latter module under the IJKToRAS transform generated by the present module by using the MRML tree widget.&lt;br /&gt;
* Use case: you have data generated from a RAS-agnostic program (e.g. fiber tracts generated in Matlab) and you want to place them in your RAS oriented scene in Slicer. What you do is then to load the MR b0 volume with orientation &amp;quot;From file&amp;quot;, explode its ijkToRAS Transform, load the fiber tracts and place them under the exploded transform in the MRML tree (note that you may have to invert the transform beforehand if what you move under the transform is a polydata, as in this case). You can then (optionally) right-click on the fiber tract nodes and choose &amp;quot;Harden transforms&amp;quot; in order to have the transform applied to the fiber points. At this point you can save them in RAS.&lt;br /&gt;
&lt;br /&gt;
===Tutorials===&lt;br /&gt;
&lt;br /&gt;
NA&lt;br /&gt;
&lt;br /&gt;
===Quick Tour of Features and Use===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
* '''Explode Volume Transform Parameters:'''&lt;br /&gt;
** &amp;quot;Keep origin in volume&amp;quot;: Toggle the inclusion of the origin in the extracted transform rather than in the output volume. The default is to include the origin in the transform, which produces an output volume node with the origin in 0,0,0 (same as if the node was saved and then loaded with the orientation set to IJK).&lt;br /&gt;
&lt;br /&gt;
* '''IO:'''&lt;br /&gt;
** ''Input Volume'': the input volume&lt;br /&gt;
** ''Output Volume'': the output volume, the input volume aligned with the XYZ axes (IJK orientation), set as the child of the corresponding IJKToRAS transform.&lt;br /&gt;
|[[Image:screenshotBlankNotOptional.png|thumb|280px|User Interface]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Development ==&lt;br /&gt;
&lt;br /&gt;
===Notes from the Developer(s)===&lt;br /&gt;
&lt;br /&gt;
NA&lt;br /&gt;
&lt;br /&gt;
===Dependencies===&lt;br /&gt;
&lt;br /&gt;
Python&lt;br /&gt;
&lt;br /&gt;
===Tests===&lt;br /&gt;
&lt;br /&gt;
NA&lt;br /&gt;
&lt;br /&gt;
===Known bugs===&lt;br /&gt;
&lt;br /&gt;
Follow this [http://na-mic.org/Mantis/main_page.php link] to the Slicer3 bug tracker. &lt;br /&gt;
&lt;br /&gt;
===Usability issues===&lt;br /&gt;
&lt;br /&gt;
Follow this [http://na-mic.org/Mantis/main_page.php link] to the Slicer3 bug tracker. Please select the '''usability issue category''' when browsing or contributing.&lt;br /&gt;
&lt;br /&gt;
===Source code &amp;amp; documentation===&lt;br /&gt;
&lt;br /&gt;
Links to the module's source code:&lt;br /&gt;
&lt;br /&gt;
Source code:&lt;br /&gt;
*[http://viewvc.slicer.org/viewcvs.cgi/trunk/Modules/Python/ExplodeVolumeTransform.py ExplodeVolumeTransform.py]&lt;br /&gt;
 &lt;br /&gt;
== More Information == &lt;br /&gt;
&lt;br /&gt;
===Acknowledgment===&lt;br /&gt;
NA&lt;br /&gt;
&lt;br /&gt;
===References===&lt;br /&gt;
NA&lt;/div&gt;</summary>
		<author><name>Lantiga</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Modules:PythonSurfaceToolbox-Documentation-3.6&amp;diff=14146</id>
		<title>Modules:PythonSurfaceToolbox-Documentation-3.6</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Modules:PythonSurfaceToolbox-Documentation-3.6&amp;diff=14146"/>
		<updated>2010-04-25T17:16:47Z</updated>

		<summary type="html">&lt;p&gt;Lantiga: Created page with 'Return to Slicer 3.6 Documentation  Gallery of New Features  __NOTOC__ ===Module Name=== Python Surface Toolbox  {| |…'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Documentation-3.6|Return to Slicer 3.6 Documentation]]&lt;br /&gt;
&lt;br /&gt;
[[Announcements:Slicer3.6#Highlights|Gallery of New Features]]&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
===Module Name===&lt;br /&gt;
Python Surface Toolbox&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[Image:screenshotBlankNotOptional.png|thumb|280px|User Interface]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== General Information ==&lt;br /&gt;
===Module Type &amp;amp; Category===&lt;br /&gt;
&lt;br /&gt;
Type: CLI&lt;br /&gt;
&lt;br /&gt;
Category: Surface Models&lt;br /&gt;
&lt;br /&gt;
===Authors, Collaborators &amp;amp; Contact===&lt;br /&gt;
* Luca Antiga: Orobix Srl &amp;amp; Mario Negri Institute&lt;br /&gt;
* Daniel Blezek: Mayo Clinic&lt;br /&gt;
* Contact: Luca Antiga, luca.antiga@orobix.com&lt;br /&gt;
&lt;br /&gt;
===Module Description===&lt;br /&gt;
This Python module provides several useful surface processing algorithms, namely decimation, smoothing, normal computation, surface cleaning.&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
&lt;br /&gt;
===Use Cases, Examples===&lt;br /&gt;
&lt;br /&gt;
* The module is appropriate when a surface has been extracted (e.g. with the Modelmaker module) but its appearance has to be improved.&lt;br /&gt;
&lt;br /&gt;
===Tutorials===&lt;br /&gt;
&lt;br /&gt;
NA&lt;br /&gt;
&lt;br /&gt;
===Quick Tour of Features and Use===&lt;br /&gt;
&lt;br /&gt;
A list panels in the interface, their features, what they mean, and how to use them. For instance:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
* '''Surface Decimation:'''&lt;br /&gt;
** ''Enabled'': enable topology-preserving surface decimation.&lt;br /&gt;
** ''Target reduction'': target percentage reduction in number of triangles (this target reduction may not be achieved depending on the constraints on the topology).&lt;br /&gt;
** ''Boundary vertex deletion'': allow deletion of points located on the boundary of the surface.&lt;br /&gt;
* '''Surface Smoothing:'''&lt;br /&gt;
** ''Enabled'': enable surface smoothing.&lt;br /&gt;
** ''Smoothing method'': choose between Laplace or Taubin surface smoothing algorithms (while Taubin is a non-shrinking filter, Laplace will tend to shrink the surface under the effect of curvature).&lt;br /&gt;
** ''Boundary smoothing'': allow smoothing of points located on the boundary of the surface.&lt;br /&gt;
** ''Laplace number of iterations'': number of iterations set when the Laplace algorithm is selected.&lt;br /&gt;
** ''Laplace relaxation factor'': the factor by which a point moves towards the barycenter of its neighbors in the Laplace algorithm.&lt;br /&gt;
** ''Taubin number of iterations'': number of iterations set when the Taubin algorithm is selected.&lt;br /&gt;
** ''Taubin passband'': spatial frequency cutoff for the Taubin algorithm.&lt;br /&gt;
* '''Surface Normals:'''&lt;br /&gt;
** ''Enabled'': enable computation of consistently-oriented surface normals (advised after smoothing - smoothing algorithms only move points and do not update normals accordingly, so the surface might still look non-smooth after smoothing when Gouraud shading is used).&lt;br /&gt;
** ''Flip normals'': toggle direction of normals - the algorithm will do its best to orient the normals consistently &amp;quot;outwards&amp;quot; a surface, if the surface is orientable. This switch will make normals point &amp;quot;inwards&amp;quot;&lt;br /&gt;
** ''Splitting'': toggle splitting of surface when angle between the normals of two neighboring triangles is above the Feature angle. This improves the shading appearance of sharp edges but produces topological holes in the surface.&lt;br /&gt;
** ''Feature angle'': angle (in degrees) between two neighboring triangles beyond which the edge between the triangles is split. &lt;br /&gt;
* '''Surface Cleaner:'''&lt;br /&gt;
** ''Enabled'': enable cleaning (merging of coincident points, elimination of unused points, treatment of degenerate cells) of the surface.&lt;br /&gt;
* '''IO:'''&lt;br /&gt;
** ''Input Surface'': the input surface&lt;br /&gt;
** ''Output Surface'': the output surface, i.e. the input surface filtered through all the &amp;quot;Enabled&amp;quot; filters.&lt;br /&gt;
|[[Image:screenshotBlankNotOptional.png|thumb|280px|User Interface]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Development ==&lt;br /&gt;
&lt;br /&gt;
===Notes from the Developer(s)===&lt;br /&gt;
&lt;br /&gt;
The module internally uses the following VTK filters:&lt;br /&gt;
&lt;br /&gt;
[http://www.vtk.org/doc/nightly/html/classvtkDecimatePro.html vtkDecimatePro]&lt;br /&gt;
&lt;br /&gt;
[http://www.vtk.org/doc/nightly/html/classvtkSmoothPolyDataFilter.html vtkSmoothPolyDataFilter]&lt;br /&gt;
&lt;br /&gt;
[http://www.vtk.org/doc/nightly/html/classvtkWindowedSincPolyDataFilter.html vtkWindowedSincPolyDataFilter]&lt;br /&gt;
&lt;br /&gt;
[http://www.vtk.org/doc/nightly/html/classvtkPolyDataNormals.html vtkPolyDataNormals]&lt;br /&gt;
&lt;br /&gt;
[http://www.vtk.org/doc/nightly/html/classvtkCleanPolyData.html vtkCleanPolyData]&lt;br /&gt;
&lt;br /&gt;
===Dependencies===&lt;br /&gt;
&lt;br /&gt;
Python&lt;br /&gt;
&lt;br /&gt;
===Tests===&lt;br /&gt;
&lt;br /&gt;
NA&lt;br /&gt;
&lt;br /&gt;
===Known bugs===&lt;br /&gt;
&lt;br /&gt;
Follow this [http://na-mic.org/Mantis/main_page.php link] to the Slicer3 bug tracker. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Usability issues===&lt;br /&gt;
&lt;br /&gt;
Follow this [http://na-mic.org/Mantis/main_page.php link] to the Slicer3 bug tracker. Please select the '''usability issue category''' when browsing or contributing.&lt;br /&gt;
&lt;br /&gt;
===Source code &amp;amp; documentation===&lt;br /&gt;
&lt;br /&gt;
Links to the module's source code:&lt;br /&gt;
&lt;br /&gt;
Source code:&lt;br /&gt;
*[http://viewvc.slicer.org/viewcvs.cgi/trunk/Modules/Python/SurfaceToolbox.py SurfaceToolbox.py]  &lt;br /&gt;
&lt;br /&gt;
== More Information == &lt;br /&gt;
&lt;br /&gt;
===Acknowledgment===&lt;br /&gt;
NA&lt;br /&gt;
&lt;br /&gt;
===References===&lt;br /&gt;
NA&lt;/div&gt;</summary>
		<author><name>Lantiga</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Modules:PythonSurfaceConnectivity-Documentation-3.6&amp;diff=14145</id>
		<title>Modules:PythonSurfaceConnectivity-Documentation-3.6</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Modules:PythonSurfaceConnectivity-Documentation-3.6&amp;diff=14145"/>
		<updated>2010-04-25T14:12:36Z</updated>

		<summary type="html">&lt;p&gt;Lantiga: Created page with 'Return to Slicer 3.6 Documentation  Gallery of New Features  __NOTOC__ ===Module Name=== Python Surface Connectivity …'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Documentation-3.6|Return to Slicer 3.6 Documentation]]&lt;br /&gt;
&lt;br /&gt;
[[Announcements:Slicer3.6#Highlights|Gallery of New Features]]&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
===Module Name===&lt;br /&gt;
Python Surface Connectivity&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[Image:screenshotBlankNotOptional.png|thumb|280px|User Interface]]&lt;br /&gt;
|[[Image:PythonSurfaceConnectivity1.png|thumb|320px|Figure 1: Clipped model of ICA aneurysm]]&lt;br /&gt;
|[[Image:PythonSurfaceConnectivity2.png|thumb|320px|Figure 2: Connnected region closest to user-specified seed is extracted]]&lt;br /&gt;
|[[Image:PythonSurfaceConnectivity3.png|thumb|320px|Figure 2: All connected regions are extracted and one seed is generated for every region]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== General Information ==&lt;br /&gt;
===Module Type &amp;amp; Category===&lt;br /&gt;
&lt;br /&gt;
Type: CLI&lt;br /&gt;
&lt;br /&gt;
Category: Surface Models&lt;br /&gt;
&lt;br /&gt;
===Authors, Collaborators &amp;amp; Contact===&lt;br /&gt;
* Luca Antiga: Orobix Srl, Mario Negri Institute&lt;br /&gt;
* Daniel Blezek: Mayo Clinic&lt;br /&gt;
* Contact: Luca Antiga, luca.antiga@orobix.com&lt;br /&gt;
&lt;br /&gt;
===Module Description===&lt;br /&gt;
This Python module takes in input a surface and labels it according to surface connectivity. The module either labels the surface with a different RegionId for each connected region, or it extracts the connected region closest to an input fiducial. Optionally, the module produces a list of fiducials positioned on each connected region and labeled with its RegionId.&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
&lt;br /&gt;
===Use Cases, Examples===&lt;br /&gt;
&lt;br /&gt;
* The module is appropriate when there is need of extracting different disconnected components of a model or label them.&lt;br /&gt;
* For developers: the module is a good example on how Python CLI modules can access and modify the MRML scene (unlike executable and shared library CLI modules)&lt;br /&gt;
&lt;br /&gt;
===Tutorials===&lt;br /&gt;
&lt;br /&gt;
NA&lt;br /&gt;
&lt;br /&gt;
===Quick Tour of Features and Use===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
* '''Surface Connectivity Parameters:'''&lt;br /&gt;
** ''Connectivity mode'': choose between assigning a RegionId to each connected region (AllRegions) or extract the connected region closest to a seed fiducial (ClosestToSeed). &lt;br /&gt;
** ''Enable output fiducials'': enable output of a fiducial list containing one fiducial per connected region labeled with the corresponding RegionId&lt;br /&gt;
* '''IO:'''&lt;br /&gt;
** ''Input Surface'': the input surface&lt;br /&gt;
** ''Output Surface'': the labeled surface (for AllRegions mode) or the labeled portion of the surface closest to the seed (for ClosestToSeed)&lt;br /&gt;
|[[Image:screenshotBlankNotOptional.png|thumb|280px|User Interface]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Development ==&lt;br /&gt;
&lt;br /&gt;
===Notes from the Developer(s)===&lt;br /&gt;
&lt;br /&gt;
The module internally uses [http://www.vtk.org/doc/nightly/html/classvtkPolyDataConnectivityFilter.html vtkPolyDataConnectivityFilter].&lt;br /&gt;
&lt;br /&gt;
===Dependencies===&lt;br /&gt;
&lt;br /&gt;
Python&lt;br /&gt;
&lt;br /&gt;
===Tests===&lt;br /&gt;
&lt;br /&gt;
NA&lt;br /&gt;
&lt;br /&gt;
===Known bugs===&lt;br /&gt;
&lt;br /&gt;
Follow this [http://na-mic.org/Mantis/main_page.php link] to the Slicer3 bug tracker. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Usability issues===&lt;br /&gt;
&lt;br /&gt;
Follow this [http://na-mic.org/Mantis/main_page.php link] to the Slicer3 bug tracker. Please select the '''usability issue category''' when browsing or contributing.&lt;br /&gt;
&lt;br /&gt;
===Source code &amp;amp; documentation===&lt;br /&gt;
&lt;br /&gt;
Links to the module's source code:&lt;br /&gt;
&lt;br /&gt;
Source code:&lt;br /&gt;
*[http://viewvc.slicer.org/viewcvs.cgi/trunk/Modules/Python/SurfaceConnectivity.py SurfaceConnectivity.py]&lt;br /&gt;
 &lt;br /&gt;
== More Information == &lt;br /&gt;
&lt;br /&gt;
===Acknowledgment===&lt;br /&gt;
NA&lt;br /&gt;
&lt;br /&gt;
===References===&lt;br /&gt;
NA&lt;/div&gt;</summary>
		<author><name>Lantiga</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/3.6&amp;diff=14144</id>
		<title>Documentation/3.6</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/3.6&amp;diff=14144"/>
		<updated>2010-04-25T13:38:21Z</updated>

		<summary type="html">&lt;p&gt;Lantiga: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is work in progress&lt;br /&gt;
&lt;br /&gt;
=Main GUI=&lt;br /&gt;
&lt;br /&gt;
*[[Modules:MainApplicationGUI-Documentation-3.6| Main Application GUI]] '''(in progress)''' (Wendy Plesniak) &lt;br /&gt;
*[[Modules:EventBindings-3.6| &amp;quot;Hot-keys&amp;quot; and Keyboard Shortcuts]]  '''(in progress)''' (Wendy Plesniak) &lt;br /&gt;
*[[Modules:Loading-Data-3.6| Loading Data]] (scenes, DICOM, volumes, models, fiducials, transforms, etc.)  '''(in progress)''' (Wendy Plesniak)&lt;br /&gt;
*[[Modules:Saving-Documentation-3.6| Saving Data]] (scenes, volumes, models, fiducials, transforms, etc.) '''(in progress)''' (Wendy Plesniak)&lt;br /&gt;
*[[Modules:SceneSnapshots-3.6| Creating and Restoring Scene Snapshots]]  '''(in progress)''' (Wendy Plesniak)&lt;br /&gt;
*[[Modules:ExtensionsManagementWizard-Documentation-3.6| Extensions Management Wizard]]  (Wendy Plesniak)&lt;br /&gt;
&lt;br /&gt;
=Modules=&lt;br /&gt;
*Please copy the template linked below, paste it into your page and customize it with your module's information.&lt;br /&gt;
[[Slicer3:Module_Documentation-3.6_Template|Slicer3:Module_Documentation-3.6_Template]] &lt;br /&gt;
*See Requirements for Modules for info to be put into the Help and Acknowledgment Tabs&lt;br /&gt;
*To put your lab's logo into a module, see [[Slicer3:Execution_Model_Documentation#Adding_Module_Logos_to_Slicer3|here]]&lt;br /&gt;
&lt;br /&gt;
Please adhere to the naming scheme for the module documentation:&lt;br /&gt;
*[ [Modules:MyModuleNameNoSpaces-Documentation-3.6|My Module Name With Spaces] ] (First Last Name)&lt;br /&gt;
&lt;br /&gt;
=Requirements for Modules=&lt;br /&gt;
{| border=&amp;quot;00&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot;| &lt;br /&gt;
* The module is '''feature complete''', it does everything that it advertises it can do&lt;br /&gt;
* The module has a '''test'''. See [http://wiki.na-mic.org/Wiki/index.php/Slicer3:Execution_Model_Testing '''here'''] for more information.&lt;br /&gt;
* Module has '''documentation''' on the [[Documentation-3.5#Modules|Slicer wiki]]. Please use the template provided [[Documentation-3.6#Modules|'''here''']] to structure your page. Please keep in mind that our users are not computer scientists with a background in computer vision.&lt;br /&gt;
*Please add a pointer to the documentation on the Slicer wiki to the the '''Help''' tab of the module. See the '''Editor module''' in Slicer for an example.&lt;br /&gt;
* The contributor (and their manager/advisor), the lab (with labs/institution logo) and the funding source (with grant number, logo optional) are listed in the '''Acknowledegment''' tab of the module. Please see the '''Models module''' for an example. The people listed in the acknowledgement will be the primary people for support and maintenance relative of the module. [[Slicer3:Execution_Model_Documentation#Adding_Module_Logos_to_Slicer3|See here for more information.]]&lt;br /&gt;
** '''Style Guide:''' All acknowledgment icons should be 100x100 pixels, preferably in png format.&lt;br /&gt;
** '''Accessing logos:''' Icons for BIRN, NAC, NA-MIC and IGT are included in Slicer3/Base/GUI//vtkSlicerBaseAcknowledgementLogoIcons.cxx/h and resources for them are in Slicer3/Base/GUI/Resources/vtkSlicerBaseAcknowledgementLogos_ImageData.h. The API for vtkSlicerModuleGUI provides access to these icons. &lt;br /&gt;
** '''Adding logos:''' Please add additional image resources and logo icons to these files as required in order to promote shared use (and to prevent duplication in the code.)&lt;br /&gt;
* Many modules are better suited to be [[Documentation-3.4#Extensions_for_Downloading|downloadable extensions]].  The same module creation guidelines apply, but the actual implementation is done outside of the slicer source code repository.&lt;br /&gt;
* Follow [[Documentation-3.5-Rons-Rules|'''Ron's rules for tools''']]&lt;br /&gt;
| style=&amp;quot;background: #e5e5e5&amp;quot; align=&amp;quot;center&amp;quot;| Examples for the Help and &lt;br /&gt;
Acknowledgment Panels&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ebeced&amp;quot;|[[Image:SlicerHelpExample.png|center|200px]][[Image:SlicerAcknowledgementExample.png|center|200px]] &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=List of Modules added or significantly revised since the 3.4 release=&lt;br /&gt;
* Interactive Editor&lt;br /&gt;
* Volume Rendering&lt;br /&gt;
* Colors (Nicole Aucoin)&lt;br /&gt;
* MRI Bias Field Correction (Sylvain Jaume)&lt;br /&gt;
* 4D Image (Viewer) (Junichi Tokuda)&lt;br /&gt;
* 4D Analysis (Time-intensity curve plotting and analysis) (Junichi Tokuda)&lt;br /&gt;
* Fast Marching segmentation (Andriy Fedorov)&lt;br /&gt;
* Mesh Contour Segmentation (Peter Karasev)&lt;br /&gt;
* Subvolume extraction with ROI widget (Andriy Fedorov)&lt;br /&gt;
* Registration Metrics (HD and DSC) (Haytham Elhawary)&lt;br /&gt;
* Measurements (rulers and angles) (Nicole Aucoin)&lt;br /&gt;
* Affine registration (Casey Goodlett)&lt;br /&gt;
* Collect Patient Fiducials (Andrew Wiles)&lt;br /&gt;
* IGT Tool Selector (Andrew Wiles)&lt;br /&gt;
* Fiducials (Nicole Aucoin)&lt;br /&gt;
&lt;br /&gt;
=List of Modules=&lt;br /&gt;
==Core==&lt;br /&gt;
*[[Slicer3:Multiple_Cameras| Camera Module]] (Sebastian Barre)&lt;br /&gt;
*[[Modules:Welcome-Documentation-3.4| Welcome Module]] (Wendy Plesniak, Steve Pieper, Sonia Pujol, Ron Kikinis)&lt;br /&gt;
*[[Modules:Volumes-Documentation-3.6| Volumes Module]] (Alex Yarmarkovich, Steve Pieper) &lt;br /&gt;
**[[Modules:Volumes:Diffusion Editor-Documentation-3.6| Diffusion Editor]] (Kerstin Kessel)&lt;br /&gt;
*[[Modules:Models-Documentation-3.6| Models Module]] (Alex Yarmarkovich) &lt;br /&gt;
*[[Modules:Fiducials-Documentation-3.6| Fiducials Module]]  (Nicole Aucoin) &lt;br /&gt;
*[[Modules:Measurements-Documentation-3.6 | Measurements (rulers and angles) ]] (Nicole Aucoin)&lt;br /&gt;
*[[Modules:Data-Documentation-3.6| Data Module]] (Alex Yarmarkovich) &lt;br /&gt;
*[[Modules:Slices-Documentation-3.6|Slices Module]] (Jim Miller) &lt;br /&gt;
*[[Modules:Colors-Documentation-3.6| Color Module]] (Nicole Aucoin) &lt;br /&gt;
*[[Modules:Editor-Documentation-3.4| Interactive Editor]] (Steve Pieper)   &amp;lt;span style=&amp;quot;background:hotpink; color:white&amp;quot;&amp;gt;Not yet 3.6&amp;lt;/span&amp;gt;&amp;lt;font background=hotpink color=white&amp;gt;Not yet 3.6&amp;lt;/font&amp;gt;&lt;br /&gt;
*[[Modules:ROIModule-Documentation-3.6|ROI Module]] (Alex Yarmarkovich) &lt;br /&gt;
*[[Modules:VolumeRendering-Documentation-3.6| Volume Rendering Module]] (Yanling Liu, Alex Yarmarkovich)&lt;br /&gt;
&lt;br /&gt;
==Specialized Modules==&lt;br /&gt;
&lt;br /&gt;
Please adhere to the naming scheme for the module documentation:&lt;br /&gt;
*[[Modules:MyModuleNameNoSpaces-Documentation-3.6|My Module Name With Spaces] ] (First Last Name)&lt;br /&gt;
&lt;br /&gt;
===Wizards===&lt;br /&gt;
*[[Modules:ChangeTracker-Documentation-3.6|ChangeTracker]] (Andriy Fedorov)&lt;br /&gt;
*[[Modules:IA_FEMesh-Documentation-3.6|IA FE Meshing Module]] (Vincent Magnotta)  &amp;lt;span style=&amp;quot;background:hotpink; color:white&amp;quot;&amp;gt;Not yet 3.6&amp;lt;/span&amp;gt;&amp;lt;font background=hotpink color=white&amp;gt;Not yet 3.6&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Informatics Modules===&lt;br /&gt;
*[[Modules:FetchMI-Documentation-3.6| Fetch Medical Informatics Module]] (Wendy Plesniak, Dan Marcus)  &lt;br /&gt;
*[[Modules:QDECModule-Documentation-3.6| QDEC Module]] (Nicole Aucoin) &lt;br /&gt;
*[[Modules:QueryAtlas-Documentation-3.6|Query Atlas Module]] (Wendy Plesniak)&lt;br /&gt;
&lt;br /&gt;
===Registration===&lt;br /&gt;
*[[Slicer3:Registration|'''Overview of all Registration Modules''' ]]: go here for more detailed help on selecting your registration module.&lt;br /&gt;
*Fast&lt;br /&gt;
**[[Modules:Transforms-Documentation-3.6|Transforms Module]]:  manual &amp;amp; interactive rigid registration , (Alex Yarmarkovich)&lt;br /&gt;
**[[Modules:AffineRegistration-Documentation-3.4|Fast Affine Module]]:  automated fast affine registration , (Daniel Blezek)   &amp;lt;span style=&amp;quot;background:hotpink; color:white&amp;quot;&amp;gt;Not yet 3.6&amp;lt;/span&amp;gt;&amp;lt;font background=hotpink color=white&amp;gt;Not yet 3.6&amp;lt;/font&amp;gt;'&lt;br /&gt;
**[[Modules:DeformableB-SplineRegistration-Documentation-3.6|Fast Non-rigid BSpline Module]]: fast non-rigid registration , (Bill Lorensen)  &lt;br /&gt;
*Robust&lt;br /&gt;
**[[Modules:RegisterImages-Documentation-3.6|Robust Rigid-Affine-Nonrigid Module]]:  registration with robust initialization, variable DOF and masking options, (Casey Goodlett)&lt;br /&gt;
**[[Modules:RegisterImagesMultiRes-Documentation-3.6|Robust Multiresolution Affine Module]]: affine registration in multi-resolution scheme, robust to large differences in initial position or image content ,  (Casey Goodlett)&lt;br /&gt;
*Brain Only&lt;br /&gt;
**[[Modules:ACPCTransform-Documentation-3.6|ACPC Transform Module]]: align a single brain along AC-PC line ,  (Nicole Aucoin)&lt;br /&gt;
*Non-Raster-Image Data&lt;br /&gt;
**[[Modules:TransformFromFiducials-Documentation-3.6|Fiducial Registration Module]]: align two sets of fiducials (translation, rigid or similarity)  (Casey Goodlett)&lt;br /&gt;
**[[Modules:PythonSurfaceICPRegistration-Documentation-3.6|Surface Registration Module]]: automated surface-to-surface (model) registration (Luca Antiga, Daniel Blezek)  &amp;lt;span style=&amp;quot;background:hotpink; color:white&amp;quot;&amp;gt;Not yet 3.6 (in progress)&amp;lt;/span&amp;gt;&amp;lt;font background=hotpink color=white&amp;gt;Not yet 3.6 (in progress)&amp;lt;/font&amp;gt;&lt;br /&gt;
*Experimental and auxiliary&lt;br /&gt;
**[[Modules:RegistrationMetrics-Documentation-3.5 | Registration Metrics (HD and DSC) ]] (Haytham Elhawary)  &amp;lt;span style=&amp;quot;background:hotpink; color:white&amp;quot;&amp;gt;Not yet 3.6&amp;lt;/span&amp;gt;&amp;lt;font background=hotpink color=white&amp;gt;Not yet 3.6&amp;lt;/font&amp;gt;&lt;br /&gt;
**[[Modules:LinearRegistration-Documentation-3.4|Linear Registration Module]]: (fast) rigid registration m (Daniel Blezek)  &amp;lt;span style=&amp;quot;background:hotpink; color:white&amp;quot;&amp;gt;Not yet 3.6&amp;lt;/span&amp;gt;&amp;lt;font background=hotpink color=white&amp;gt;Not yet 3.6&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Segmentation===&lt;br /&gt;
*[[Modules:SegmentationOverview3.6|Overview]]&lt;br /&gt;
**[[Modules:EMSegmentTemplateBuilder3.6|EM Segment Template Builder 3.6]] (Kilian Pohl)  &lt;br /&gt;
**[[Modules:EMSegment-Command-Line3.6|EM Segment Command-Line]] (Kilian Pohl)  &lt;br /&gt;
**[[Modules:EMSegment-Simple3.6|EM Segment Simple]] (Kilian Pohl) &lt;br /&gt;
**[[Modules:FastMarchingSegmentation-Documentation-3.6|Fast Marching segmentation]] (Andriy Fedorov)&lt;br /&gt;
**[[Modules:OtsuThresholdSegmentation-Documentation-3.6|Otsu Threshold Segmentation]] (Bill Lorensen)&lt;br /&gt;
**[[Modules:Simple Region Growing-Documentation-3.4|Simple Region Growing]] (Jim Miller, Harini Veeraraghavan)  &amp;lt;span style=&amp;quot;background:hotpink; color:white&amp;quot;&amp;gt;Not yet 3.6&amp;lt;/span&amp;gt;&amp;lt;font background=hotpink color=white&amp;gt;Not yet 3.6&amp;lt;/font&amp;gt;&lt;br /&gt;
**[[Modules:RobustStatisticsSeg-Documentation-3.6|RobustStatisticsSeg]] Yi Gao (yigao@gatech.edu).&lt;br /&gt;
&lt;br /&gt;
===Statistics===&lt;br /&gt;
*[[Modules:LabelStatistics-Documentation-3.6|Label Statistics]] (Steve Pieper)&lt;br /&gt;
&lt;br /&gt;
===Diffusion MRI===&lt;br /&gt;
*Diffusion MRI&lt;br /&gt;
** DWI filtering&lt;br /&gt;
***[[Modules:JointRicianLMMSEImageFilter-Documentation-3.6|Joint Rician LMMSE Image Filter]] (Antonio Tristán Vega, Santiago Aja-Fernandez)   &lt;br /&gt;
***[[Modules:RicianLMMSEImageFilter-Documentation-3.6|Rician LMMSE Image Filter]] (Antonio Tristán Vega, Santiago Aja-Fernandez, Marc Niethammer)  &lt;br /&gt;
***[[Modules:UnbiasedNonLocalMeans-Documentation-3.6|Unbiased Non Local Means filter for DWI]]  (Antonio Tristán Vega, Santiago Aja-Fernandez)  &lt;br /&gt;
** Diffusion tensor utilities&lt;br /&gt;
***[[Modules:DiffusionTensorEstimation-Documentation-3.6|Diffusion Tensor Estimation]] (Raul San Jose Estepar)   &lt;br /&gt;
***[[Modules:DiffusionTensorScalarMeasurements-Documentation-3.6 | Diffusion Tensor Scalar Measurements]] (Raul San Jose Estepar)  &lt;br /&gt;
** Resampling&lt;br /&gt;
***[[Modules:ResampleDTIVolume-Documentation-3.6|Resample DTI Volume]] (Francois Budin)&lt;br /&gt;
** Tractography&lt;br /&gt;
***[[Modules:ROISeeding-Documentation-3.6 | Label Seeding]] (Raul San Jose Estepar)   &lt;br /&gt;
***[[Modules:FiducialSeeding-Documentation-3.6|Fiducial Seeding]] (Alex Yarmakovich, Steve Pieper) &lt;br /&gt;
***[[Modules:DTIDisplay-Documentation-3.6|FiberBundles]] (Alex Yarmakovich) &lt;br /&gt;
***[[Modules:StochasticTractography-Documentation-3.6|Python Stochastic Tractography]] (Julien de Siebenthal)   &lt;br /&gt;
***[[Modules:ROISelect-Documentation-3.6|ROI Select]] (Lauren O'Donnell)&lt;br /&gt;
&lt;br /&gt;
===IGT===&lt;br /&gt;
*[[Modules:OpenIGTLinkIF-Documentation-3.6| OpenIGTLinkIF Module]] (Junichi Tokuda)&lt;br /&gt;
*[[Modules:NeuroNav-Documentation-3.6| NeuroNav Module]] (Haiying Liu)&lt;br /&gt;
*[[Modules:ProstateNav-Documentation-3.6| ProstateNav Module]] (Junichi Tokuda, Andras Lasso)&lt;br /&gt;
*[[Modules:CollectFiducials-Documentation-3.6 | Collect Patient Fiducials ]] (Andrew Wiles)&lt;br /&gt;
*[[Modules:IGTToolSelector-Documentation-3.6 | IGT Tool Selector ]] (Andrew Wiles)&lt;br /&gt;
&lt;br /&gt;
===Time Series===&lt;br /&gt;
* [[Modules:FourDImage-Documentation-3.6|4D Image (Viewer)]] (Junichi Tokuda)&lt;br /&gt;
&lt;br /&gt;
===Filtering===&lt;br /&gt;
*[[Modules:MRIBiasFieldCorrection-Documentation-3.5|MRI Bias Field Correction]] (Sylvain Jaume)&lt;br /&gt;
*[[Modules:CheckerboardFilter-Documentation-3.6|Checkerboard Filter]] (Bill Lorensen, Jim Miller)&lt;br /&gt;
*[[Modules:HistogramMatching-Documentation-3.4|Histogram Matching]] (Bill Lorensen, Xiaodong Tao)&lt;br /&gt;
*[[Modules:ImageLabelCombine-3.6|Image Label Combine]] (Alex Yarmarkovich)  &lt;br /&gt;
*[[Modules:ResampleVolume-Documentation-3.6|Resample Volume]] (Bill Lorensen)&lt;br /&gt;
*[[Modules:ResampleScalarVectorDWIVolume-Documentation-3.6|Resample Scalar/Vector/DWI Volume]] (Francois Budin)&lt;br /&gt;
*[[Modules:ThresholdImage-Documentation-3.6|Threshold Image]] (Nicole Aucoin)&lt;br /&gt;
*[[Modules:OtsuThreshold-Documentation-3.6|Otsu Threshold]] (Bill Lorensen) &lt;br /&gt;
*Arithmetic&lt;br /&gt;
**[[Modules:AddImages-Documentation-3.6|Add Images]] (Harini Veeraraghavan) &lt;br /&gt;
**[[Modules:SubtractImages-Documentation-3.6|Subtract Images]] (Harini Veeraraghavan)  &lt;br /&gt;
** [[Modules:CastImage-Documentation-3.6|Cast Image]] (Nicole Aucoin) &lt;br /&gt;
** [[Modules:MaskImage-Documentation-3.6|Mask Image]] (Nicole Aucoin, Harini Veeraraghavan) &lt;br /&gt;
*Denoising&lt;br /&gt;
**[[Modules:GradientAnisotropicFilter-Documentation-3.4| Gradient Anisotropic Filter]]  (Bill Lorensen checked this in)  &amp;lt;span style=&amp;quot;background:hotpink; color:white&amp;quot;&amp;gt;Not yet 3.6&amp;lt;/span&amp;gt;&amp;lt;font background=hotpink color=white&amp;gt;Not yet 3.6&amp;lt;/font&amp;gt;&lt;br /&gt;
**[[Modules:CurvatureAnisotropicDiffusion-Documentation-3.4|Curvature Anisotropic Diffusion]] (Bill Lorensen)  &amp;lt;span style=&amp;quot;background:hotpink; color:white&amp;quot;&amp;gt;Not yet 3.6&amp;lt;/span&amp;gt;&amp;lt;font background=hotpink color=white&amp;gt;Not yet 3.6&amp;lt;/font&amp;gt;&lt;br /&gt;
**[[Modules:GaussianBlur-Documentation-3.4|Gaussian Blur]] (Julien Jomier, Stephen Aylward)  &amp;lt;span style=&amp;quot;background:hotpink; color:white&amp;quot;&amp;gt;Not yet 3.6&amp;lt;/span&amp;gt;&amp;lt;font background=hotpink color=white&amp;gt;Not yet 3.6&amp;lt;/font&amp;gt;&lt;br /&gt;
**[[Modules:MedianFilter-Documentation-3.4|Median Filter]] (Xiaodong Tao)  &amp;lt;span style=&amp;quot;background:hotpink; color:white&amp;quot;&amp;gt;Not yet 3.6&amp;lt;/span&amp;gt;&amp;lt;font background=hotpink color=white&amp;gt;Not yet 3.6&amp;lt;/font&amp;gt;&lt;br /&gt;
*Morphology&lt;br /&gt;
**[[Modules:VotingBinaryHoleFilling-Documentation-3.4|Voting Binary Hole Filling]] (Jim Miller)  &amp;lt;span style=&amp;quot;background:hotpink; color:white&amp;quot;&amp;gt;Not yet 3.6&amp;lt;/span&amp;gt;&amp;lt;font background=hotpink color=white&amp;gt;Not yet 3.6&amp;lt;/font&amp;gt;&lt;br /&gt;
**[[Modules:GrayscaleFillHole-Documentation-3.6|Grayscale Fill Hole]] (Bill Lorensen)&lt;br /&gt;
**[[Modules:GrayscaleGrindPeak-Documentation-3.6|Grayscale Grind Peak]] (Bill Lorensen)&lt;br /&gt;
&lt;br /&gt;
===Surface Models===&lt;br /&gt;
*[[Modules:ModelMaker-Documentation-3.6| ModelMaker]] (Nicole Aucoin) &lt;br /&gt;
*[[Modules:GrayscaleModelMaker-Documentation-3.6|Grayscale Model Maker]] (Bill Lorensen)  &amp;lt;span style=&amp;quot;background:hotpink; color:white&amp;quot;&amp;gt;Not yet 3.6&amp;lt;/span&amp;gt;&amp;lt;font background=hotpink color=white&amp;gt;Not yet 3.6&amp;lt;/font&amp;gt;&lt;br /&gt;
*[[Modules:MeshContourSegmentation-Documentation-3.6|Mesh Contour Segmentation]] (Peter Karasev)  &lt;br /&gt;
*[[Modules:PythonSurfaceConnectivity-Documentation-3.6| Python Surface Connectivity]] (Luca Antiga, Daniel Blezek)  &amp;lt;span style=&amp;quot;background:hotpink; color:white&amp;quot;&amp;gt;Not yet 3.6 (in progress)&amp;lt;/span&amp;gt;&amp;lt;font background=hotpink color=white&amp;gt;Not yet 3.6 (in progress)&amp;lt;/font&amp;gt;&lt;br /&gt;
*[[Modules:PythonSurfaceICPRegistration-Documentation-3.6| Python Surface ICP Registration]] (Luca Antiga, Daniel Blezek)  &amp;lt;span style=&amp;quot;background:hotpink; color:white&amp;quot;&amp;gt;Not yet 3.6 (in progress)&amp;lt;/span&amp;gt;&amp;lt;font background=hotpink color=white&amp;gt;Not yet 3.6 (in progress)&amp;lt;/font&amp;gt;&lt;br /&gt;
*[[Modules:PythonSurfaceToolbox-Documentation-3.6| Python Surface Toolbox]] (Luca Antiga, Daniel Blezek)    &amp;lt;span style=&amp;quot;background:hotpink; color:white&amp;quot;&amp;gt;Not yet 3.6 (in progress)&amp;lt;/span&amp;gt;&amp;lt;font background=hotpink color=white&amp;gt;Not yet 3.6 (in progress)&amp;lt;/font&amp;gt;&lt;br /&gt;
*[[Modules:ClipModel-Documentation-3.6| Clip Model]] (Alex Yarmarkovich)  &lt;br /&gt;
*[[Modules:Model_Into_Label_Volume_Documentation-3.6| Model into Label Volume]] (Nicole Aucoin)&lt;br /&gt;
&lt;br /&gt;
===Batch processing===&lt;br /&gt;
*[[Modules:EMSegmentBatch-Documentation-3.6|EM Segmenter batch]] (Julien Jomier, Brad Davis)&lt;br /&gt;
*[[Modules:GaussianBlurBatch-Documentation-3.6|Gaussian Blur batch]] (Julien Jomier, Stephen Aylward)&lt;br /&gt;
*[[Modules:RegisterImagesBatch-Documentation-3.6|Register Images batch]] (Julien Finet, Stephen Aylward)&lt;br /&gt;
*[[Modules:ResampleVolumeBatch-Documentation-3.6|Resample Volume batch]] (Julien Finet)&lt;br /&gt;
&lt;br /&gt;
===Converters===&lt;br /&gt;
*[[Modules:CreateaDicomSeries-Documentation-3.4|Create a Dicom Series]] (Xiaodong Tao)  &amp;lt;span style=&amp;quot;background:hotpink; color:white&amp;quot;&amp;gt;Not yet 3.6&amp;lt;/span&amp;gt;&amp;lt;font background=hotpink color=white&amp;gt;Not yet 3.6&amp;lt;/font&amp;gt;&lt;br /&gt;
*[[Modules:DicomToNRRD-3.4|Dicom to NRRD]] (Xiaodong Tao)  &amp;lt;span style=&amp;quot;background:hotpink; color:white&amp;quot;&amp;gt;Not yet 3.6&amp;lt;/span&amp;gt;&amp;lt;font background=hotpink color=white&amp;gt;Not yet 3.6&amp;lt;/font&amp;gt;&lt;br /&gt;
*[[Modules:OrientImages-Documentation-3.4|Orient Images]] (Xiaodong Tao)  &amp;lt;span style=&amp;quot;background:hotpink; color:white&amp;quot;&amp;gt;Not yet 3.6&amp;lt;/span&amp;gt;&amp;lt;font background=hotpink color=white&amp;gt;Not yet 3.6&amp;lt;/font&amp;gt;&lt;br /&gt;
*[[Modules:PythonExplodeVolumeTransform-Documentation-3.6| Python Explode Volume Transform]] (Luca Antiga, Daniel Blezek)  &amp;lt;span style=&amp;quot;background:hotpink; color:white&amp;quot;&amp;gt;Not yet 3.6 (in progress)&amp;lt;/span&amp;gt;&amp;lt;font background=hotpink color=white&amp;gt;Not yet 3.6 (in progress)&amp;lt;/font&amp;gt;&lt;br /&gt;
*[[Modules:CropVolume-Documentation-3.6|Crop Volume]] (previously ExtractSubvolumeROI) (Andriy Fedorov)&lt;br /&gt;
&lt;br /&gt;
=Slicer Extensions=&lt;br /&gt;
&lt;br /&gt;
==Extensions for Downloading==&lt;br /&gt;
===Introduction===&lt;br /&gt;
[[Image:SlicerOnNITRC2009.png|thumb|right|Slicer on NITRC]]&lt;br /&gt;
* Slicer Extensions are a mechanism for third parties to provide modules which extend the functionality of 3d Slicer.&lt;br /&gt;
* Some of the extensions do not use the Slicer license. Please review carefully.&lt;br /&gt;
* For a subset of extensions, you can use the extension wizard in Slicer to find their webpages and to install/uninstall individual extensions. In case of problems with those modules, please talk directly to the developers of the extensions.&lt;br /&gt;
* The version that is available through the extension manager is chosen by the developer of that extension   &lt;br /&gt;
&lt;br /&gt;
We are using NITRC as the primary repository for contributed extensions. As a general rule, we do not test the extensions ourselves. Use them at your own risk.&lt;br /&gt;
Click [http://www.nitrc.org/search/?type_of_search=soft&amp;amp;words=slicer3&amp;amp;Search.x=0&amp;amp;Search.y=0&amp;amp;Search=Search  here] to see a listing of Slicer 3 extensions on NITRC.&lt;br /&gt;
&lt;br /&gt;
[[Image:Slicer-3.4.1-extension-manager-2009-10-02.png|thumb|right|Extension manager dialog box]]&lt;br /&gt;
To add extension modules to an installed binary of slicer:&lt;br /&gt;
* Use the View-&amp;gt;Extension Manager menu option&lt;br /&gt;
* The dialog will be initialized with the URL to the extensions that have been compiled to match your binary of slicer.&lt;br /&gt;
** '''Note''' installing extensions from a different repository URL is likely to be unstable due to platform and software version differences.&lt;br /&gt;
** You can select a local install directory for your downloaded extensions (be sure to choose a directory with enough free space).&lt;br /&gt;
* Select the extensions you wish to install and click to download them.  Installed extensions will be available when you restart slicer.&lt;br /&gt;
* To turn modules on or off, you can use the Module Settings page of the View-&amp;gt;Application Settings dialog.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Extensions are compiled as part of the nightly build. In order to have your extension compiled nightly and made available to end users, please contact the Slicer team. For explanations for developers see [[Slicer3:Extensions| here]]&lt;br /&gt;
&lt;br /&gt;
'''Installation'''&lt;br /&gt;
*Click on the cogwheel icon to start the extensions wizard (highlighted in red)&lt;br /&gt;
[[image:Slicertoolbar.png|Extensions Wizard]]&lt;br /&gt;
&lt;br /&gt;
===Listing of plug-ins===&lt;br /&gt;
&lt;br /&gt;
'''Available Extensions'''&lt;br /&gt;
&lt;br /&gt;
* [[Modules:ABC-Documentation-3.5|ABC]] Marcel Prastawa (prastawa@sci.utah.edu) (a.k.a. Atlas Based Classification) '''Not yet 3.6'''. Belongs to segmentation&lt;br /&gt;
&lt;br /&gt;
* [[Modules:ARCTIC-Documentation-3.6|ARCTIC]] Cedric Mathieu and Clement Vachet (cvachet@email.unc.edu) (a.k.a Automatic Regional Cortical ThICkness) '''Not yet 3.6'''. Belongs to wizards&lt;br /&gt;
&lt;br /&gt;
* [[Modules:BRAINSDemonWarp|BRAINSDemonWarp]] Hans Johnson (hans-johnson@uiowa.edu) '''Not yet 3.6'''. Belongs to registration, robust&lt;br /&gt;
&lt;br /&gt;
* [[Modules:BRAINSFit|BRAINSFit]] Eun Young Kim (eunyoung-kim@uiowa.edu) '''Not yet 3.6'''. Belongs to registration robust&lt;br /&gt;
&lt;br /&gt;
* [[Modules:BRAINSMush|BRAINSMush]] Hans Johnson (hans-johnson@uiowa.edu) '''Not yet 3.6'''. Belongs to registration robust.&lt;br /&gt;
&lt;br /&gt;
* [[Modules:CMTK|CMTK]] Computational Morphometry Toolkit Torsten Rohlfing (torsten@synapse.sri.com) '''Not yet 3.6'''. Belongs to registration robust.&lt;br /&gt;
&lt;br /&gt;
* [[Modules:EMDTIClustering-Documentation-3.6|EMFiberClusteringModule]] Mahnaz Maddah (maddah@ge.com) (a.k.a. Quantitative Diffusion Tools) '''Not yet 3.6'''. Belongs to tractography&lt;br /&gt;
&lt;br /&gt;
* [[Modules:FourDAnalysis-Documentation-3.6|4D Analysis (Time-series plotting and analysis including kinetic analysis of DCE MRI)]] Junichi Tokuda (tokuda@bwh.harvard.edu)&lt;br /&gt;
&lt;br /&gt;
* [[Modules:FuzzySegmentationModule|FuzzySegmentationModule]] Xiaodong Tao (taox@research.ge.com) '''Not yet 3.6'''. Belongs to segmentation.&lt;br /&gt;
&lt;br /&gt;
* [[Modules:HammerRegistration|HammerRegistration]] GuorongWu, XiaodongTao, JimMiller, DinggangShen (dgshen@med.unc.edu) '''Not yet 3.6'''. Belongs to registration robust.&lt;br /&gt;
&lt;br /&gt;
* [[Modules:LabelDiameterEstimation-Documentation-3.5|LabelDiameterEstimation]] Andriy Fedorov (fedorov@bwh.harvard.edu) '''Not yet 3.6'''. Belongs to IGT.&lt;br /&gt;
&lt;br /&gt;
* [[Modules:LesionSegmentationApplications-Documentation-3.6|LesionSegmentationApplications]] Mark Scully (mscully@mrn.org) (a.k.a. 3DSlicerLupusLesionModule) '''Not yet 3.6'''. Belongs to wizards.&lt;br /&gt;
&lt;br /&gt;
* [[Modules:Plastimatch|Plastimatch]] Greg Sharp (gcsharp@partners.org) '''Not yet 3.6'''. Belongs to registration robust.&lt;br /&gt;
&lt;br /&gt;
* [[Modules:RicianNoiseFilter|RicianNoiseFilter]] Ross Whitaker (whitaker@cs.utah.edu) '''Not yet 3.6'''. Belongs to DWI&lt;br /&gt;
&lt;br /&gt;
* [[Modules:SkullStripperModule|SkullStripperModule]] Xiaodong Tao (taox@research.ge.com) '''Not yet 3.6'''. Belongs to wizards&lt;br /&gt;
&lt;br /&gt;
* [[Modules:SpineSegmentation-Documentation-3.6|SpineSegmentation]] Sylvain Jaume (sylvain@csail.mit.edu). Belongs to wizards&lt;br /&gt;
&lt;br /&gt;
* [[Image:Slicervmtk_logo.png|150px]] The Vascular Modeling Toolkit in 3D Slicer, Daniel Haehn (haehn@bwh.harvard.edu)&lt;br /&gt;
&lt;br /&gt;
:*[[Modules:VMTKSlicerModule|VmtkSlicerModule]] prerequisite install for all VMTK plug-ins&lt;br /&gt;
&lt;br /&gt;
:*[[Modules:VMTKCenterlines|VMTKCenterlines]] providing centerline computation of surface models&lt;br /&gt;
&lt;br /&gt;
:*[[Modules:VMTKEasyLevelSetSegmentation|VMTKEasyLevelSetSegmentation]] providing level-set segmentation of vessels, aneurysms and tubular structures using an easy interface&lt;br /&gt;
&lt;br /&gt;
:*[[Modules:VMTKLevelSetSegmentation|VMTKLevelSetSegmentation]] providing level-set segmentation of vessels, aneurysms and tubular structures using different algorithms for initialization and evolution&lt;br /&gt;
&lt;br /&gt;
:*[[Modules:VMTKVesselEnhancement|VMTKVesselEnhancement]] providing vessel enhancement filters to highlight vascular or tubular structures&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Example Extensions====&lt;br /&gt;
&lt;br /&gt;
* [[Modules:ExampleCommandLine|ExampleCommandLine]] Jim Miller '''Not yet 3.6'''&lt;br /&gt;
&lt;br /&gt;
* [[Modules:ExampleLoadableGuiLessModule|ExampleLoadableGuiLessModule]] Steve Pieper '''Not yet 3.6'''&lt;br /&gt;
&lt;br /&gt;
* [[Modules:ExampleLoadableModule|ExampleLoadableModule]] Steve Pieper '''Not yet 3.6'''&lt;br /&gt;
&lt;br /&gt;
* [[Modules:PythonSampleScriptedModule|PythonSampleScriptedModule]] Steve Pieper '''Not yet 3.6'''&lt;br /&gt;
&lt;br /&gt;
* [[Modules:TclSampleScriptedModule|TclSampleScriptedModule]] Steve Pieper '''Not yet 3.6'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Non-SPL Supported Compatibility Packages'''&lt;br /&gt;
&lt;br /&gt;
* [[Modules:BioImageSuite|BioImageSuite]] Xenios Papademtrios '''Not yet 3.6'''&lt;br /&gt;
&lt;br /&gt;
=QA=&lt;br /&gt;
[[Slicer-3.6-QA|Slicer 3.6 QA table]]&lt;/div&gt;</summary>
		<author><name>Lantiga</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Modules:PythonSurfaceICPRegistration-Documentation-3.6&amp;diff=14143</id>
		<title>Modules:PythonSurfaceICPRegistration-Documentation-3.6</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Modules:PythonSurfaceICPRegistration-Documentation-3.6&amp;diff=14143"/>
		<updated>2010-04-25T13:35:55Z</updated>

		<summary type="html">&lt;p&gt;Lantiga: Created page with 'Return to Slicer 3.6 Documentation  Gallery of New Features  __NOTOC__ ===Module Name=== Python ICP Registration  {| …'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Documentation-3.6|Return to Slicer 3.6 Documentation]]&lt;br /&gt;
&lt;br /&gt;
[[Announcements:Slicer3.6#Highlights|Gallery of New Features]]&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
===Module Name===&lt;br /&gt;
Python ICP Registration&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[Image:screenshotBlankNotOptional.png|thumb|280px|User Interface]]&lt;br /&gt;
|[[Image:PythonICP1.png|thumb|280px|Figure 1: Full model of aneurysm and (unregistered) aneurysm dome]]&lt;br /&gt;
|[[Image:PythonICP2.png|thumb|280px|Figure 2: Aneurysm dome registered on the full model]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== General Information ==&lt;br /&gt;
===Module Type &amp;amp; Category===&lt;br /&gt;
&lt;br /&gt;
Type: CLI&lt;br /&gt;
&lt;br /&gt;
Category: Surface Models&lt;br /&gt;
&lt;br /&gt;
===Authors, Collaborators &amp;amp; Contact===&lt;br /&gt;
* Luca Antiga: Orobix Srl &amp;amp; Mario Negri Institute&lt;br /&gt;
* Daniel Blezek: Mayo Clinic&lt;br /&gt;
* Contact: Luca Antiga, luca.antiga@orobix.com&lt;br /&gt;
&lt;br /&gt;
===Module Description===&lt;br /&gt;
This Python module registers an input surface to a target surface using the Iterative Closest Point algorithm using rigid, similarity and affine transforms.&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
&lt;br /&gt;
===Use Cases, Examples===&lt;br /&gt;
&lt;br /&gt;
* The module is appropriate when there is need for aligning surfaces, e.g. for comparison of surface features.&lt;br /&gt;
* Possible improvements are the generation of the registration transform in output (TO DO).&lt;br /&gt;
&lt;br /&gt;
===Tutorials===&lt;br /&gt;
&lt;br /&gt;
NA&lt;br /&gt;
&lt;br /&gt;
===Quick Tour of Features and Use===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
* '''Surface ICP Registration Parameters:'''&lt;br /&gt;
** ''Landmark transform mode'': choose between RigidBody, Similarity or Affine transforms for registration of the surfaces. &lt;br /&gt;
** ''Mean distance mode'': choose between square root of the average of the sum of squares of the closest point distances (RMS) or mean of the sum of absolute values of the closest point distances (Absolute)&lt;br /&gt;
** ''Maximum number of iterations'': number of iterations beyond which the ICP algorithm won't proceed even if the maximum mean distance is above threshold. &lt;br /&gt;
** ''Maximum number of landmarks'': maximum number of surface landmarks used to minimize distance between surfaces&lt;br /&gt;
** ''Start by matching centroids'': initialize the transform by translating the input surface so that its centroid coincides the centroid of the target surface. &lt;br /&gt;
** ''Check mean distance'': force checking distance between every two iterations (slower but more accurate)&lt;br /&gt;
** ''Maximum mean distance'': distance threshold, the algorithm stops when the mean distance between the surfaces is below this threshold &lt;br /&gt;
* '''IO:'''&lt;br /&gt;
** ''Initial Transform'': the (optional) initial transform that is applied to the input surface prior to registration&lt;br /&gt;
** ''Input Surface'': the input (moving) surface&lt;br /&gt;
** ''Target Surface'': the target (not moving) surface&lt;br /&gt;
** ''Output Surface'': the output surface, i.e. the input surface registered on the target surface. Optional.&lt;br /&gt;
** ''Output Transform'': the computed ICP transform MRML node. Optional (if both Output Surface and Output Transform are specified, the output surface is placed as a child of the output transform).&lt;br /&gt;
|[[Image:screenshotBlankNotOptional.png|thumb|280px|User Interface]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Development ==&lt;br /&gt;
&lt;br /&gt;
===Notes from the Developer(s)===&lt;br /&gt;
&lt;br /&gt;
The module internally uses [http://www.vtk.org/doc/nightly/html/classvtkIterativeClosestPointTransform.html vtkIterativeClosestPointTransform].&lt;br /&gt;
&lt;br /&gt;
===Dependencies===&lt;br /&gt;
&lt;br /&gt;
Python&lt;br /&gt;
&lt;br /&gt;
===Tests===&lt;br /&gt;
&lt;br /&gt;
NA&lt;br /&gt;
&lt;br /&gt;
===Known bugs===&lt;br /&gt;
&lt;br /&gt;
Follow this [http://na-mic.org/Mantis/main_page.php link] to the Slicer3 bug tracker. &lt;br /&gt;
&lt;br /&gt;
===Usability issues===&lt;br /&gt;
&lt;br /&gt;
Follow this [http://na-mic.org/Mantis/main_page.php link] to the Slicer3 bug tracker. Please select the '''usability issue category''' when browsing or contributing.&lt;br /&gt;
&lt;br /&gt;
===Source code &amp;amp; documentation===&lt;br /&gt;
&lt;br /&gt;
Links to the module's source code:&lt;br /&gt;
&lt;br /&gt;
Source code:&lt;br /&gt;
*[http://viewvc.slicer.org/viewcvs.cgi/trunk/Modules/Python/SurfaceICPRegistration.py SurfaceICPRegistration.py] &lt;br /&gt;
 &lt;br /&gt;
== More Information == &lt;br /&gt;
&lt;br /&gt;
===Acknowledgment===&lt;br /&gt;
&lt;br /&gt;
NA&lt;br /&gt;
&lt;br /&gt;
===References===&lt;br /&gt;
&lt;br /&gt;
NA&lt;/div&gt;</summary>
		<author><name>Lantiga</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/3.6&amp;diff=14142</id>
		<title>Documentation/3.6</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/3.6&amp;diff=14142"/>
		<updated>2010-04-25T13:23:44Z</updated>

		<summary type="html">&lt;p&gt;Lantiga: /* Registration */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is work in progress&lt;br /&gt;
&lt;br /&gt;
=Main GUI=&lt;br /&gt;
&lt;br /&gt;
*[[Modules:MainApplicationGUI-Documentation-3.6| Main Application GUI]] '''(in progress)''' (Wendy Plesniak) &lt;br /&gt;
*[[Modules:EventBindings-3.6| &amp;quot;Hot-keys&amp;quot; and Keyboard Shortcuts]]  '''(in progress)''' (Wendy Plesniak) &lt;br /&gt;
*[[Modules:Loading-Data-3.6| Loading Data]] (scenes, DICOM, volumes, models, fiducials, transforms, etc.)  '''(in progress)''' (Wendy Plesniak)&lt;br /&gt;
*[[Modules:Saving-Documentation-3.6| Saving Data]] (scenes, volumes, models, fiducials, transforms, etc.) '''(in progress)''' (Wendy Plesniak)&lt;br /&gt;
*[[Modules:SceneSnapshots-3.6| Creating and Restoring Scene Snapshots]]  '''(in progress)''' (Wendy Plesniak)&lt;br /&gt;
*[[Modules:ExtensionsManagementWizard-Documentation-3.6| Extensions Management Wizard]]  (Wendy Plesniak)&lt;br /&gt;
&lt;br /&gt;
=Modules=&lt;br /&gt;
*Please copy the template linked below, paste it into your page and customize it with your module's information.&lt;br /&gt;
[[Slicer3:Module_Documentation-3.6_Template|Slicer3:Module_Documentation-3.6_Template]] &lt;br /&gt;
*See Requirements for Modules for info to be put into the Help and Acknowledgment Tabs&lt;br /&gt;
*To put your lab's logo into a module, see [[Slicer3:Execution_Model_Documentation#Adding_Module_Logos_to_Slicer3|here]]&lt;br /&gt;
&lt;br /&gt;
Please adhere to the naming scheme for the module documentation:&lt;br /&gt;
*[ [Modules:MyModuleNameNoSpaces-Documentation-3.6|My Module Name With Spaces] ] (First Last Name)&lt;br /&gt;
&lt;br /&gt;
=Requirements for Modules=&lt;br /&gt;
{| border=&amp;quot;00&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot;| &lt;br /&gt;
* The module is '''feature complete''', it does everything that it advertises it can do&lt;br /&gt;
* The module has a '''test'''. See [http://wiki.na-mic.org/Wiki/index.php/Slicer3:Execution_Model_Testing '''here'''] for more information.&lt;br /&gt;
* Module has '''documentation''' on the [[Documentation-3.5#Modules|Slicer wiki]]. Please use the template provided [[Documentation-3.6#Modules|'''here''']] to structure your page. Please keep in mind that our users are not computer scientists with a background in computer vision.&lt;br /&gt;
*Please add a pointer to the documentation on the Slicer wiki to the the '''Help''' tab of the module. See the '''Editor module''' in Slicer for an example.&lt;br /&gt;
* The contributor (and their manager/advisor), the lab (with labs/institution logo) and the funding source (with grant number, logo optional) are listed in the '''Acknowledegment''' tab of the module. Please see the '''Models module''' for an example. The people listed in the acknowledgement will be the primary people for support and maintenance relative of the module. [[Slicer3:Execution_Model_Documentation#Adding_Module_Logos_to_Slicer3|See here for more information.]]&lt;br /&gt;
** '''Style Guide:''' All acknowledgment icons should be 100x100 pixels, preferably in png format.&lt;br /&gt;
** '''Accessing logos:''' Icons for BIRN, NAC, NA-MIC and IGT are included in Slicer3/Base/GUI//vtkSlicerBaseAcknowledgementLogoIcons.cxx/h and resources for them are in Slicer3/Base/GUI/Resources/vtkSlicerBaseAcknowledgementLogos_ImageData.h. The API for vtkSlicerModuleGUI provides access to these icons. &lt;br /&gt;
** '''Adding logos:''' Please add additional image resources and logo icons to these files as required in order to promote shared use (and to prevent duplication in the code.)&lt;br /&gt;
* Many modules are better suited to be [[Documentation-3.4#Extensions_for_Downloading|downloadable extensions]].  The same module creation guidelines apply, but the actual implementation is done outside of the slicer source code repository.&lt;br /&gt;
* Follow [[Documentation-3.5-Rons-Rules|'''Ron's rules for tools''']]&lt;br /&gt;
| style=&amp;quot;background: #e5e5e5&amp;quot; align=&amp;quot;center&amp;quot;| Examples for the Help and &lt;br /&gt;
Acknowledgment Panels&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ebeced&amp;quot;|[[Image:SlicerHelpExample.png|center|200px]][[Image:SlicerAcknowledgementExample.png|center|200px]] &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=List of Modules added or significantly revised since the 3.4 release=&lt;br /&gt;
* Interactive Editor&lt;br /&gt;
* Volume Rendering&lt;br /&gt;
* Colors (Nicole Aucoin)&lt;br /&gt;
* MRI Bias Field Correction (Sylvain Jaume)&lt;br /&gt;
* 4D Image (Viewer) (Junichi Tokuda)&lt;br /&gt;
* 4D Analysis (Time-intensity curve plotting and analysis) (Junichi Tokuda)&lt;br /&gt;
* Fast Marching segmentation (Andriy Fedorov)&lt;br /&gt;
* Mesh Contour Segmentation (Peter Karasev)&lt;br /&gt;
* Subvolume extraction with ROI widget (Andriy Fedorov)&lt;br /&gt;
* Registration Metrics (HD and DSC) (Haytham Elhawary)&lt;br /&gt;
* Measurements (rulers and angles) (Nicole Aucoin)&lt;br /&gt;
* Affine registration (Casey Goodlett)&lt;br /&gt;
* Collect Patient Fiducials (Andrew Wiles)&lt;br /&gt;
* IGT Tool Selector (Andrew Wiles)&lt;br /&gt;
* Fiducials (Nicole Aucoin)&lt;br /&gt;
&lt;br /&gt;
=List of Modules=&lt;br /&gt;
==Core==&lt;br /&gt;
*[[Slicer3:Multiple_Cameras| Camera Module]] (Sebastian Barre)&lt;br /&gt;
*[[Modules:Welcome-Documentation-3.4| Welcome Module]] (Wendy Plesniak, Steve Pieper, Sonia Pujol, Ron Kikinis)&lt;br /&gt;
*[[Modules:Volumes-Documentation-3.6| Volumes Module]] (Alex Yarmarkovich, Steve Pieper) &lt;br /&gt;
**[[Modules:Volumes:Diffusion Editor-Documentation-3.6| Diffusion Editor]] (Kerstin Kessel)&lt;br /&gt;
*[[Modules:Models-Documentation-3.6| Models Module]] (Alex Yarmarkovich) &lt;br /&gt;
*[[Modules:Fiducials-Documentation-3.6| Fiducials Module]]  (Nicole Aucoin) &lt;br /&gt;
*[[Modules:Measurements-Documentation-3.6 | Measurements (rulers and angles) ]] (Nicole Aucoin)&lt;br /&gt;
*[[Modules:Data-Documentation-3.6| Data Module]] (Alex Yarmarkovich) &lt;br /&gt;
*[[Modules:Slices-Documentation-3.6|Slices Module]] (Jim Miller) &lt;br /&gt;
*[[Modules:Colors-Documentation-3.6| Color Module]] (Nicole Aucoin) &lt;br /&gt;
*[[Modules:Editor-Documentation-3.4| Interactive Editor]] (Steve Pieper)   &amp;lt;span style=&amp;quot;background:hotpink; color:white&amp;quot;&amp;gt;Not yet 3.6&amp;lt;/span&amp;gt;&amp;lt;font background=hotpink color=white&amp;gt;Not yet 3.6&amp;lt;/font&amp;gt;&lt;br /&gt;
*[[Modules:ROIModule-Documentation-3.6|ROI Module]] (Alex Yarmarkovich) &lt;br /&gt;
*[[Modules:VolumeRendering-Documentation-3.6| Volume Rendering Module]] (Yanling Liu, Alex Yarmarkovich)&lt;br /&gt;
&lt;br /&gt;
==Specialized Modules==&lt;br /&gt;
&lt;br /&gt;
Please adhere to the naming scheme for the module documentation:&lt;br /&gt;
*[[Modules:MyModuleNameNoSpaces-Documentation-3.6|My Module Name With Spaces] ] (First Last Name)&lt;br /&gt;
&lt;br /&gt;
===Wizards===&lt;br /&gt;
*[[Modules:ChangeTracker-Documentation-3.6|ChangeTracker]] (Andriy Fedorov)&lt;br /&gt;
*[[Modules:IA_FEMesh-Documentation-3.6|IA FE Meshing Module]] (Vincent Magnotta)  &amp;lt;span style=&amp;quot;background:hotpink; color:white&amp;quot;&amp;gt;Not yet 3.6&amp;lt;/span&amp;gt;&amp;lt;font background=hotpink color=white&amp;gt;Not yet 3.6&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Informatics Modules===&lt;br /&gt;
*[[Modules:FetchMI-Documentation-3.6| Fetch Medical Informatics Module]] (Wendy Plesniak, Dan Marcus)  &lt;br /&gt;
*[[Modules:QDECModule-Documentation-3.6| QDEC Module]] (Nicole Aucoin) &lt;br /&gt;
*[[Modules:QueryAtlas-Documentation-3.6|Query Atlas Module]] (Wendy Plesniak)&lt;br /&gt;
&lt;br /&gt;
===Registration===&lt;br /&gt;
*[[Slicer3:Registration|'''Overview of all Registration Modules''' ]]: go here for more detailed help on selecting your registration module.&lt;br /&gt;
*Fast&lt;br /&gt;
**[[Modules:Transforms-Documentation-3.6|Transforms Module]]:  manual &amp;amp; interactive rigid registration , (Alex Yarmarkovich)&lt;br /&gt;
**[[Modules:AffineRegistration-Documentation-3.4|Fast Affine Module]]:  automated fast affine registration , (Daniel Blezek)   &amp;lt;span style=&amp;quot;background:hotpink; color:white&amp;quot;&amp;gt;Not yet 3.6&amp;lt;/span&amp;gt;&amp;lt;font background=hotpink color=white&amp;gt;Not yet 3.6&amp;lt;/font&amp;gt;'&lt;br /&gt;
**[[Modules:DeformableB-SplineRegistration-Documentation-3.6|Fast Non-rigid BSpline Module]]: fast non-rigid registration , (Bill Lorensen)  &lt;br /&gt;
*Robust&lt;br /&gt;
**[[Modules:RegisterImages-Documentation-3.6|Robust Rigid-Affine-Nonrigid Module]]:  registration with robust initialization, variable DOF and masking options, (Casey Goodlett)&lt;br /&gt;
**[[Modules:RegisterImagesMultiRes-Documentation-3.6|Robust Multiresolution Affine Module]]: affine registration in multi-resolution scheme, robust to large differences in initial position or image content ,  (Casey Goodlett)&lt;br /&gt;
*Brain Only&lt;br /&gt;
**[[Modules:ACPCTransform-Documentation-3.6|ACPC Transform Module]]: align a single brain along AC-PC line ,  (Nicole Aucoin)&lt;br /&gt;
*Non-Raster-Image Data&lt;br /&gt;
**[[Modules:TransformFromFiducials-Documentation-3.6|Fiducial Registration Module]]: align two sets of fiducials (translation, rigid or similarity)  (Casey Goodlett)&lt;br /&gt;
**[[Modules:PythonSurfaceICPRegistration-Documentation-3.6|Surface Registration Module]]: automated surface-to-surface (model) registration (Luca Antiga, Daniel Blezek)  &amp;lt;span style=&amp;quot;background:hotpink; color:white&amp;quot;&amp;gt;Not yet 3.6 (in progress)&amp;lt;/span&amp;gt;&amp;lt;font background=hotpink color=white&amp;gt;Not yet 3.6 (in progress)&amp;lt;/font&amp;gt;&lt;br /&gt;
*Experimental and auxiliary&lt;br /&gt;
**[[Modules:RegistrationMetrics-Documentation-3.5 | Registration Metrics (HD and DSC) ]] (Haytham Elhawary)  &amp;lt;span style=&amp;quot;background:hotpink; color:white&amp;quot;&amp;gt;Not yet 3.6&amp;lt;/span&amp;gt;&amp;lt;font background=hotpink color=white&amp;gt;Not yet 3.6&amp;lt;/font&amp;gt;&lt;br /&gt;
**[[Modules:LinearRegistration-Documentation-3.4|Linear Registration Module]]: (fast) rigid registration m (Daniel Blezek)  &amp;lt;span style=&amp;quot;background:hotpink; color:white&amp;quot;&amp;gt;Not yet 3.6&amp;lt;/span&amp;gt;&amp;lt;font background=hotpink color=white&amp;gt;Not yet 3.6&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Segmentation===&lt;br /&gt;
*[[Modules:SegmentationOverview3.6|Overview]]&lt;br /&gt;
**[[Modules:EMSegmentTemplateBuilder3.6|EM Segment Template Builder 3.6]] (Kilian Pohl)  &lt;br /&gt;
**[[Modules:EMSegment-Command-Line3.6|EM Segment Command-Line]] (Kilian Pohl)  &lt;br /&gt;
**[[Modules:EMSegment-Simple3.6|EM Segment Simple]] (Kilian Pohl) &lt;br /&gt;
**[[Modules:FastMarchingSegmentation-Documentation-3.6|Fast Marching segmentation]] (Andriy Fedorov)&lt;br /&gt;
**[[Modules:OtsuThresholdSegmentation-Documentation-3.6|Otsu Threshold Segmentation]] (Bill Lorensen)&lt;br /&gt;
**[[Modules:Simple Region Growing-Documentation-3.4|Simple Region Growing]] (Jim Miller, Harini Veeraraghavan)  &amp;lt;span style=&amp;quot;background:hotpink; color:white&amp;quot;&amp;gt;Not yet 3.6&amp;lt;/span&amp;gt;&amp;lt;font background=hotpink color=white&amp;gt;Not yet 3.6&amp;lt;/font&amp;gt;&lt;br /&gt;
**[[Modules:RobustStatisticsSeg-Documentation-3.6|RobustStatisticsSeg]] Yi Gao (yigao@gatech.edu).&lt;br /&gt;
&lt;br /&gt;
===Statistics===&lt;br /&gt;
*[[Modules:LabelStatistics-Documentation-3.6|Label Statistics]] (Steve Pieper)&lt;br /&gt;
&lt;br /&gt;
===Diffusion MRI===&lt;br /&gt;
*Diffusion MRI&lt;br /&gt;
** DWI filtering&lt;br /&gt;
***[[Modules:JointRicianLMMSEImageFilter-Documentation-3.6|Joint Rician LMMSE Image Filter]] (Antonio Tristán Vega, Santiago Aja-Fernandez)   &lt;br /&gt;
***[[Modules:RicianLMMSEImageFilter-Documentation-3.6|Rician LMMSE Image Filter]] (Antonio Tristán Vega, Santiago Aja-Fernandez, Marc Niethammer)  &lt;br /&gt;
***[[Modules:UnbiasedNonLocalMeans-Documentation-3.6|Unbiased Non Local Means filter for DWI]]  (Antonio Tristán Vega, Santiago Aja-Fernandez)  &lt;br /&gt;
** Diffusion tensor utilities&lt;br /&gt;
***[[Modules:DiffusionTensorEstimation-Documentation-3.6|Diffusion Tensor Estimation]] (Raul San Jose Estepar)   &lt;br /&gt;
***[[Modules:DiffusionTensorScalarMeasurements-Documentation-3.6 | Diffusion Tensor Scalar Measurements]] (Raul San Jose Estepar)  &lt;br /&gt;
** Resampling&lt;br /&gt;
***[[Modules:ResampleDTIVolume-Documentation-3.6|Resample DTI Volume]] (Francois Budin)&lt;br /&gt;
** Tractography&lt;br /&gt;
***[[Modules:ROISeeding-Documentation-3.6 | Label Seeding]] (Raul San Jose Estepar)   &lt;br /&gt;
***[[Modules:FiducialSeeding-Documentation-3.6|Fiducial Seeding]] (Alex Yarmakovich, Steve Pieper) &lt;br /&gt;
***[[Modules:DTIDisplay-Documentation-3.6|FiberBundles]] (Alex Yarmakovich) &lt;br /&gt;
***[[Modules:StochasticTractography-Documentation-3.6|Python Stochastic Tractography]] (Julien de Siebenthal)   &lt;br /&gt;
***[[Modules:ROISelect-Documentation-3.6|ROI Select]] (Lauren O'Donnell)&lt;br /&gt;
&lt;br /&gt;
===IGT===&lt;br /&gt;
*[[Modules:OpenIGTLinkIF-Documentation-3.6| OpenIGTLinkIF Module]] (Junichi Tokuda)&lt;br /&gt;
*[[Modules:NeuroNav-Documentation-3.6| NeuroNav Module]] (Haiying Liu)&lt;br /&gt;
*[[Modules:ProstateNav-Documentation-3.6| ProstateNav Module]] (Junichi Tokuda, Andras Lasso)&lt;br /&gt;
*[[Modules:CollectFiducials-Documentation-3.6 | Collect Patient Fiducials ]] (Andrew Wiles)&lt;br /&gt;
*[[Modules:IGTToolSelector-Documentation-3.6 | IGT Tool Selector ]] (Andrew Wiles)&lt;br /&gt;
&lt;br /&gt;
===Time Series===&lt;br /&gt;
* [[Modules:FourDImage-Documentation-3.6|4D Image (Viewer)]] (Junichi Tokuda)&lt;br /&gt;
&lt;br /&gt;
===Filtering===&lt;br /&gt;
*[[Modules:MRIBiasFieldCorrection-Documentation-3.5|MRI Bias Field Correction]] (Sylvain Jaume)&lt;br /&gt;
*[[Modules:CheckerboardFilter-Documentation-3.6|Checkerboard Filter]] (Bill Lorensen, Jim Miller)&lt;br /&gt;
*[[Modules:HistogramMatching-Documentation-3.4|Histogram Matching]] (Bill Lorensen, Xiaodong Tao)&lt;br /&gt;
*[[Modules:ImageLabelCombine-3.6|Image Label Combine]] (Alex Yarmarkovich)  &lt;br /&gt;
*[[Modules:ResampleVolume-Documentation-3.6|Resample Volume]] (Bill Lorensen)&lt;br /&gt;
*[[Modules:ResampleScalarVectorDWIVolume-Documentation-3.6|Resample Scalar/Vector/DWI Volume]] (Francois Budin)&lt;br /&gt;
*[[Modules:ThresholdImage-Documentation-3.6|Threshold Image]] (Nicole Aucoin)&lt;br /&gt;
*[[Modules:OtsuThreshold-Documentation-3.6|Otsu Threshold]] (Bill Lorensen) &lt;br /&gt;
*Arithmetic&lt;br /&gt;
**[[Modules:AddImages-Documentation-3.6|Add Images]] (Harini Veeraraghavan) &lt;br /&gt;
**[[Modules:SubtractImages-Documentation-3.6|Subtract Images]] (Harini Veeraraghavan)  &lt;br /&gt;
** [[Modules:CastImage-Documentation-3.6|Cast Image]] (Nicole Aucoin) &lt;br /&gt;
** [[Modules:MaskImage-Documentation-3.6|Mask Image]] (Nicole Aucoin, Harini Veeraraghavan) &lt;br /&gt;
*Denoising&lt;br /&gt;
**[[Modules:GradientAnisotropicFilter-Documentation-3.4| Gradient Anisotropic Filter]]  (Bill Lorensen checked this in)  &amp;lt;span style=&amp;quot;background:hotpink; color:white&amp;quot;&amp;gt;Not yet 3.6&amp;lt;/span&amp;gt;&amp;lt;font background=hotpink color=white&amp;gt;Not yet 3.6&amp;lt;/font&amp;gt;&lt;br /&gt;
**[[Modules:CurvatureAnisotropicDiffusion-Documentation-3.4|Curvature Anisotropic Diffusion]] (Bill Lorensen)  &amp;lt;span style=&amp;quot;background:hotpink; color:white&amp;quot;&amp;gt;Not yet 3.6&amp;lt;/span&amp;gt;&amp;lt;font background=hotpink color=white&amp;gt;Not yet 3.6&amp;lt;/font&amp;gt;&lt;br /&gt;
**[[Modules:GaussianBlur-Documentation-3.4|Gaussian Blur]] (Julien Jomier, Stephen Aylward)  &amp;lt;span style=&amp;quot;background:hotpink; color:white&amp;quot;&amp;gt;Not yet 3.6&amp;lt;/span&amp;gt;&amp;lt;font background=hotpink color=white&amp;gt;Not yet 3.6&amp;lt;/font&amp;gt;&lt;br /&gt;
**[[Modules:MedianFilter-Documentation-3.4|Median Filter]] (Xiaodong Tao)  &amp;lt;span style=&amp;quot;background:hotpink; color:white&amp;quot;&amp;gt;Not yet 3.6&amp;lt;/span&amp;gt;&amp;lt;font background=hotpink color=white&amp;gt;Not yet 3.6&amp;lt;/font&amp;gt;&lt;br /&gt;
*Morphology&lt;br /&gt;
**[[Modules:VotingBinaryHoleFilling-Documentation-3.4|Voting Binary Hole Filling]] (Jim Miller)  &amp;lt;span style=&amp;quot;background:hotpink; color:white&amp;quot;&amp;gt;Not yet 3.6&amp;lt;/span&amp;gt;&amp;lt;font background=hotpink color=white&amp;gt;Not yet 3.6&amp;lt;/font&amp;gt;&lt;br /&gt;
**[[Modules:GrayscaleFillHole-Documentation-3.6|Grayscale Fill Hole]] (Bill Lorensen)&lt;br /&gt;
**[[Modules:GrayscaleGrindPeak-Documentation-3.6|Grayscale Grind Peak]] (Bill Lorensen)&lt;br /&gt;
&lt;br /&gt;
===Surface Models===&lt;br /&gt;
*[[Modules:ModelMaker-Documentation-3.6| ModelMaker]] (Nicole Aucoin) &lt;br /&gt;
*[[Modules:GrayscaleModelMaker-Documentation-3.6|Grayscale Model Maker]] (Bill Lorensen)  &amp;lt;span style=&amp;quot;background:hotpink; color:white&amp;quot;&amp;gt;Not yet 3.6&amp;lt;/span&amp;gt;&amp;lt;font background=hotpink color=white&amp;gt;Not yet 3.6&amp;lt;/font&amp;gt;&lt;br /&gt;
*[[Modules:MeshContourSegmentation-Documentation-3.6|Mesh Contour Segmentation]] (Peter Karasev)  &lt;br /&gt;
*[[Modules:PythonSurfaceConnectivity-Documentation-3.4| Python Surface Connectivity]] (Luca Antiga, Daniel Blezek)  &amp;lt;span style=&amp;quot;background:hotpink; color:white&amp;quot;&amp;gt;Not yet 3.6&amp;lt;/span&amp;gt;&amp;lt;font background=hotpink color=white&amp;gt;Not yet 3.6&amp;lt;/font&amp;gt;&lt;br /&gt;
*[[Modules:PythonSurfaceICPRegistration-Documentation-3.4| Python Surface ICP Registration]] (Luca Antiga, Daniel Blezek)  &amp;lt;span style=&amp;quot;background:hotpink; color:white&amp;quot;&amp;gt;Not yet 3.6&amp;lt;/span&amp;gt;&amp;lt;font background=hotpink color=white&amp;gt;Not yet 3.6&amp;lt;/font&amp;gt;&lt;br /&gt;
*[[Modules:PythonSurfaceToolbox-Documentation-3.4| Python Surface Toolbox]] (Luca Antiga, Daniel Blezek)    &amp;lt;span style=&amp;quot;background:hotpink; color:white&amp;quot;&amp;gt;Not yet 3.6&amp;lt;/span&amp;gt;&amp;lt;font background=hotpink color=white&amp;gt;Not yet 3.6&amp;lt;/font&amp;gt;&lt;br /&gt;
*[[Modules:ClipModel-Documentation-3.6| Clip Model]] (Alex Yarmarkovich)  &lt;br /&gt;
*[[Modules:Model_Into_Label_Volume_Documentation-3.6| Model into Label Volume]] (Nicole Aucoin)&lt;br /&gt;
&lt;br /&gt;
===Batch processing===&lt;br /&gt;
*[[Modules:EMSegmentBatch-Documentation-3.6|EM Segmenter batch]] (Julien Jomier, Brad Davis)&lt;br /&gt;
*[[Modules:GaussianBlurBatch-Documentation-3.6|Gaussian Blur batch]] (Julien Jomier, Stephen Aylward)&lt;br /&gt;
*[[Modules:RegisterImagesBatch-Documentation-3.6|Register Images batch]] (Julien Finet, Stephen Aylward)&lt;br /&gt;
*[[Modules:ResampleVolumeBatch-Documentation-3.6|Resample Volume batch]] (Julien Finet)&lt;br /&gt;
&lt;br /&gt;
===Converters===&lt;br /&gt;
*[[Modules:CreateaDicomSeries-Documentation-3.4|Create a Dicom Series]] (Xiaodong Tao)  &amp;lt;span style=&amp;quot;background:hotpink; color:white&amp;quot;&amp;gt;Not yet 3.6&amp;lt;/span&amp;gt;&amp;lt;font background=hotpink color=white&amp;gt;Not yet 3.6&amp;lt;/font&amp;gt;&lt;br /&gt;
*[[Modules:DicomToNRRD-3.4|Dicom to NRRD]] (Xiaodong Tao)  &amp;lt;span style=&amp;quot;background:hotpink; color:white&amp;quot;&amp;gt;Not yet 3.6&amp;lt;/span&amp;gt;&amp;lt;font background=hotpink color=white&amp;gt;Not yet 3.6&amp;lt;/font&amp;gt;&lt;br /&gt;
*[[Modules:OrientImages-Documentation-3.4|Orient Images]] (Xiaodong Tao)  &amp;lt;span style=&amp;quot;background:hotpink; color:white&amp;quot;&amp;gt;Not yet 3.6&amp;lt;/span&amp;gt;&amp;lt;font background=hotpink color=white&amp;gt;Not yet 3.6&amp;lt;/font&amp;gt;&lt;br /&gt;
*[[Modules:PythonExplodeVolumeTransform-Documentation-3.4| Python Explode Volume Transform]] (Luca Antiga, Daniel Blezek)  &amp;lt;span style=&amp;quot;background:hotpink; color:white&amp;quot;&amp;gt;Not yet 3.6&amp;lt;/span&amp;gt;&amp;lt;font background=hotpink color=white&amp;gt;Not yet 3.6&amp;lt;/font&amp;gt;&lt;br /&gt;
*[[Modules:CropVolume-Documentation-3.6|Crop Volume]] (previously ExtractSubvolumeROI) (Andriy Fedorov)&lt;br /&gt;
&lt;br /&gt;
=Slicer Extensions=&lt;br /&gt;
&lt;br /&gt;
==Extensions for Downloading==&lt;br /&gt;
===Introduction===&lt;br /&gt;
[[Image:SlicerOnNITRC2009.png|thumb|right|Slicer on NITRC]]&lt;br /&gt;
* Slicer Extensions are a mechanism for third parties to provide modules which extend the functionality of 3d Slicer.&lt;br /&gt;
* Some of the extensions do not use the Slicer license. Please review carefully.&lt;br /&gt;
* For a subset of extensions, you can use the extension wizard in Slicer to find their webpages and to install/uninstall individual extensions. In case of problems with those modules, please talk directly to the developers of the extensions.&lt;br /&gt;
* The version that is available through the extension manager is chosen by the developer of that extension   &lt;br /&gt;
&lt;br /&gt;
We are using NITRC as the primary repository for contributed extensions. As a general rule, we do not test the extensions ourselves. Use them at your own risk.&lt;br /&gt;
Click [http://www.nitrc.org/search/?type_of_search=soft&amp;amp;words=slicer3&amp;amp;Search.x=0&amp;amp;Search.y=0&amp;amp;Search=Search  here] to see a listing of Slicer 3 extensions on NITRC.&lt;br /&gt;
&lt;br /&gt;
[[Image:Slicer-3.4.1-extension-manager-2009-10-02.png|thumb|right|Extension manager dialog box]]&lt;br /&gt;
To add extension modules to an installed binary of slicer:&lt;br /&gt;
* Use the View-&amp;gt;Extension Manager menu option&lt;br /&gt;
* The dialog will be initialized with the URL to the extensions that have been compiled to match your binary of slicer.&lt;br /&gt;
** '''Note''' installing extensions from a different repository URL is likely to be unstable due to platform and software version differences.&lt;br /&gt;
** You can select a local install directory for your downloaded extensions (be sure to choose a directory with enough free space).&lt;br /&gt;
* Select the extensions you wish to install and click to download them.  Installed extensions will be available when you restart slicer.&lt;br /&gt;
* To turn modules on or off, you can use the Module Settings page of the View-&amp;gt;Application Settings dialog.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Extensions are compiled as part of the nightly build. In order to have your extension compiled nightly and made available to end users, please contact the Slicer team. For explanations for developers see [[Slicer3:Extensions| here]]&lt;br /&gt;
&lt;br /&gt;
'''Installation'''&lt;br /&gt;
*Click on the cogwheel icon to start the extensions wizard (highlighted in red)&lt;br /&gt;
[[image:Slicertoolbar.png|Extensions Wizard]]&lt;br /&gt;
&lt;br /&gt;
===Listing of plug-ins===&lt;br /&gt;
&lt;br /&gt;
'''Available Extensions'''&lt;br /&gt;
&lt;br /&gt;
* [[Modules:ABC-Documentation-3.5|ABC]] Marcel Prastawa (prastawa@sci.utah.edu) (a.k.a. Atlas Based Classification) '''Not yet 3.6'''. Belongs to segmentation&lt;br /&gt;
&lt;br /&gt;
* [[Modules:ARCTIC-Documentation-3.6|ARCTIC]] Cedric Mathieu and Clement Vachet (cvachet@email.unc.edu) (a.k.a Automatic Regional Cortical ThICkness) '''Not yet 3.6'''. Belongs to wizards&lt;br /&gt;
&lt;br /&gt;
* [[Modules:BRAINSDemonWarp|BRAINSDemonWarp]] Hans Johnson (hans-johnson@uiowa.edu) '''Not yet 3.6'''. Belongs to registration, robust&lt;br /&gt;
&lt;br /&gt;
* [[Modules:BRAINSFit|BRAINSFit]] Eun Young Kim (eunyoung-kim@uiowa.edu) '''Not yet 3.6'''. Belongs to registration robust&lt;br /&gt;
&lt;br /&gt;
* [[Modules:BRAINSMush|BRAINSMush]] Hans Johnson (hans-johnson@uiowa.edu) '''Not yet 3.6'''. Belongs to registration robust.&lt;br /&gt;
&lt;br /&gt;
* [[Modules:CMTK|CMTK]] Computational Morphometry Toolkit Torsten Rohlfing (torsten@synapse.sri.com) '''Not yet 3.6'''. Belongs to registration robust.&lt;br /&gt;
&lt;br /&gt;
* [[Modules:EMDTIClustering-Documentation-3.6|EMFiberClusteringModule]] Mahnaz Maddah (maddah@ge.com) (a.k.a. Quantitative Diffusion Tools) '''Not yet 3.6'''. Belongs to tractography&lt;br /&gt;
&lt;br /&gt;
* [[Modules:FourDAnalysis-Documentation-3.6|4D Analysis (Time-series plotting and analysis including kinetic analysis of DCE MRI)]] Junichi Tokuda (tokuda@bwh.harvard.edu)&lt;br /&gt;
&lt;br /&gt;
* [[Modules:FuzzySegmentationModule|FuzzySegmentationModule]] Xiaodong Tao (taox@research.ge.com) '''Not yet 3.6'''. Belongs to segmentation.&lt;br /&gt;
&lt;br /&gt;
* [[Modules:HammerRegistration|HammerRegistration]] GuorongWu, XiaodongTao, JimMiller, DinggangShen (dgshen@med.unc.edu) '''Not yet 3.6'''. Belongs to registration robust.&lt;br /&gt;
&lt;br /&gt;
* [[Modules:LabelDiameterEstimation-Documentation-3.5|LabelDiameterEstimation]] Andriy Fedorov (fedorov@bwh.harvard.edu) '''Not yet 3.6'''. Belongs to IGT.&lt;br /&gt;
&lt;br /&gt;
* [[Modules:LesionSegmentationApplications-Documentation-3.6|LesionSegmentationApplications]] Mark Scully (mscully@mrn.org) (a.k.a. 3DSlicerLupusLesionModule) '''Not yet 3.6'''. Belongs to wizards.&lt;br /&gt;
&lt;br /&gt;
* [[Modules:Plastimatch|Plastimatch]] Greg Sharp (gcsharp@partners.org) '''Not yet 3.6'''. Belongs to registration robust.&lt;br /&gt;
&lt;br /&gt;
* [[Modules:RicianNoiseFilter|RicianNoiseFilter]] Ross Whitaker (whitaker@cs.utah.edu) '''Not yet 3.6'''. Belongs to DWI&lt;br /&gt;
&lt;br /&gt;
* [[Modules:SkullStripperModule|SkullStripperModule]] Xiaodong Tao (taox@research.ge.com) '''Not yet 3.6'''. Belongs to wizards&lt;br /&gt;
&lt;br /&gt;
* [[Modules:SpineSegmentation-Documentation-3.6|SpineSegmentation]] Sylvain Jaume (sylvain@csail.mit.edu). Belongs to wizards&lt;br /&gt;
&lt;br /&gt;
* [[Image:Slicervmtk_logo.png|150px]] The Vascular Modeling Toolkit in 3D Slicer, Daniel Haehn (haehn@bwh.harvard.edu)&lt;br /&gt;
&lt;br /&gt;
:*[[Modules:VMTKSlicerModule|VmtkSlicerModule]] prerequisite install for all VMTK plug-ins&lt;br /&gt;
&lt;br /&gt;
:*[[Modules:VMTKCenterlines|VMTKCenterlines]] providing centerline computation of surface models&lt;br /&gt;
&lt;br /&gt;
:*[[Modules:VMTKEasyLevelSetSegmentation|VMTKEasyLevelSetSegmentation]] providing level-set segmentation of vessels, aneurysms and tubular structures using an easy interface&lt;br /&gt;
&lt;br /&gt;
:*[[Modules:VMTKLevelSetSegmentation|VMTKLevelSetSegmentation]] providing level-set segmentation of vessels, aneurysms and tubular structures using different algorithms for initialization and evolution&lt;br /&gt;
&lt;br /&gt;
:*[[Modules:VMTKVesselEnhancement|VMTKVesselEnhancement]] providing vessel enhancement filters to highlight vascular or tubular structures&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Example Extensions====&lt;br /&gt;
&lt;br /&gt;
* [[Modules:ExampleCommandLine|ExampleCommandLine]] Jim Miller '''Not yet 3.6'''&lt;br /&gt;
&lt;br /&gt;
* [[Modules:ExampleLoadableGuiLessModule|ExampleLoadableGuiLessModule]] Steve Pieper '''Not yet 3.6'''&lt;br /&gt;
&lt;br /&gt;
* [[Modules:ExampleLoadableModule|ExampleLoadableModule]] Steve Pieper '''Not yet 3.6'''&lt;br /&gt;
&lt;br /&gt;
* [[Modules:PythonSampleScriptedModule|PythonSampleScriptedModule]] Steve Pieper '''Not yet 3.6'''&lt;br /&gt;
&lt;br /&gt;
* [[Modules:TclSampleScriptedModule|TclSampleScriptedModule]] Steve Pieper '''Not yet 3.6'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Non-SPL Supported Compatibility Packages'''&lt;br /&gt;
&lt;br /&gt;
* [[Modules:BioImageSuite|BioImageSuite]] Xenios Papademtrios '''Not yet 3.6'''&lt;br /&gt;
&lt;br /&gt;
=QA=&lt;br /&gt;
[[Slicer-3.6-QA|Slicer 3.6 QA table]]&lt;/div&gt;</summary>
		<author><name>Lantiga</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Modules:PythonSurfaceICPRegistration-Documentation-3.4&amp;diff=10338</id>
		<title>Modules:PythonSurfaceICPRegistration-Documentation-3.4</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Modules:PythonSurfaceICPRegistration-Documentation-3.4&amp;diff=10338"/>
		<updated>2009-08-11T12:25:57Z</updated>

		<summary type="html">&lt;p&gt;Lantiga: /* Quick Tour of Features and Use */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Documentation-3.4|Return to Slicer 3.4 Documentation]]&lt;br /&gt;
&lt;br /&gt;
[[Announcements:Slicer3.4#Highlights|Gallery of New Features]]&lt;br /&gt;
__NOTOC__&lt;br /&gt;
===Module Name===&lt;br /&gt;
Python ICP Registration&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[Image:PythonICP1.png|thumb|320px|Figure 1: Full model of aneurysm and (unregistered) aneurysm dome]]&lt;br /&gt;
|[[Image:PythonICP2.png|thumb|320px|Figure 2: Aneurysm dome registered on the full model]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== General Information ==&lt;br /&gt;
===Module Type &amp;amp; Category===&lt;br /&gt;
&lt;br /&gt;
Type: CLI&lt;br /&gt;
&lt;br /&gt;
Category: Surface Models&lt;br /&gt;
&lt;br /&gt;
===Authors, Collaborators &amp;amp; Contact===&lt;br /&gt;
* Luca Antiga: Mario Negri Institute&lt;br /&gt;
* Daniel Blezek: Mayo Clinic&lt;br /&gt;
* Contact: Luca Antiga, antiga@marionegri.it&lt;br /&gt;
&lt;br /&gt;
===Module Description===&lt;br /&gt;
This Python module registers an input surface to a target surface using the Iterative Closest Point algorithm using rigid, similarity and affine transforms.&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
&lt;br /&gt;
===Examples, Use Cases &amp;amp; Tutorials===&lt;br /&gt;
&lt;br /&gt;
* The module is appropriate when there is need for aligning surfaces, e.g. for comparison of surface features.&lt;br /&gt;
* Possible improvements are the generation of the registration transform in output (TO DO).&lt;br /&gt;
&lt;br /&gt;
===Quick Tour of Features and Use===&lt;br /&gt;
List all the panels in your interface, their features, what they mean, and how to use them. For instance:&lt;br /&gt;
&lt;br /&gt;
* '''Surface ICP Registration Parameters:'''&lt;br /&gt;
** ''Landmark transform mode'': choose between RigidBody, Similarity or Affine transforms for registration of the surfaces. &lt;br /&gt;
** ''Mean distance mode'': choose between square root of the average of the sum of squares of the closest point distances (RMS) or mean of the sum of absolute values of the closest point distances (Absolute)&lt;br /&gt;
** ''Maximum number of iterations'': number of iterations beyond which the ICP algorithm won't proceed even if the maximum mean distance is above threshold. &lt;br /&gt;
** ''Maximum number of landmarks'': maximum number of surface landmarks used to minimize distance between surfaces&lt;br /&gt;
** ''Start by matching centroids'': initialize the transform by translating the input surface so that its centroid coincides the centroid of the target surface. &lt;br /&gt;
** ''Check mean distance'': force checking distance between every two iterations (slower but more accurate)&lt;br /&gt;
** ''Maximum mean distance'': distance threshold, the algorithm stops when the mean distance between the surfaces is below this threshold &lt;br /&gt;
* '''IO:'''&lt;br /&gt;
** ''Initial Transform'': the (optional) initial transform that is applied to the input surface prior to registration&lt;br /&gt;
** ''Input Surface'': the input (moving) surface&lt;br /&gt;
** ''Target Surface'': the target (not moving) surface&lt;br /&gt;
** ''Output Surface'': the output surface, i.e. the input surface registered on the target surface. Optional.&lt;br /&gt;
** ''Output Transform'': the computed ICP transform MRML node. Optional (if both Output Surface and Output Transform are specified, the output surface is placed as a child of the output transform).&lt;br /&gt;
&lt;br /&gt;
== Development ==&lt;br /&gt;
&lt;br /&gt;
===Dependencies===&lt;br /&gt;
&lt;br /&gt;
Python&lt;br /&gt;
&lt;br /&gt;
===Known bugs===&lt;br /&gt;
&lt;br /&gt;
Follow this [http://na-mic.org/Mantis/main_page.php link] to the Slicer3 bug tracker. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Usability issues===&lt;br /&gt;
&lt;br /&gt;
Follow this [http://na-mic.org/Mantis/main_page.php link] to the Slicer3 bug tracker. Please select the '''usability issue category''' when browsing or contributing.&lt;br /&gt;
&lt;br /&gt;
===Source code &amp;amp; documentation===&lt;br /&gt;
&lt;br /&gt;
Follow this [http://viewvc.slicer.org/viewcvs.cgi/trunk/Modules/Python/ link] to the module.&lt;br /&gt;
&lt;br /&gt;
[http://www.na-mic.org/Slicer/Documentation/Slicer3/html/ Links] to documentation generated by doxygen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== More Information == &lt;br /&gt;
&lt;br /&gt;
===Acknowledgment===&lt;br /&gt;
&lt;br /&gt;
===References===&lt;br /&gt;
&lt;br /&gt;
[http://www.vtk.org/doc/nightly/html/classvtkIterativeClosestPointTransform.html vtkIterativeClosestPointTransform]&lt;/div&gt;</summary>
		<author><name>Lantiga</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Modules:PythonSurfaceICPRegistration-Documentation-3.4&amp;diff=10337</id>
		<title>Modules:PythonSurfaceICPRegistration-Documentation-3.4</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Modules:PythonSurfaceICPRegistration-Documentation-3.4&amp;diff=10337"/>
		<updated>2009-08-11T12:25:38Z</updated>

		<summary type="html">&lt;p&gt;Lantiga: /* Quick Tour of Features and Use */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Documentation-3.4|Return to Slicer 3.4 Documentation]]&lt;br /&gt;
&lt;br /&gt;
[[Announcements:Slicer3.4#Highlights|Gallery of New Features]]&lt;br /&gt;
__NOTOC__&lt;br /&gt;
===Module Name===&lt;br /&gt;
Python ICP Registration&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[Image:PythonICP1.png|thumb|320px|Figure 1: Full model of aneurysm and (unregistered) aneurysm dome]]&lt;br /&gt;
|[[Image:PythonICP2.png|thumb|320px|Figure 2: Aneurysm dome registered on the full model]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== General Information ==&lt;br /&gt;
===Module Type &amp;amp; Category===&lt;br /&gt;
&lt;br /&gt;
Type: CLI&lt;br /&gt;
&lt;br /&gt;
Category: Surface Models&lt;br /&gt;
&lt;br /&gt;
===Authors, Collaborators &amp;amp; Contact===&lt;br /&gt;
* Luca Antiga: Mario Negri Institute&lt;br /&gt;
* Daniel Blezek: Mayo Clinic&lt;br /&gt;
* Contact: Luca Antiga, antiga@marionegri.it&lt;br /&gt;
&lt;br /&gt;
===Module Description===&lt;br /&gt;
This Python module registers an input surface to a target surface using the Iterative Closest Point algorithm using rigid, similarity and affine transforms.&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
&lt;br /&gt;
===Examples, Use Cases &amp;amp; Tutorials===&lt;br /&gt;
&lt;br /&gt;
* The module is appropriate when there is need for aligning surfaces, e.g. for comparison of surface features.&lt;br /&gt;
* Possible improvements are the generation of the registration transform in output (TO DO).&lt;br /&gt;
&lt;br /&gt;
===Quick Tour of Features and Use===&lt;br /&gt;
List all the panels in your interface, their features, what they mean, and how to use them. For instance:&lt;br /&gt;
&lt;br /&gt;
* '''Surface ICP Registration Parameters:'''&lt;br /&gt;
** ''Landmark transform mode'': choose between RigidBody, Similarity or Affine transforms for registration of the surfaces. &lt;br /&gt;
** ''Mean distance mode'': choose between square root of the average of the sum of squares of the closest point distances (RMS) or mean of the sum of absolute values of the closest point distances (Absolute)&lt;br /&gt;
** ''Maximum number of iterations'': number of iterations beyond which the ICP algorithm won't proceed even if the maximum mean distance is above threshold. &lt;br /&gt;
** ''Maximum number of landmarks'': maximum number of surface landmarks used to minimize distance between surfaces&lt;br /&gt;
** ''Start by matching centroids'': initialize the transform by translating the input surface so that its centroid coincides the centroid of the target surface. &lt;br /&gt;
** ''Check mean distance'': force checking distance between every two iterations (slower but more accurate)&lt;br /&gt;
** ''Maximum mean distance'': distance threshold, the algorithm stops when the mean distance between the surfaces is below this threshold &lt;br /&gt;
* '''IO:'''&lt;br /&gt;
** &amp;quot;Initial Transform&amp;quot;: the (optional) initial transform that is applied to the input surface prior to registration&lt;br /&gt;
** ''Input Surface'': the input (moving) surface&lt;br /&gt;
** ''Target Surface'': the target (not moving) surface&lt;br /&gt;
** ''Output Surface'': the output surface, i.e. the input surface registered on the target surface. Optional.&lt;br /&gt;
** ''Output Transform'': the computed ICP transform MRML node. Optional (if both Output Surface and Output Transform are specified, the output surface is placed as a child of the output transform).&lt;br /&gt;
&lt;br /&gt;
== Development ==&lt;br /&gt;
&lt;br /&gt;
===Dependencies===&lt;br /&gt;
&lt;br /&gt;
Python&lt;br /&gt;
&lt;br /&gt;
===Known bugs===&lt;br /&gt;
&lt;br /&gt;
Follow this [http://na-mic.org/Mantis/main_page.php link] to the Slicer3 bug tracker. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Usability issues===&lt;br /&gt;
&lt;br /&gt;
Follow this [http://na-mic.org/Mantis/main_page.php link] to the Slicer3 bug tracker. Please select the '''usability issue category''' when browsing or contributing.&lt;br /&gt;
&lt;br /&gt;
===Source code &amp;amp; documentation===&lt;br /&gt;
&lt;br /&gt;
Follow this [http://viewvc.slicer.org/viewcvs.cgi/trunk/Modules/Python/ link] to the module.&lt;br /&gt;
&lt;br /&gt;
[http://www.na-mic.org/Slicer/Documentation/Slicer3/html/ Links] to documentation generated by doxygen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== More Information == &lt;br /&gt;
&lt;br /&gt;
===Acknowledgment===&lt;br /&gt;
&lt;br /&gt;
===References===&lt;br /&gt;
&lt;br /&gt;
[http://www.vtk.org/doc/nightly/html/classvtkIterativeClosestPointTransform.html vtkIterativeClosestPointTransform]&lt;/div&gt;</summary>
		<author><name>Lantiga</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Modules:PythonSurfaceICPRegistration-Documentation-3.4&amp;diff=10336</id>
		<title>Modules:PythonSurfaceICPRegistration-Documentation-3.4</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Modules:PythonSurfaceICPRegistration-Documentation-3.4&amp;diff=10336"/>
		<updated>2009-08-11T12:25:17Z</updated>

		<summary type="html">&lt;p&gt;Lantiga: /* Quick Tour of Features and Use */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Documentation-3.4|Return to Slicer 3.4 Documentation]]&lt;br /&gt;
&lt;br /&gt;
[[Announcements:Slicer3.4#Highlights|Gallery of New Features]]&lt;br /&gt;
__NOTOC__&lt;br /&gt;
===Module Name===&lt;br /&gt;
Python ICP Registration&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[Image:PythonICP1.png|thumb|320px|Figure 1: Full model of aneurysm and (unregistered) aneurysm dome]]&lt;br /&gt;
|[[Image:PythonICP2.png|thumb|320px|Figure 2: Aneurysm dome registered on the full model]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== General Information ==&lt;br /&gt;
===Module Type &amp;amp; Category===&lt;br /&gt;
&lt;br /&gt;
Type: CLI&lt;br /&gt;
&lt;br /&gt;
Category: Surface Models&lt;br /&gt;
&lt;br /&gt;
===Authors, Collaborators &amp;amp; Contact===&lt;br /&gt;
* Luca Antiga: Mario Negri Institute&lt;br /&gt;
* Daniel Blezek: Mayo Clinic&lt;br /&gt;
* Contact: Luca Antiga, antiga@marionegri.it&lt;br /&gt;
&lt;br /&gt;
===Module Description===&lt;br /&gt;
This Python module registers an input surface to a target surface using the Iterative Closest Point algorithm using rigid, similarity and affine transforms.&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
&lt;br /&gt;
===Examples, Use Cases &amp;amp; Tutorials===&lt;br /&gt;
&lt;br /&gt;
* The module is appropriate when there is need for aligning surfaces, e.g. for comparison of surface features.&lt;br /&gt;
* Possible improvements are the generation of the registration transform in output (TO DO).&lt;br /&gt;
&lt;br /&gt;
===Quick Tour of Features and Use===&lt;br /&gt;
List all the panels in your interface, their features, what they mean, and how to use them. For instance:&lt;br /&gt;
&lt;br /&gt;
* '''Surface ICP Registration Parameters:'''&lt;br /&gt;
** ''Landmark transform mode'': choose between RigidBody, Similarity or Affine transforms for registration of the surfaces. &lt;br /&gt;
** ''Mean distance mode'': choose between square root of the average of the sum of squares of the closest point distances (RMS) or mean of the sum of absolute values of the closest point distances (Absolute)&lt;br /&gt;
** ''Maximum number of iterations'': number of iterations beyond which the ICP algorithm won't proceed even if the maximum mean distance is above threshold. &lt;br /&gt;
** ''Maximum number of landmarks'': maximum number of surface landmarks used to minimize distance between surfaces&lt;br /&gt;
** ''Start by matching centroids'': initialize the transform by translating the input surface so that its centroid coincides the centroid of the target surface. &lt;br /&gt;
** ''Check mean distance'': force checking distance between every two iterations (slower but more accurate)&lt;br /&gt;
** ''Maximum mean distance'': distance threshold, the algorithm stops when the mean distance between the surfaces is below this threshold &lt;br /&gt;
* '''IO:'''&lt;br /&gt;
** &amp;quot;Initial Transform&amp;quot;: the (optional) initial transform that is applied to the input surface prior to registration&lt;br /&gt;
** ''Input Surface'': the input (moving) surface&lt;br /&gt;
** ''Target Surface'': the target (not moving) surface&lt;br /&gt;
** ''Output Surface'': the output surface, i.e. the input surface registered on the target surface. Optional.&lt;br /&gt;
** &amp;quot;Output Transform&amp;quot;: the computed ICP transform MRML node. Optional (if both Output Surface and Output Transform are specified, the output surface is placed as a child of the output transform).&lt;br /&gt;
&lt;br /&gt;
== Development ==&lt;br /&gt;
&lt;br /&gt;
===Dependencies===&lt;br /&gt;
&lt;br /&gt;
Python&lt;br /&gt;
&lt;br /&gt;
===Known bugs===&lt;br /&gt;
&lt;br /&gt;
Follow this [http://na-mic.org/Mantis/main_page.php link] to the Slicer3 bug tracker. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Usability issues===&lt;br /&gt;
&lt;br /&gt;
Follow this [http://na-mic.org/Mantis/main_page.php link] to the Slicer3 bug tracker. Please select the '''usability issue category''' when browsing or contributing.&lt;br /&gt;
&lt;br /&gt;
===Source code &amp;amp; documentation===&lt;br /&gt;
&lt;br /&gt;
Follow this [http://viewvc.slicer.org/viewcvs.cgi/trunk/Modules/Python/ link] to the module.&lt;br /&gt;
&lt;br /&gt;
[http://www.na-mic.org/Slicer/Documentation/Slicer3/html/ Links] to documentation generated by doxygen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== More Information == &lt;br /&gt;
&lt;br /&gt;
===Acknowledgment===&lt;br /&gt;
&lt;br /&gt;
===References===&lt;br /&gt;
&lt;br /&gt;
[http://www.vtk.org/doc/nightly/html/classvtkIterativeClosestPointTransform.html vtkIterativeClosestPointTransform]&lt;/div&gt;</summary>
		<author><name>Lantiga</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/Nightly/Developers/SlicerExecutionModel/Python&amp;diff=9894</id>
		<title>Documentation/Nightly/Developers/SlicerExecutionModel/Python</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/Nightly/Developers/SlicerExecutionModel/Python&amp;diff=9894"/>
		<updated>2009-06-29T10:47:49Z</updated>

		<summary type="html">&lt;p&gt;Lantiga: /* Python Module collection */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Python Modules==&lt;br /&gt;
&lt;br /&gt;
A [[Slicer3:Python | Python]] interpreter has been integrated into Slicer3.  More details of the Python language can be found at [http://www.python.org Python.org].  This interpreter may be used to execute Python script plugins.  The modules have a few specific requirements to be correctly found and used as plugins.  Like the standard executable and shared library plugins, Python plugins need to be self describing.  To do this, the script must have a top level variable called '''XML''' or provide a '''toXML''' procedure.  For example:&lt;br /&gt;
&lt;br /&gt;
 XML = &amp;quot;&amp;quot;&amp;quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;executable&amp;gt;&lt;br /&gt;
   &amp;lt;category&amp;gt;Filtering.Denoising&amp;lt;/category&amp;gt;&lt;br /&gt;
   ...&lt;br /&gt;
 &lt;br /&gt;
 def toXML():&lt;br /&gt;
   return XML;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Details of the XML format are found in the main [[Slicer3:Execution Model Documentation | Execution Model documentation]].  Rather than construct a command line to pass into Python, Slicer3 directly calls an '''Execute''' procedure.  It is assumed that the '''Execute''' function expects positional arguments first, and any optional arguments are passed in as keyword arguments.  For instance, the GradientAnisotropicDiffusion.py module provides an '''Execute''':&lt;br /&gt;
&lt;br /&gt;
 def Execute ( inputVolume, outputVolume, conductance=1.0, timeStep=0.0625, iterations=1 ):&lt;br /&gt;
     print &amp;quot;Executing Python Demo Application!&amp;quot;&lt;br /&gt;
     Slicer = __import__ ( &amp;quot;Slicer&amp;quot; )&lt;br /&gt;
     slicer = Slicer.slicer&lt;br /&gt;
     in = slicer.MRMLScene.GetNodeByID ( inputVolume );&lt;br /&gt;
     out = slicer.MRMLScene.GetNodeByID ( outputVolume );&lt;br /&gt;
 &lt;br /&gt;
     filter = slicer.vtkITKGradientAnisotropicDiffusionImageFilter()&lt;br /&gt;
     filter.SetConductanceParameter ( conductance )&lt;br /&gt;
     filter.SetTimeStep ( timeStep )&lt;br /&gt;
     filter.SetNumberOfIterations ( iterations )&lt;br /&gt;
     filter.SetInput ( in.GetImageData() )&lt;br /&gt;
     filter.Update()&lt;br /&gt;
     out.SetAndObserveImageData(filter.GetOutput())&lt;br /&gt;
     matrix = slicer.vtkMatrix4x4()&lt;br /&gt;
     in.GetIJKToRASMatrix(matrix)&lt;br /&gt;
     out.GetIJKToRASMatrix(matrix)&lt;br /&gt;
     return&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The function first constructs a '''Slicer''' object by importing the Slicer module.  The '''Slicer''' object is the main interface into Slicer3 as a whole.  The first two arguments, '''inputVolume''' and '''outputVolume''' are not proper MRMLVolumes, and must be looked up using the '''Slicer''' object (that is, the arguments are unique IDs rather than pointers to the objects).  The filter is constructed through the '''Slicer''' object, and the parameters are set.  After the filter is updated, the output image is put using the '''SetAndObserveImageData''' method on the output volume.&lt;br /&gt;
&lt;br /&gt;
===== ToDo =====&lt;br /&gt;
* Progress functionality&lt;br /&gt;
* Casting image arguments to proper MRML volume objects before calling '''Execute'''&lt;br /&gt;
&lt;br /&gt;
==Python Module collection==&lt;br /&gt;
&lt;br /&gt;
Here are a few sample modules that should clarify how to write CLI modules in Python. Some of them are official Python modules, other are here just to provide working examples.&lt;br /&gt;
* [[Slicer3:Execution Model Documentation:Python#PythonScript.py | PythonScript.py]] &lt;br /&gt;
* [[Slicer3:Execution Model Documentation:Python#SurfaceConnectivity.py | SurfaceConnectivity.py]] &lt;br /&gt;
* [[Slicer3:Execution Model Documentation:Python#SurfaceICPRegistration.py | SurfaceICPRegistration.py]] &lt;br /&gt;
* [[Slicer3:Execution Model Documentation:Python#SurfaceToolbox.py | SurfaceToolbox.py]] &lt;br /&gt;
* ExplodeVolumeTransform.py&lt;br /&gt;
* GaussianSmooth.py&lt;br /&gt;
* GradientAnisotropicDiffusion.py&lt;br /&gt;
* ResampleVolume.py&lt;br /&gt;
* ResliceAsVolume.py&lt;br /&gt;
&lt;br /&gt;
To create a working Python CLI module, just create a directory, put your .py file there and add the directory path to the path list in Application settings -  Module settings.&lt;br /&gt;
&lt;br /&gt;
===PythonScript.py===&lt;br /&gt;
&lt;br /&gt;
This module allows to run external Python code saved in a .py file on an image or surface (or both), and have the results loaded back in Slicer. It doesn't really do anything itself, but it's handy for:&lt;br /&gt;
* writing Python modules, since one can store the actual module code in a file without having to copy it to Slicer3-build/lib/Slicer3/Plugins &lt;br /&gt;
* writing quick one-shot filtering operations that are not elegible to become full-fledged modules&lt;br /&gt;
* experimenting with Python in Slicer.&lt;br /&gt;
&lt;br /&gt;
 XML = &amp;quot;&amp;quot;&amp;quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;executable&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
   &amp;lt;category&amp;gt;Python Modules&amp;lt;/category&amp;gt;&lt;br /&gt;
   &amp;lt;title&amp;gt;Python Script&amp;lt;/title&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Run external Python code on a surface or image.&amp;lt;/description&amp;gt;&lt;br /&gt;
   &amp;lt;version&amp;gt;1.0&amp;lt;/version&amp;gt;&lt;br /&gt;
   &amp;lt;documentation-url&amp;gt;&amp;lt;/documentation-url&amp;gt;&lt;br /&gt;
   &amp;lt;license&amp;gt;&amp;lt;/license&amp;gt;&lt;br /&gt;
   &amp;lt;contributor&amp;gt;Luca Antiga and Daniel Blezek&amp;lt;/contributor&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
   &amp;lt;parameters&amp;gt;&lt;br /&gt;
     &amp;lt;label&amp;gt;Python Script Parameters&amp;lt;/label&amp;gt;&lt;br /&gt;
     &amp;lt;description&amp;gt;Parameters for Python script&amp;lt;/description&amp;gt;&lt;br /&gt;
     &amp;lt;file&amp;gt;&lt;br /&gt;
       &amp;lt;name&amp;gt;scriptFileName&amp;lt;/name&amp;gt;&lt;br /&gt;
       &amp;lt;longflag&amp;gt;scriptFileName&amp;lt;/longflag&amp;gt;&lt;br /&gt;
       &amp;lt;description&amp;gt;File containing Python code to run&amp;lt;/description&amp;gt;&lt;br /&gt;
       &amp;lt;label&amp;gt;Script file&amp;lt;/label&amp;gt;&lt;br /&gt;
     &amp;lt;/file&amp;gt;&lt;br /&gt;
   &amp;lt;/parameters&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
   &amp;lt;parameters&amp;gt;&lt;br /&gt;
     &amp;lt;label&amp;gt;IO&amp;lt;/label&amp;gt;&lt;br /&gt;
     &amp;lt;description&amp;gt;Input/output parameters&amp;lt;/description&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;geometry&amp;gt;&lt;br /&gt;
       &amp;lt;name&amp;gt;inputSurface&amp;lt;/name&amp;gt;&lt;br /&gt;
       &amp;lt;longflag&amp;gt;inputSurface&amp;lt;/longflag&amp;gt;&lt;br /&gt;
       &amp;lt;label&amp;gt;Input Surface&amp;lt;/label&amp;gt;&lt;br /&gt;
       &amp;lt;channel&amp;gt;input&amp;lt;/channel&amp;gt;&lt;br /&gt;
       &amp;lt;description&amp;gt;Input surface to be filtered&amp;lt;/description&amp;gt;&lt;br /&gt;
     &amp;lt;/geometry&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;image&amp;gt;&lt;br /&gt;
       &amp;lt;name&amp;gt;inputVolume&amp;lt;/name&amp;gt;&lt;br /&gt;
       &amp;lt;longflag&amp;gt;inputVolume&amp;lt;/longflag&amp;gt;&lt;br /&gt;
       &amp;lt;label&amp;gt;Input Volume&amp;lt;/label&amp;gt;&lt;br /&gt;
       &amp;lt;channel&amp;gt;input&amp;lt;/channel&amp;gt;&lt;br /&gt;
       &amp;lt;description&amp;gt;Input image to be filtered&amp;lt;/description&amp;gt;&lt;br /&gt;
     &amp;lt;/image&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;geometry&amp;gt;&lt;br /&gt;
       &amp;lt;name&amp;gt;outputSurface&amp;lt;/name&amp;gt;&lt;br /&gt;
       &amp;lt;longflag&amp;gt;outputSurface&amp;lt;/longflag&amp;gt;&lt;br /&gt;
       &amp;lt;label&amp;gt;Output Surface&amp;lt;/label&amp;gt;&lt;br /&gt;
       &amp;lt;channel&amp;gt;output&amp;lt;/channel&amp;gt;&lt;br /&gt;
       &amp;lt;description&amp;gt;Output filtered surface&amp;lt;/description&amp;gt;&lt;br /&gt;
     &amp;lt;/geometry&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;image&amp;gt;&lt;br /&gt;
      &amp;lt;name&amp;gt;outputVolume&amp;lt;/name&amp;gt;&lt;br /&gt;
      &amp;lt;longflag&amp;gt;outputVolume&amp;lt;/longflag&amp;gt;&lt;br /&gt;
      &amp;lt;label&amp;gt;Output Volume&amp;lt;/label&amp;gt;&lt;br /&gt;
      &amp;lt;channel&amp;gt;output&amp;lt;/channel&amp;gt;&lt;br /&gt;
      &amp;lt;description&amp;gt;Output filtered volume&amp;lt;/description&amp;gt;&lt;br /&gt;
    &amp;lt;/image&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
   &amp;lt;/parameters&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;/executable&amp;gt;&lt;br /&gt;
 &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 def Execute (scriptFileName=&amp;quot;&amp;quot;, inputSurface=&amp;quot;&amp;quot;, inputVolume=&amp;quot;&amp;quot;, outputSurface=&amp;quot;&amp;quot;, outputVolume=&amp;quot;&amp;quot;):&lt;br /&gt;
 &lt;br /&gt;
     Slicer = __import__(&amp;quot;Slicer&amp;quot;)&lt;br /&gt;
     slicer = Slicer.slicer&lt;br /&gt;
     scene = slicer.MRMLScene&lt;br /&gt;
 &lt;br /&gt;
     if inputSurface:&lt;br /&gt;
         inputSurface = scene.GetNodeByID(inputSurface)&lt;br /&gt;
 &lt;br /&gt;
     if inputVolume:&lt;br /&gt;
         inputVolume = scene.GetNodeByID(inputVolume)&lt;br /&gt;
 &lt;br /&gt;
     if outputSurface:&lt;br /&gt;
         outputSurface = scene.GetNodeByID(outputSurface)&lt;br /&gt;
 &lt;br /&gt;
    if outputVolume:&lt;br /&gt;
        outputVolume = scene.GetNodeByID(outputVolume)&lt;br /&gt;
 &lt;br /&gt;
     try:&lt;br /&gt;
         execfile(scriptFileName)&lt;br /&gt;
     except Exception, error:&lt;br /&gt;
         slicer.Application.ErrorMessage(&amp;quot;Python script error: %s&amp;quot; % error)&lt;br /&gt;
 &lt;br /&gt;
     return&lt;br /&gt;
&lt;br /&gt;
Note how the try...except block intercepts Python exceptions generated while running the external script and prints messages out in Slicer's message console.&lt;br /&gt;
&lt;br /&gt;
Now let's see what an external script code could look like. Say we want to take the input surface and decimate it. &lt;br /&gt;
&lt;br /&gt;
 inputPolyData = inputSurface.GetPolyData()&lt;br /&gt;
 &lt;br /&gt;
 decimation = slicer.vtkDecimatePro()&lt;br /&gt;
 decimation.SetInput(inputSurface.GetPolyData())&lt;br /&gt;
 decimation.SetTargetReduction(0.99)&lt;br /&gt;
 decimation.Update()&lt;br /&gt;
 &lt;br /&gt;
 outputSurface.SetAndObservePolyData(decimation.GetOutput())&lt;br /&gt;
&lt;br /&gt;
In the script (which we can save in a .py file), we don't have to start by importing Slicer module, since it's already done in the PythonScript.py module. We have to assume that inputSurface, outputSurface, inputVolume and outputVolume are already available as MRML nodes (vtkMRMLModelNode and vtkMRMLVolumeNode, respectively), and that the slicer module is also already imported.&lt;br /&gt;
&lt;br /&gt;
Setting of the filtered poly data to the outputSurface is left to the user (see last line).&lt;br /&gt;
&lt;br /&gt;
In general, the syntax used to use VTK classes in a Slicer Python module is very similar to using VTK from Python. There is just one main difference: classes have to be looked for in slicer, not vtk (i.e. slicer.vtkImageData() instead of vtk.vtkImageData()) &lt;br /&gt;
&lt;br /&gt;
===SurfaceConnectivity.py===&lt;br /&gt;
&lt;br /&gt;
This module runs a connectivity filter on an input surface. There are two modes of operation: one is to extract all regions and color them accordingly, the other is to extract the region closest to a fiducial. Optionally, the module will generate a list of fiducials named &amp;quot;Region #&amp;quot; placed on a point of each connected region. It's a nice example on how one can interact with the MRML scene. This is possible because Python modules are run in the main thread, in contrast with executables and shared library command line modules that are run in a separate processing thread.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    XML = &amp;quot;&amp;quot;&amp;quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
    &amp;lt;executable&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
      &amp;lt;category&amp;gt;Python Modules&amp;lt;/category&amp;gt;&lt;br /&gt;
      &amp;lt;title&amp;gt;Python Surface Connectivity&amp;lt;/title&amp;gt;&lt;br /&gt;
      &amp;lt;description&amp;gt;&lt;br /&gt;
    Identify connected regions of a surface.&lt;br /&gt;
    &amp;lt;/description&amp;gt;&lt;br /&gt;
      &amp;lt;version&amp;gt;1.0&amp;lt;/version&amp;gt;&lt;br /&gt;
      &amp;lt;documentation-url&amp;gt;&amp;lt;/documentation-url&amp;gt;&lt;br /&gt;
      &amp;lt;license&amp;gt;&amp;lt;/license&amp;gt;&lt;br /&gt;
      &amp;lt;contributor&amp;gt;Luca Antiga and Daniel Blezek&amp;lt;/contributor&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
      &amp;lt;parameters&amp;gt;&lt;br /&gt;
        &amp;lt;label&amp;gt;Surface Connectivity Parameters&amp;lt;/label&amp;gt;&lt;br /&gt;
        &amp;lt;description&amp;gt;Parameters for surface connectivity&amp;lt;/description&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
        &amp;lt;string-enumeration&amp;gt;&lt;br /&gt;
          &amp;lt;name&amp;gt;connectivityMode&amp;lt;/name&amp;gt;&lt;br /&gt;
          &amp;lt;longflag&amp;gt;connectivityMode&amp;lt;/longflag&amp;gt;&lt;br /&gt;
          &amp;lt;description&amp;gt;Mode of operation of connectivity filter&amp;lt;/description&amp;gt;&lt;br /&gt;
          &amp;lt;label&amp;gt;Connectivity mode&amp;lt;/label&amp;gt;&lt;br /&gt;
          &amp;lt;default&amp;gt;AllRegions&amp;lt;/default&amp;gt;&lt;br /&gt;
          &amp;lt;element&amp;gt;AllRegions&amp;lt;/element&amp;gt;&lt;br /&gt;
          &amp;lt;element&amp;gt;ClosestToSeed&amp;lt;/element&amp;gt;&lt;br /&gt;
        &amp;lt;/string-enumeration&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
        &amp;lt;boolean&amp;gt;&lt;br /&gt;
          &amp;lt;name&amp;gt;enableOutputFiducials&amp;lt;/name&amp;gt;&lt;br /&gt;
          &amp;lt;longflag&amp;gt;enableOutputFiducials&amp;lt;/longflag&amp;gt;&lt;br /&gt;
          &amp;lt;description&amp;gt;Toggle generation of labeled fiducials corresponding to each extracted region&amp;lt;/description&amp;gt;&lt;br /&gt;
          &amp;lt;label&amp;gt;Enable output fiducials&amp;lt;/label&amp;gt;&lt;br /&gt;
          &amp;lt;default&amp;gt;false&amp;lt;/default&amp;gt;&lt;br /&gt;
        &amp;lt;/boolean&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
        &amp;lt;point multiple=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;name&amp;gt;seedPoint&amp;lt;/name&amp;gt;&lt;br /&gt;
          &amp;lt;longflag&amp;gt;seedPoint&amp;lt;/longflag&amp;gt;&lt;br /&gt;
          &amp;lt;label&amp;gt;Seed Point&amp;lt;/label&amp;gt;&lt;br /&gt;
          &amp;lt;description&amp;gt;Fiducial to extract closest surface&amp;lt;/description&amp;gt;&lt;br /&gt;
        &amp;lt;/point&amp;gt;&lt;br /&gt;
      &amp;lt;/parameters&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
      &amp;lt;parameters&amp;gt;&lt;br /&gt;
        &amp;lt;label&amp;gt;IO&amp;lt;/label&amp;gt;&lt;br /&gt;
        &amp;lt;description&amp;gt;Input/output parameters&amp;lt;/description&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
        &amp;lt;geometry&amp;gt;&lt;br /&gt;
          &amp;lt;name&amp;gt;inputSurface&amp;lt;/name&amp;gt;&lt;br /&gt;
          &amp;lt;label&amp;gt;Input Surface&amp;lt;/label&amp;gt;&lt;br /&gt;
          &amp;lt;channel&amp;gt;input&amp;lt;/channel&amp;gt;&lt;br /&gt;
          &amp;lt;index&amp;gt;0&amp;lt;/index&amp;gt;&lt;br /&gt;
          &amp;lt;description&amp;gt;Input surface to be filtered&amp;lt;/description&amp;gt;&lt;br /&gt;
        &amp;lt;/geometry&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
        &amp;lt;geometry&amp;gt;&lt;br /&gt;
          &amp;lt;name&amp;gt;outputSurface&amp;lt;/name&amp;gt;&lt;br /&gt;
          &amp;lt;label&amp;gt;Output Surface&amp;lt;/label&amp;gt;&lt;br /&gt;
          &amp;lt;channel&amp;gt;output&amp;lt;/channel&amp;gt;&lt;br /&gt;
          &amp;lt;index&amp;gt;1&amp;lt;/index&amp;gt;&lt;br /&gt;
          &amp;lt;description&amp;gt;Output filtered surface&amp;lt;/description&amp;gt;&lt;br /&gt;
        &amp;lt;/geometry&amp;gt;&lt;br /&gt;
      &amp;lt;/parameters&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
    &amp;lt;/executable&amp;gt;&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    def Execute (inputSurface, outputSurface, connectivityMode=&amp;quot;AllRegions&amp;quot;, enableOutputFiducials=False, seedPoint=[0.0,0.0,0.0]):&lt;br /&gt;
    &lt;br /&gt;
        Slicer = __import__(&amp;quot;Slicer&amp;quot;)&lt;br /&gt;
        slicer = Slicer.slicer&lt;br /&gt;
        scene = slicer.MRMLScene&lt;br /&gt;
        inputSurface = scene.GetNodeByID(inputSurface)&lt;br /&gt;
        outputSurface = scene.GetNodeByID(outputSurface)&lt;br /&gt;
    &lt;br /&gt;
        connectivityFilter = slicer.vtkPolyDataConnectivityFilter()&lt;br /&gt;
        connectivityFilter.SetInput(inputSurface.GetPolyData())&lt;br /&gt;
        if connectivityMode == &amp;quot;AllRegions&amp;quot;:&lt;br /&gt;
            connectivityFilter.SetExtractionModeToAllRegions()&lt;br /&gt;
            connectivityFilter.ColorRegionsOn()&lt;br /&gt;
        elif connectivityMode == &amp;quot;ClosestToSeed&amp;quot;:&lt;br /&gt;
            connectivityFilter.SetExtractionModeToClosestPointRegion()&lt;br /&gt;
            connectivityFilter.SetClosestPoint(*seedPoint)&lt;br /&gt;
        connectivityFilter.Update()&lt;br /&gt;
    &lt;br /&gt;
        if enableOutputFiducials:&lt;br /&gt;
            fiducialList = scene.CreateNodeByClass(&amp;quot;vtkMRMLFiducialListNode&amp;quot;)&lt;br /&gt;
            fiducialList.DisableModifiedEventOn()&lt;br /&gt;
            fiducialList.SetScene(scene)&lt;br /&gt;
            thresholdPoints = slicer.vtkThresholdPoints()&lt;br /&gt;
            thresholdPoints.SetInput(connectivityFilter.GetOutput())&lt;br /&gt;
            numberOfRegions = connectivityFilter.GetNumberOfExtractedRegions()&lt;br /&gt;
            for i in range(numberOfRegions):&lt;br /&gt;
                lower = i - 0.5&lt;br /&gt;
                upper = i + 0.5&lt;br /&gt;
                thresholdPoints.ThresholdBetween(lower,upper)&lt;br /&gt;
                thresholdPoints.Update()&lt;br /&gt;
                if thresholdPoints.GetOutput().GetNumberOfPoints() &amp;gt; 0:&lt;br /&gt;
                    point = thresholdPoints.GetOutput().GetPoint(0)&lt;br /&gt;
                    fid = fiducialList.AddFiducial()&lt;br /&gt;
                    fiducialList.SetNthFiducialXYZ(fid,*point)&lt;br /&gt;
                    fiducialList.SetNthFiducialLabelText(fid,&amp;quot;Region %d&amp;quot; % i)&lt;br /&gt;
            fiducialList.InvokePendingModifiedEvent()&lt;br /&gt;
            fiducialList.DisableModifiedEventOff()&lt;br /&gt;
            scene.AddNode(fiducialList)&lt;br /&gt;
    &lt;br /&gt;
        outputSurface.SetAndObservePolyData(connectivityFilter.GetOutput())&lt;br /&gt;
    &lt;br /&gt;
        inputSurface.GetDisplayNode().VisibilityOff()&lt;br /&gt;
    &lt;br /&gt;
        return&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===SurfaceICPRegistration.py===&lt;br /&gt;
&lt;br /&gt;
This module provides surface registration using the Iterative Closest Point algorithm as implemented in VTK. Nothing fancy going on, just nice functionality added to Slicer.&lt;br /&gt;
&lt;br /&gt;
 XML = &amp;quot;&amp;quot;&amp;quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;executable&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
   &amp;lt;category&amp;gt;Python Modules&amp;lt;/category&amp;gt;&lt;br /&gt;
   &amp;lt;title&amp;gt;Python Surface ICP Registration&amp;lt;/title&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;&lt;br /&gt;
 Performes registration of the input surface onto a target surface using on the Iterative Closest Point algorithm.&lt;br /&gt;
 &amp;lt;/description&amp;gt;&lt;br /&gt;
   &amp;lt;version&amp;gt;1.0&amp;lt;/version&amp;gt;&lt;br /&gt;
   &amp;lt;documentation-url&amp;gt;&amp;lt;/documentation-url&amp;gt;&lt;br /&gt;
   &amp;lt;license&amp;gt;&amp;lt;/license&amp;gt;&lt;br /&gt;
   &amp;lt;contributor&amp;gt;Luca Antiga and Daniel Blezek&amp;lt;/contributor&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
   &amp;lt;parameters&amp;gt;&lt;br /&gt;
     &amp;lt;label&amp;gt;Surface ICP Registration Parameters&amp;lt;/label&amp;gt;&lt;br /&gt;
     &amp;lt;description&amp;gt;Parameters for surface registration&amp;lt;/description&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;string-enumeration&amp;gt;&lt;br /&gt;
       &amp;lt;name&amp;gt;landmarkTransformMode&amp;lt;/name&amp;gt;&lt;br /&gt;
       &amp;lt;longflag&amp;gt;landmarkTransformMode&amp;lt;/longflag&amp;gt;&lt;br /&gt;
       &amp;lt;description&amp;gt;Mode of operation of internal landmark transform&amp;lt;/description&amp;gt;&lt;br /&gt;
       &amp;lt;label&amp;gt;Landmark transform mode&amp;lt;/label&amp;gt;&lt;br /&gt;
       &amp;lt;default&amp;gt;RigidBody&amp;lt;/default&amp;gt;&lt;br /&gt;
       &amp;lt;element&amp;gt;RigidBody&amp;lt;/element&amp;gt;&lt;br /&gt;
       &amp;lt;element&amp;gt;Similarity&amp;lt;/element&amp;gt;&lt;br /&gt;
       &amp;lt;element&amp;gt;Affine&amp;lt;/element&amp;gt;&lt;br /&gt;
     &amp;lt;/string-enumeration&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;string-enumeration&amp;gt;&lt;br /&gt;
       &amp;lt;name&amp;gt;meanDistanceMode&amp;lt;/name&amp;gt;&lt;br /&gt;
       &amp;lt;longflag&amp;gt;meanDistanceMode&amp;lt;/longflag&amp;gt;&lt;br /&gt;
       &amp;lt;label&amp;gt;Mean distance mode&amp;lt;/label&amp;gt;&lt;br /&gt;
       &amp;lt;description&amp;gt;Set how the mean distance should be computed, RMS (square root of the average of the sum of squares &lt;br /&gt;
         of the closest point distances) or AbsoluteValue (mean of the sum of absolute values of the closest point distances)&amp;lt;/description&amp;gt;&lt;br /&gt;
       &amp;lt;default&amp;gt;RMS&amp;lt;/default&amp;gt;&lt;br /&gt;
       &amp;lt;element&amp;gt;RMS&amp;lt;/element&amp;gt;&lt;br /&gt;
       &amp;lt;element&amp;gt;AbsoluteValue&amp;lt;/element&amp;gt;&lt;br /&gt;
     &amp;lt;/string-enumeration&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;integer&amp;gt;&lt;br /&gt;
       &amp;lt;name&amp;gt;maximumNumberOfIterations&amp;lt;/name&amp;gt;&lt;br /&gt;
       &amp;lt;longflag&amp;gt;maximumNumberOfIterations&amp;lt;/longflag&amp;gt;&lt;br /&gt;
       &amp;lt;label&amp;gt;Maximum number of iterations&amp;lt;/label&amp;gt;&lt;br /&gt;
       &amp;lt;description&amp;gt;Maximum number of Interative Closest Point iterations&amp;lt;/description&amp;gt;&lt;br /&gt;
       &amp;lt;default&amp;gt;50&amp;lt;/default&amp;gt;&lt;br /&gt;
       &amp;lt;constraints&amp;gt;&lt;br /&gt;
         &amp;lt;minimum&amp;gt;1&amp;lt;/minimum&amp;gt;&lt;br /&gt;
         &amp;lt;maximum&amp;gt;1000&amp;lt;/maximum&amp;gt;&lt;br /&gt;
         &amp;lt;step&amp;gt;1&amp;lt;/step&amp;gt;&lt;br /&gt;
       &amp;lt;/constraints&amp;gt;&lt;br /&gt;
     &amp;lt;/integer&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;integer&amp;gt;&lt;br /&gt;
       &amp;lt;name&amp;gt;maximumNumberOfLandmarks&amp;lt;/name&amp;gt;&lt;br /&gt;
       &amp;lt;longflag&amp;gt;maximumNumberOfLandmarks&amp;lt;/longflag&amp;gt;&lt;br /&gt;
       &amp;lt;label&amp;gt;Maximum number of landmarks&amp;lt;/label&amp;gt;&lt;br /&gt;
       &amp;lt;description&amp;gt;Maximum number of landmarks on source and target surfaces&amp;lt;/description&amp;gt;&lt;br /&gt;
       &amp;lt;default&amp;gt;200&amp;lt;/default&amp;gt;&lt;br /&gt;
       &amp;lt;constraints&amp;gt;&lt;br /&gt;
         &amp;lt;minimum&amp;gt;1&amp;lt;/minimum&amp;gt;&lt;br /&gt;
         &amp;lt;maximum&amp;gt;1000&amp;lt;/maximum&amp;gt;&lt;br /&gt;
         &amp;lt;step&amp;gt;1&amp;lt;/step&amp;gt;&lt;br /&gt;
       &amp;lt;/constraints&amp;gt;&lt;br /&gt;
     &amp;lt;/integer&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;boolean&amp;gt;&lt;br /&gt;
       &amp;lt;name&amp;gt;startByMatchingCentroids&amp;lt;/name&amp;gt;&lt;br /&gt;
       &amp;lt;longflag&amp;gt;startByMatchingCentroids&amp;lt;/longflag&amp;gt;&lt;br /&gt;
       &amp;lt;label&amp;gt;Start by matching centroids&amp;lt;/label&amp;gt;&lt;br /&gt;
       &amp;lt;description&amp;gt;Toggle starting registration by first translating the source centroid to the target centroid&amp;lt;/description&amp;gt;&lt;br /&gt;
       &amp;lt;default&amp;gt;false&amp;lt;/default&amp;gt;&lt;br /&gt;
     &amp;lt;/boolean&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;boolean&amp;gt;&lt;br /&gt;
       &amp;lt;name&amp;gt;checkMeanDistance&amp;lt;/name&amp;gt;&lt;br /&gt;
       &amp;lt;longflag&amp;gt;checkMeanDistance&amp;lt;/longflag&amp;gt;&lt;br /&gt;
       &amp;lt;label&amp;gt;Check mean distance&amp;lt;/label&amp;gt;&lt;br /&gt;
       &amp;lt;description&amp;gt;Force the algorithm to check the mean distance between two iterations&amp;lt;/description&amp;gt;&lt;br /&gt;
       &amp;lt;default&amp;gt;false&amp;lt;/default&amp;gt;&lt;br /&gt;
     &amp;lt;/boolean&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;double&amp;gt;&lt;br /&gt;
       &amp;lt;name&amp;gt;maximumMeanDistance&amp;lt;/name&amp;gt;&lt;br /&gt;
       &amp;lt;longflag&amp;gt;maximumMeanDistance&amp;lt;/longflag&amp;gt;&lt;br /&gt;
       &amp;lt;label&amp;gt;Maximum mean distance&amp;lt;/label&amp;gt;&lt;br /&gt;
       &amp;lt;description&amp;gt;Maximum distance between two iterations used for determining convergence&amp;lt;/description&amp;gt;&lt;br /&gt;
       &amp;lt;default&amp;gt;0.01&amp;lt;/default&amp;gt;&lt;br /&gt;
     &amp;lt;/double&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
   &amp;lt;/parameters&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
   &amp;lt;parameters&amp;gt;&lt;br /&gt;
     &amp;lt;label&amp;gt;IO&amp;lt;/label&amp;gt;&lt;br /&gt;
     &amp;lt;description&amp;gt;Input/output parameters&amp;lt;/description&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;geometry&amp;gt;&lt;br /&gt;
       &amp;lt;name&amp;gt;inputSurface&amp;lt;/name&amp;gt;&lt;br /&gt;
       &amp;lt;label&amp;gt;Input Surface&amp;lt;/label&amp;gt;&lt;br /&gt;
       &amp;lt;channel&amp;gt;input&amp;lt;/channel&amp;gt;&lt;br /&gt;
       &amp;lt;index&amp;gt;0&amp;lt;/index&amp;gt;&lt;br /&gt;
       &amp;lt;description&amp;gt;Input surface to be registered&amp;lt;/description&amp;gt;&lt;br /&gt;
     &amp;lt;/geometry&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;geometry&amp;gt;&lt;br /&gt;
       &amp;lt;name&amp;gt;targetSurface&amp;lt;/name&amp;gt;&lt;br /&gt;
       &amp;lt;label&amp;gt;Target Surface&amp;lt;/label&amp;gt;&lt;br /&gt;
       &amp;lt;channel&amp;gt;input&amp;lt;/channel&amp;gt;&lt;br /&gt;
       &amp;lt;index&amp;gt;1&amp;lt;/index&amp;gt;&lt;br /&gt;
       &amp;lt;description&amp;gt;Target surface for registration&amp;lt;/description&amp;gt;&lt;br /&gt;
     &amp;lt;/geometry&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;geometry&amp;gt;&lt;br /&gt;
       &amp;lt;name&amp;gt;outputSurface&amp;lt;/name&amp;gt;&lt;br /&gt;
       &amp;lt;label&amp;gt;Output Surface&amp;lt;/label&amp;gt;&lt;br /&gt;
       &amp;lt;channel&amp;gt;output&amp;lt;/channel&amp;gt;&lt;br /&gt;
       &amp;lt;index&amp;gt;2&amp;lt;/index&amp;gt;&lt;br /&gt;
       &amp;lt;description&amp;gt;Output registered surface&amp;lt;/description&amp;gt;&lt;br /&gt;
     &amp;lt;/geometry&amp;gt;&lt;br /&gt;
   &amp;lt;/parameters&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;/executable&amp;gt;&lt;br /&gt;
 &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 def Execute (inputSurface, targetSurface, outputSurface, \&lt;br /&gt;
             landmarkTransformMode=&amp;quot;RigidBody&amp;quot;, meanDistanceMode=&amp;quot;RMS&amp;quot;, \&lt;br /&gt;
             maximumNumberOfIterations=50, maximumNumberOfLandmarks=200, \&lt;br /&gt;
             startByMatchingCentroids=False, checkMeanDistance=False, maximumMeanDistance=0.01):&lt;br /&gt;
 &lt;br /&gt;
     Slicer = __import__(&amp;quot;Slicer&amp;quot;)&lt;br /&gt;
     slicer = Slicer.slicer&lt;br /&gt;
     scene = slicer.MRMLScene&lt;br /&gt;
     inputSurface = scene.GetNodeByID(inputSurface)&lt;br /&gt;
     targetSurface = scene.GetNodeByID(targetSurface)&lt;br /&gt;
     outputSurface = scene.GetNodeByID(outputSurface)&lt;br /&gt;
 &lt;br /&gt;
     icpTransform = slicer.vtkIterativeClosestPointTransform()&lt;br /&gt;
     icpTransform.SetSource(inputSurface.GetPolyData())&lt;br /&gt;
     icpTransform.SetTarget(targetSurface.GetPolyData())&lt;br /&gt;
     if landmarkTransformMode == &amp;quot;RigidBody&amp;quot;:&lt;br /&gt;
         icpTransform.GetLandmarkTransform().SetModeToRigidBody()&lt;br /&gt;
     elif landmarkTransformMode == &amp;quot;Similarity&amp;quot;:&lt;br /&gt;
         icpTransform.GetLandmarkTransform().SetModeToSimilarity()&lt;br /&gt;
     elif landmarkTransformMode == &amp;quot;Affine&amp;quot;:&lt;br /&gt;
         icpTransform.GetLandmarkTransform().SetModeToAffine()&lt;br /&gt;
     if meanDistanceMode == &amp;quot;RMS&amp;quot;:&lt;br /&gt;
         icpTransform.SetMeanDistanceModeToRMS()&lt;br /&gt;
     elif meanDistanceMode == &amp;quot;AbsoluteValue&amp;quot;:&lt;br /&gt;
         icpTransform.SetMeanDistanceModeToAbsoluteValue()&lt;br /&gt;
     icpTransform.SetMaximumNumberOfIterations(maximumNumberOfIterations)&lt;br /&gt;
     icpTransform.SetMaximumNumberOfLandmarks(maximumNumberOfLandmarks)&lt;br /&gt;
     icpTransform.SetStartByMatchingCentroids(int(startByMatchingCentroids))&lt;br /&gt;
     icpTransform.SetCheckMeanDistance(int(checkMeanDistance))&lt;br /&gt;
     icpTransform.SetMaximumMeanDistance(maximumMeanDistance)&lt;br /&gt;
 &lt;br /&gt;
     transformFilter = slicer.vtkTransformPolyDataFilter()&lt;br /&gt;
     transformFilter.SetInput(inputSurface.GetPolyData())&lt;br /&gt;
     transformFilter.SetTransform(icpTransform)        &lt;br /&gt;
     transformFilter.Update()&lt;br /&gt;
     &lt;br /&gt;
     outputSurface.SetAndObservePolyData(transformFilter.GetOutput())&lt;br /&gt;
 &lt;br /&gt;
     return&lt;br /&gt;
&lt;br /&gt;
===SurfaceToolbox.py===&lt;br /&gt;
&lt;br /&gt;
This module provides a bunch of operations that one typically performs on a surface, namely decimation, smoothing, computation of normals and surface cleaning. The filters are executed in a pipe after they are manually enabled with the Enabled checkbox.&lt;br /&gt;
&lt;br /&gt;
 XML = &amp;quot;&amp;quot;&amp;quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;executable&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
   &amp;lt;category&amp;gt;Python Modules&amp;lt;/category&amp;gt;&lt;br /&gt;
   &amp;lt;title&amp;gt;Python Surface Toolbox&amp;lt;/title&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;&lt;br /&gt;
 Process a surface using several filters.&lt;br /&gt;
 &amp;lt;/description&amp;gt;&lt;br /&gt;
   &amp;lt;version&amp;gt;1.0&amp;lt;/version&amp;gt;&lt;br /&gt;
   &amp;lt;documentation-url&amp;gt;&amp;lt;/documentation-url&amp;gt;&lt;br /&gt;
   &amp;lt;license&amp;gt;&amp;lt;/license&amp;gt;&lt;br /&gt;
   &amp;lt;contributor&amp;gt;Luca Antiga and Daniel Blezek&amp;lt;/contributor&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
   &amp;lt;parameters&amp;gt;&lt;br /&gt;
     &amp;lt;label&amp;gt;Surface Decimation&amp;lt;/label&amp;gt;&lt;br /&gt;
     &amp;lt;description&amp;gt;Parameters for surface decimation&amp;lt;/description&amp;gt;&lt;br /&gt;
     &amp;lt;boolean&amp;gt;&lt;br /&gt;
       &amp;lt;name&amp;gt;decimationEnabled&amp;lt;/name&amp;gt;&lt;br /&gt;
       &amp;lt;longflag&amp;gt;decimationEnabled&amp;lt;/longflag&amp;gt;&lt;br /&gt;
       &amp;lt;description&amp;gt;Toggle decimation&amp;lt;/description&amp;gt;&lt;br /&gt;
       &amp;lt;label&amp;gt;Enabled&amp;lt;/label&amp;gt;&lt;br /&gt;
       &amp;lt;default&amp;gt;false&amp;lt;/default&amp;gt;&lt;br /&gt;
     &amp;lt;/boolean&amp;gt;&lt;br /&gt;
     &amp;lt;double&amp;gt;&lt;br /&gt;
       &amp;lt;name&amp;gt;targetReduction&amp;lt;/name&amp;gt;&lt;br /&gt;
       &amp;lt;longflag&amp;gt;targetReduction&amp;lt;/longflag&amp;gt;&lt;br /&gt;
       &amp;lt;description&amp;gt;Target percent reduction of the number of polygons&amp;lt;/description&amp;gt;&lt;br /&gt;
       &amp;lt;label&amp;gt;Target reduction&amp;lt;/label&amp;gt;&lt;br /&gt;
       &amp;lt;default&amp;gt;0.8&amp;lt;/default&amp;gt;&lt;br /&gt;
       &amp;lt;constraints&amp;gt;&lt;br /&gt;
         &amp;lt;minimum&amp;gt;0&amp;lt;/minimum&amp;gt;&lt;br /&gt;
         &amp;lt;maximum&amp;gt;1&amp;lt;/maximum&amp;gt;&lt;br /&gt;
         &amp;lt;step&amp;gt;0&amp;lt;/step&amp;gt;&lt;br /&gt;
       &amp;lt;/constraints&amp;gt;&lt;br /&gt;
     &amp;lt;/double&amp;gt;&lt;br /&gt;
     &amp;lt;boolean&amp;gt;&lt;br /&gt;
       &amp;lt;name&amp;gt;boundaryDeletion&amp;lt;/name&amp;gt;&lt;br /&gt;
       &amp;lt;longflag&amp;gt;boundaryDeletion&amp;lt;/longflag&amp;gt;&lt;br /&gt;
       &amp;lt;description&amp;gt;Toggle deletion of boundary vertices&amp;lt;/description&amp;gt;&lt;br /&gt;
       &amp;lt;label&amp;gt;Boundary vertex deletion&amp;lt;/label&amp;gt;&lt;br /&gt;
       &amp;lt;default&amp;gt;true&amp;lt;/default&amp;gt;&lt;br /&gt;
     &amp;lt;/boolean&amp;gt;&lt;br /&gt;
   &amp;lt;/parameters&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
   &amp;lt;parameters&amp;gt;&lt;br /&gt;
     &amp;lt;label&amp;gt;Surface Smoothing&amp;lt;/label&amp;gt;&lt;br /&gt;
     &amp;lt;description&amp;gt;Parameters for surface smoothing&amp;lt;/description&amp;gt;&lt;br /&gt;
     &amp;lt;boolean&amp;gt;&lt;br /&gt;
       &amp;lt;name&amp;gt;smoothingEnabled&amp;lt;/name&amp;gt;&lt;br /&gt;
       &amp;lt;longflag&amp;gt;smoothingEnabled&amp;lt;/longflag&amp;gt;&lt;br /&gt;
       &amp;lt;description&amp;gt;Toggle smoothing&amp;lt;/description&amp;gt;&lt;br /&gt;
       &amp;lt;label&amp;gt;Enabled&amp;lt;/label&amp;gt;&lt;br /&gt;
       &amp;lt;default&amp;gt;false&amp;lt;/default&amp;gt;&lt;br /&gt;
     &amp;lt;/boolean&amp;gt;&lt;br /&gt;
     &amp;lt;string-enumeration&amp;gt;&lt;br /&gt;
       &amp;lt;name&amp;gt;smoothingMethod&amp;lt;/name&amp;gt;&lt;br /&gt;
       &amp;lt;longflag&amp;gt;smoothingMethod&amp;lt;/longflag&amp;gt;&lt;br /&gt;
       &amp;lt;description&amp;gt;Selection of smoothing method between Laplace and Taubin&amp;lt;/description&amp;gt;&lt;br /&gt;
       &amp;lt;label&amp;gt;Smoothing method&amp;lt;/label&amp;gt;&lt;br /&gt;
       &amp;lt;default&amp;gt;Taubin&amp;lt;/default&amp;gt;&lt;br /&gt;
       &amp;lt;element&amp;gt;Laplace&amp;lt;/element&amp;gt;&lt;br /&gt;
       &amp;lt;element&amp;gt;Taubin&amp;lt;/element&amp;gt;&lt;br /&gt;
     &amp;lt;/string-enumeration&amp;gt;&lt;br /&gt;
     &amp;lt;boolean&amp;gt;&lt;br /&gt;
       &amp;lt;name&amp;gt;boundarySmoothing&amp;lt;/name&amp;gt;&lt;br /&gt;
       &amp;lt;longflag&amp;gt;boundarySmoothing&amp;lt;/longflag&amp;gt;&lt;br /&gt;
       &amp;lt;description&amp;gt;Toggle allow smoothing of boundary&amp;lt;/description&amp;gt;&lt;br /&gt;
       &amp;lt;label&amp;gt;Boundary smoothing&amp;lt;/label&amp;gt;&lt;br /&gt;
       &amp;lt;default&amp;gt;true&amp;lt;/default&amp;gt;&lt;br /&gt;
     &amp;lt;/boolean&amp;gt;&lt;br /&gt;
     &amp;lt;integer&amp;gt;&lt;br /&gt;
       &amp;lt;name&amp;gt;laplaceIterations&amp;lt;/name&amp;gt;&lt;br /&gt;
       &amp;lt;longflag&amp;gt;laplaceIterations&amp;lt;/longflag&amp;gt;&lt;br /&gt;
       &amp;lt;description&amp;gt;Number of iterations for the Laplace smoothing method&amp;lt;/description&amp;gt;&lt;br /&gt;
       &amp;lt;label&amp;gt;Laplace number of iterations&amp;lt;/label&amp;gt;&lt;br /&gt;
       &amp;lt;default&amp;gt;10&amp;lt;/default&amp;gt;&lt;br /&gt;
     &amp;lt;/integer&amp;gt;&lt;br /&gt;
     &amp;lt;double&amp;gt;&lt;br /&gt;
       &amp;lt;name&amp;gt;laplaceRelaxation&amp;lt;/name&amp;gt;&lt;br /&gt;
       &amp;lt;longflag&amp;gt;laplaceRelaxation&amp;lt;/longflag&amp;gt;&lt;br /&gt;
       &amp;lt;description&amp;gt;Relaxation factor value for the Laplace smoothing method&amp;lt;/description&amp;gt;&lt;br /&gt;
       &amp;lt;label&amp;gt;Laplace relaxation factor&amp;lt;/label&amp;gt;&lt;br /&gt;
       &amp;lt;default&amp;gt;0.1&amp;lt;/default&amp;gt;&lt;br /&gt;
     &amp;lt;/double&amp;gt;&lt;br /&gt;
     &amp;lt;integer&amp;gt;&lt;br /&gt;
       &amp;lt;name&amp;gt;taubinIterations&amp;lt;/name&amp;gt;&lt;br /&gt;
       &amp;lt;longflag&amp;gt;taubinIterations&amp;lt;/longflag&amp;gt;&lt;br /&gt;
       &amp;lt;description&amp;gt;Number of iterations for the Taubin smoothing method&amp;lt;/description&amp;gt;&lt;br /&gt;
       &amp;lt;label&amp;gt;Taubin number of iterations&amp;lt;/label&amp;gt;&lt;br /&gt;
       &amp;lt;default&amp;gt;10&amp;lt;/default&amp;gt;&lt;br /&gt;
     &amp;lt;/integer&amp;gt;&lt;br /&gt;
     &amp;lt;double&amp;gt;&lt;br /&gt;
       &amp;lt;name&amp;gt;taubinPassband&amp;lt;/name&amp;gt;&lt;br /&gt;
       &amp;lt;longflag&amp;gt;taubinPassband&amp;lt;/longflag&amp;gt;&lt;br /&gt;
       &amp;lt;description&amp;gt;Passband value for the Taubin smoothing method&amp;lt;/description&amp;gt;&lt;br /&gt;
       &amp;lt;label&amp;gt;Taubin passband&amp;lt;/label&amp;gt;&lt;br /&gt;
       &amp;lt;default&amp;gt;0.1&amp;lt;/default&amp;gt;&lt;br /&gt;
     &amp;lt;/double&amp;gt;&lt;br /&gt;
   &amp;lt;/parameters&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
   &amp;lt;parameters&amp;gt;&lt;br /&gt;
     &amp;lt;label&amp;gt;Surface Normals&amp;lt;/label&amp;gt;&lt;br /&gt;
     &amp;lt;description&amp;gt;Parameters for surface normals&amp;lt;/description&amp;gt;&lt;br /&gt;
     &amp;lt;boolean&amp;gt;&lt;br /&gt;
       &amp;lt;name&amp;gt;normalsEnabled&amp;lt;/name&amp;gt;&lt;br /&gt;
       &amp;lt;longflag&amp;gt;normalsEnabled&amp;lt;/longflag&amp;gt;&lt;br /&gt;
       &amp;lt;description&amp;gt;Toggle normals&amp;lt;/description&amp;gt;&lt;br /&gt;
       &amp;lt;label&amp;gt;Enabled&amp;lt;/label&amp;gt;&lt;br /&gt;
       &amp;lt;default&amp;gt;false&amp;lt;/default&amp;gt;&lt;br /&gt;
     &amp;lt;/boolean&amp;gt;&lt;br /&gt;
     &amp;lt;boolean&amp;gt;&lt;br /&gt;
       &amp;lt;name&amp;gt;flipNormals&amp;lt;/name&amp;gt;&lt;br /&gt;
       &amp;lt;longflag&amp;gt;flipNormals&amp;lt;/longflag&amp;gt;&lt;br /&gt;
       &amp;lt;description&amp;gt;Toggle flip normals after computing&amp;lt;/description&amp;gt;&lt;br /&gt;
       &amp;lt;label&amp;gt;Flip normals&amp;lt;/label&amp;gt;&lt;br /&gt;
       &amp;lt;default&amp;gt;false&amp;lt;/default&amp;gt;&lt;br /&gt;
     &amp;lt;/boolean&amp;gt;&lt;br /&gt;
     &amp;lt;boolean&amp;gt;&lt;br /&gt;
       &amp;lt;name&amp;gt;splitting&amp;lt;/name&amp;gt;&lt;br /&gt;
       &amp;lt;longflag&amp;gt;splitting&amp;lt;/longflag&amp;gt;&lt;br /&gt;
       &amp;lt;description&amp;gt;Toggle splitting surface based on feature angle&amp;lt;/description&amp;gt;&lt;br /&gt;
       &amp;lt;label&amp;gt;Splitting&amp;lt;/label&amp;gt;&lt;br /&gt;
       &amp;lt;default&amp;gt;false&amp;lt;/default&amp;gt;&lt;br /&gt;
     &amp;lt;/boolean&amp;gt;&lt;br /&gt;
     &amp;lt;double&amp;gt;&lt;br /&gt;
       &amp;lt;name&amp;gt;featureAngle&amp;lt;/name&amp;gt;&lt;br /&gt;
       &amp;lt;longflag&amp;gt;featureAngle&amp;lt;/longflag&amp;gt;&lt;br /&gt;
       &amp;lt;description&amp;gt;Feature angle value for surface splitting&amp;lt;/description&amp;gt;&lt;br /&gt;
       &amp;lt;label&amp;gt;Feature angle&amp;lt;/label&amp;gt;&lt;br /&gt;
       &amp;lt;default&amp;gt;30&amp;lt;/default&amp;gt;&lt;br /&gt;
       &amp;lt;constraints&amp;gt;&lt;br /&gt;
         &amp;lt;minimum&amp;gt;0&amp;lt;/minimum&amp;gt;&lt;br /&gt;
         &amp;lt;maximum&amp;gt;180&amp;lt;/maximum&amp;gt;&lt;br /&gt;
         &amp;lt;step&amp;gt;1&amp;lt;/step&amp;gt;&lt;br /&gt;
       &amp;lt;/constraints&amp;gt;&lt;br /&gt;
     &amp;lt;/double&amp;gt;&lt;br /&gt;
   &amp;lt;/parameters&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
   &amp;lt;parameters&amp;gt;&lt;br /&gt;
     &amp;lt;label&amp;gt;Surface Cleaner&amp;lt;/label&amp;gt;&lt;br /&gt;
     &amp;lt;description&amp;gt;Parameters for surface cleaner&amp;lt;/description&amp;gt;&lt;br /&gt;
     &amp;lt;boolean&amp;gt;&lt;br /&gt;
       &amp;lt;name&amp;gt;cleanerEnabled&amp;lt;/name&amp;gt;&lt;br /&gt;
       &amp;lt;longflag&amp;gt;cleanerEnabled&amp;lt;/longflag&amp;gt;&lt;br /&gt;
       &amp;lt;description&amp;gt;Toggle cleaner&amp;lt;/description&amp;gt;&lt;br /&gt;
       &amp;lt;label&amp;gt;Enabled&amp;lt;/label&amp;gt;&lt;br /&gt;
       &amp;lt;default&amp;gt;false&amp;lt;/default&amp;gt;&lt;br /&gt;
     &amp;lt;/boolean&amp;gt;&lt;br /&gt;
   &amp;lt;/parameters&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
   &amp;lt;parameters&amp;gt;&lt;br /&gt;
     &amp;lt;label&amp;gt;IO&amp;lt;/label&amp;gt;&lt;br /&gt;
     &amp;lt;description&amp;gt;Input/output parameters&amp;lt;/description&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;geometry&amp;gt;&lt;br /&gt;
       &amp;lt;name&amp;gt;inputSurface&amp;lt;/name&amp;gt;&lt;br /&gt;
       &amp;lt;label&amp;gt;Input Surface&amp;lt;/label&amp;gt;&lt;br /&gt;
       &amp;lt;channel&amp;gt;input&amp;lt;/channel&amp;gt;&lt;br /&gt;
       &amp;lt;index&amp;gt;0&amp;lt;/index&amp;gt;&lt;br /&gt;
       &amp;lt;description&amp;gt;Input surface to be filtered&amp;lt;/description&amp;gt;&lt;br /&gt;
     &amp;lt;/geometry&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;geometry&amp;gt;&lt;br /&gt;
       &amp;lt;name&amp;gt;outputSurface&amp;lt;/name&amp;gt;&lt;br /&gt;
       &amp;lt;label&amp;gt;Output Surface&amp;lt;/label&amp;gt;&lt;br /&gt;
       &amp;lt;channel&amp;gt;output&amp;lt;/channel&amp;gt;&lt;br /&gt;
       &amp;lt;index&amp;gt;1&amp;lt;/index&amp;gt;&lt;br /&gt;
       &amp;lt;description&amp;gt;Output filtered surface&amp;lt;/description&amp;gt;&lt;br /&gt;
     &amp;lt;/geometry&amp;gt;&lt;br /&gt;
   &amp;lt;/parameters&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;/executable&amp;gt;&lt;br /&gt;
 &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 def Execute (inputSurface, outputSurface, \&lt;br /&gt;
     decimationEnabled=False, targetReduction=0.8, boundaryDeletion=True, \&lt;br /&gt;
     smoothingEnabled=False, smoothingMethod=&amp;quot;Taubin&amp;quot;, boundarySmoothing=True, \&lt;br /&gt;
     laplaceIterations=10, laplaceRelaxation=0.1, taubinIterations=10, taubinPassband=0.1, \&lt;br /&gt;
     normalsEnabled=False, flipNormals=False, splitting=False, featureAngle=30.0, \&lt;br /&gt;
     cleanerEnabled=False):&lt;br /&gt;
 &lt;br /&gt;
     Slicer = __import__(&amp;quot;Slicer&amp;quot;)&lt;br /&gt;
     slicer = Slicer.slicer&lt;br /&gt;
     scene = slicer.MRMLScene&lt;br /&gt;
     inputSurface = scene.GetNodeByID(inputSurface)&lt;br /&gt;
     outputSurface = scene.GetNodeByID(outputSurface)&lt;br /&gt;
 &lt;br /&gt;
     surface = inputSurface.GetPolyData()&lt;br /&gt;
 &lt;br /&gt;
     if decimationEnabled:&lt;br /&gt;
         decimation = slicer.vtkDecimatePro()&lt;br /&gt;
         decimation.SetInput(surface)&lt;br /&gt;
         decimation.SetTargetReduction(targetReduction)&lt;br /&gt;
         if boundaryDeletion:&lt;br /&gt;
             decimation.BoundaryVertexDeletionOn()&lt;br /&gt;
         else:&lt;br /&gt;
             decimation.BoundaryVertexDeletionOff()&lt;br /&gt;
         decimation.PreserveTopologyOn()&lt;br /&gt;
         decimation.Update()&lt;br /&gt;
         surface = decimation.GetOutput()&lt;br /&gt;
 &lt;br /&gt;
     if smoothingEnabled:&lt;br /&gt;
         if smoothingMethod == &amp;quot;Laplace&amp;quot;:&lt;br /&gt;
             smoothing = slicer.vtkSmoothPolyDataFilter()&lt;br /&gt;
             smoothing.SetInput(surface)&lt;br /&gt;
             if boundarySmoothing:&lt;br /&gt;
                 smoothing.BoundarySmoothingOn()&lt;br /&gt;
             else:&lt;br /&gt;
                 smoothing.BoundarySmoothingOff()&lt;br /&gt;
             smoothing.SetNumberOfIterations(laplaceIterations)&lt;br /&gt;
             smoothing.SetRelaxationFactor(laplaceRelaxation)&lt;br /&gt;
             smoothing.Update()&lt;br /&gt;
             surface = smoothing.GetOutput()&lt;br /&gt;
         elif smoothingMethod == &amp;quot;Taubin&amp;quot;:&lt;br /&gt;
             smoothing = slicer.vtkWindowedSincPolyDataFilter.New()&lt;br /&gt;
             smoothing.SetInput(surface)&lt;br /&gt;
             if boundarySmoothing:&lt;br /&gt;
                 smoothing.BoundarySmoothingOn()&lt;br /&gt;
             else:&lt;br /&gt;
                 smoothing.BoundarySmoothingOff()&lt;br /&gt;
             smoothing.SetNumberOfIterations(taubinIterations)&lt;br /&gt;
             smoothing.SetPassBand(taubinPassband)&lt;br /&gt;
             smoothing.Update()&lt;br /&gt;
             surface = smoothing.GetOutput()&lt;br /&gt;
 &lt;br /&gt;
     if normalsEnabled:&lt;br /&gt;
         normals = slicer.vtkPolyDataNormals()&lt;br /&gt;
         normals.SetInput(surface)&lt;br /&gt;
         normals.AutoOrientNormalsOn()&lt;br /&gt;
         if flipNormals:&lt;br /&gt;
             normals.FlipNormalsOn()&lt;br /&gt;
         else:&lt;br /&gt;
             normals.FlipNormalsOff()&lt;br /&gt;
         if splitting:&lt;br /&gt;
             normals.SplittingOn()&lt;br /&gt;
             normals.SetFeatureAngle(featureAngle)&lt;br /&gt;
         else:&lt;br /&gt;
             normals.SplittingOff()&lt;br /&gt;
         normals.ConsistencyOn()&lt;br /&gt;
         normals.Update()&lt;br /&gt;
         surface = normals.GetOutput()&lt;br /&gt;
 &lt;br /&gt;
     if cleanerEnabled:&lt;br /&gt;
         cleaner = slicer.vtkCleanPolyData()&lt;br /&gt;
         cleaner.SetInput(surface)&lt;br /&gt;
         cleaner.Update()&lt;br /&gt;
         surface = cleaner.GetOutput()&lt;br /&gt;
 &lt;br /&gt;
     outputSurface.SetAndObservePolyData(surface)&lt;br /&gt;
 &lt;br /&gt;
     return&lt;br /&gt;
&lt;br /&gt;
===GaussianSmooth.py===&lt;br /&gt;
&lt;br /&gt;
This module runs VTK Gaussian smoothing filter on an input image. Note that the Gaussian smoothing directions here are referred to the IJK directions (VTK's vtkImageData is a non-oriented image), but the volume is then placed back in the appropriate RAS reference system. Take this into account when writing CLI modules relying on non-reference system aware libraries.&lt;br /&gt;
&lt;br /&gt;
 XML = &amp;quot;&amp;quot;&amp;quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;executable&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
   &amp;lt;category&amp;gt;Filtering&amp;lt;/category&amp;gt;&lt;br /&gt;
   &amp;lt;title&amp;gt;Python Gaussian Smoothing&amp;lt;/title&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;&lt;br /&gt;
 Apply Gaussian smoothing on a volume.&lt;br /&gt;
 This module uses the implementation given in vtkImageGaussianSmooth.&lt;br /&gt;
 &amp;lt;/description&amp;gt;&lt;br /&gt;
   &amp;lt;version&amp;gt;1.0&amp;lt;/version&amp;gt;&lt;br /&gt;
   &amp;lt;documentation-url&amp;gt;&amp;lt;/documentation-url&amp;gt;&lt;br /&gt;
   &amp;lt;license&amp;gt;&amp;lt;/license&amp;gt;&lt;br /&gt;
   &amp;lt;contributor&amp;gt;Luca Antiga and Daniel Blezek&amp;lt;/contributor&amp;gt;&lt;br /&gt;
   &amp;lt;acknowledgements&amp;gt;&lt;br /&gt;
 This work is part of the National Alliance for Medical Image Computing (NAMIC), funded by the National Institutes of Health through the NIH Roadmap for Medical Research, Grant U54 EB005149. &lt;br /&gt;
 &amp;lt;/acknowledgements&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
   &amp;lt;parameters&amp;gt;&lt;br /&gt;
     &amp;lt;label&amp;gt;Gaussian Smooth Parameters&amp;lt;/label&amp;gt;&lt;br /&gt;
     &amp;lt;description&amp;gt;Parameters for Gaussian smoothing&amp;lt;/description&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;double-vector&amp;gt;&lt;br /&gt;
       &amp;lt;name&amp;gt;standardDeviations&amp;lt;/name&amp;gt;&lt;br /&gt;
       &amp;lt;longflag&amp;gt;standardDeviations&amp;lt;/longflag&amp;gt;&lt;br /&gt;
       &amp;lt;description&amp;gt;Standard deviations in pixel units (ordered as IJK coordinates)&amp;lt;/description&amp;gt;&lt;br /&gt;
       &amp;lt;label&amp;gt;Standard deviations&amp;lt;/label&amp;gt;&lt;br /&gt;
       &amp;lt;default&amp;gt;1,1,1&amp;lt;/default&amp;gt;&lt;br /&gt;
     &amp;lt;/double-vector&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;double-vector&amp;gt;&lt;br /&gt;
       &amp;lt;name&amp;gt;radiusFactors&amp;lt;/name&amp;gt;&lt;br /&gt;
       &amp;lt;longflag&amp;gt;radiusFactors&amp;lt;/longflag&amp;gt;&lt;br /&gt;
       &amp;lt;description&amp;gt;Radius factors (in standard deviation units) for clamping the Gaussian kernel to zero&amp;lt;/description&amp;gt;&lt;br /&gt;
       &amp;lt;label&amp;gt;Radius factors&amp;lt;/label&amp;gt;&lt;br /&gt;
       &amp;lt;default&amp;gt;1.5,1.5,1.5&amp;lt;/default&amp;gt;&lt;br /&gt;
     &amp;lt;/double-vector&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;integer&amp;gt;&lt;br /&gt;
       &amp;lt;name&amp;gt;dimensionality&amp;lt;/name&amp;gt;&lt;br /&gt;
       &amp;lt;longflag&amp;gt;dimensionality&amp;lt;/longflag&amp;gt;&lt;br /&gt;
       &amp;lt;description&amp;gt;Dimensionality of the Gaussian filtering&amp;lt;/description&amp;gt;&lt;br /&gt;
       &amp;lt;label&amp;gt;Dimensionality&amp;lt;/label&amp;gt;&lt;br /&gt;
       &amp;lt;default&amp;gt;3&amp;lt;/default&amp;gt;&lt;br /&gt;
       &amp;lt;constraints&amp;gt;&lt;br /&gt;
         &amp;lt;minimum&amp;gt;2&amp;lt;/minimum&amp;gt;&lt;br /&gt;
         &amp;lt;maximum&amp;gt;3&amp;lt;/maximum&amp;gt;&lt;br /&gt;
       &amp;lt;/constraints&amp;gt;&lt;br /&gt;
     &amp;lt;/integer&amp;gt;&lt;br /&gt;
   &amp;lt;/parameters&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
   &amp;lt;parameters&amp;gt;&lt;br /&gt;
     &amp;lt;label&amp;gt;IO&amp;lt;/label&amp;gt;&lt;br /&gt;
     &amp;lt;description&amp;gt;Input/output parameters&amp;lt;/description&amp;gt;&lt;br /&gt;
     &amp;lt;image&amp;gt;&lt;br /&gt;
       &amp;lt;name&amp;gt;inputVolume&amp;lt;/name&amp;gt;&lt;br /&gt;
       &amp;lt;label&amp;gt;Input Volume&amp;lt;/label&amp;gt;&lt;br /&gt;
       &amp;lt;channel&amp;gt;input&amp;lt;/channel&amp;gt;&lt;br /&gt;
       &amp;lt;index&amp;gt;0&amp;lt;/index&amp;gt;&lt;br /&gt;
       &amp;lt;description&amp;gt;Input volume to be filtered&amp;lt;/description&amp;gt;&lt;br /&gt;
     &amp;lt;/image&amp;gt;&lt;br /&gt;
     &amp;lt;image&amp;gt;&lt;br /&gt;
       &amp;lt;name&amp;gt;outputVolume&amp;lt;/name&amp;gt;&lt;br /&gt;
       &amp;lt;label&amp;gt;Output Volume&amp;lt;/label&amp;gt;&lt;br /&gt;
       &amp;lt;channel&amp;gt;output&amp;lt;/channel&amp;gt;&lt;br /&gt;
       &amp;lt;index&amp;gt;1&amp;lt;/index&amp;gt;&lt;br /&gt;
       &amp;lt;description&amp;gt;Output filtered volume&amp;lt;/description&amp;gt;&lt;br /&gt;
     &amp;lt;/image&amp;gt;&lt;br /&gt;
   &amp;lt;/parameters&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;/executable&amp;gt;&lt;br /&gt;
 &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 def Execute (inputVolume, outputVolume, standardDeviations=[1.0,1.0,1.0], radiusFactors=[1.5,1.5,1.5], dimensionality=3):&lt;br /&gt;
 &lt;br /&gt;
     Slicer = __import__(&amp;quot;Slicer&amp;quot;)&lt;br /&gt;
     slicer = Slicer.slicer&lt;br /&gt;
     scene = slicer.MRMLScene&lt;br /&gt;
     inputVolume = scene.GetNodeByID(inputVolume)&lt;br /&gt;
     outputVolume = scene.GetNodeByID(outputVolume)&lt;br /&gt;
 &lt;br /&gt;
     filter = slicer.vtkImageGaussianSmooth()&lt;br /&gt;
     filter.SetStandardDeviations(*standardDeviations)&lt;br /&gt;
     filter.SetRadiusFactors(*radiusFactors)&lt;br /&gt;
     filter.SetDimensionality(dimensionality)&lt;br /&gt;
     filter.SetInput(inputVolume.GetImageData())&lt;br /&gt;
     filter.Update()&lt;br /&gt;
 &lt;br /&gt;
     outputVolume.SetAndObserveImageData(filter.GetOutput())&lt;br /&gt;
     matrix = slicer.vtkMatrix4x4()&lt;br /&gt;
     inputVolume.GetIJKToRASMatrix(matrix)&lt;br /&gt;
     outputVolume.SetIJKToRASMatrix(matrix)&lt;br /&gt;
 &lt;br /&gt;
     return&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
===GradientAnisotropicDiffusion.py===&lt;br /&gt;
&lt;br /&gt;
This module is yet another version of the ubiquitous GradientAnisotropicDiffusion module. The notable thing of this module is that the filter is implemented in ITK, wrapped in a VTK class using the vtkITK library and made available in Python through Tcl. Enough?&lt;br /&gt;
&lt;br /&gt;
 XML = &amp;quot;&amp;quot;&amp;quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;executable&amp;gt;&lt;br /&gt;
   &amp;lt;category&amp;gt;Filtering&amp;lt;/category&amp;gt;&lt;br /&gt;
   &amp;lt;title&amp;gt;Python Gradient Anisotropic Diffusion&amp;lt;/title&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;&lt;br /&gt;
 Runs gradient anisotropic diffusion on a volume.&lt;br /&gt;
 &lt;br /&gt;
 Anisotropic diffusion methods reduce noise (or unwanted detail) in&lt;br /&gt;
 images while preserving specific image features.  For many&lt;br /&gt;
 applications, there is an assumption that light-dark transitions&lt;br /&gt;
 (edges) are interesting.  Standard isotropic diffusion methods move&lt;br /&gt;
 and blur light-dark boundaries.  Anisotropic diffusion methods are&lt;br /&gt;
 formulated to specifically preserve edges.&lt;br /&gt;
 The conductance term for this implementation is chosen as a function&lt;br /&gt;
 of the gradient magnitude of the image at each point, reducing the&lt;br /&gt;
 strength of diffusion at edge pixels.&lt;br /&gt;
 The numerical implementation of this equation is similar to that&lt;br /&gt;
 described in the Perona-Malik paper, but uses a more robust technique&lt;br /&gt;
 for gradient magnitude estimation and has been generalized to&lt;br /&gt;
 N-dimensions.&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;/description&amp;gt;&lt;br /&gt;
   &amp;lt;version&amp;gt;1.0&amp;lt;/version&amp;gt;&lt;br /&gt;
   &amp;lt;documentation-url&amp;gt;&amp;lt;/documentation-url&amp;gt;&lt;br /&gt;
   &amp;lt;license&amp;gt;&amp;lt;/license&amp;gt;&lt;br /&gt;
   &amp;lt;contributor&amp;gt;Daniel Blezek&amp;lt;/contributor&amp;gt;&lt;br /&gt;
   &amp;lt;acknowledgements&amp;gt;This command module was derived from the Gradient Anisotropic Diffusion CLI example&amp;lt;/acknowledgements&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
   &amp;lt;parameters&amp;gt;&lt;br /&gt;
     &amp;lt;label&amp;gt;Anisotropic Diffusion Parameters&amp;lt;/label&amp;gt;&lt;br /&gt;
     &amp;lt;description&amp;gt;Parameters for the anisotropic diffusion algorithm&amp;lt;/description&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;double&amp;gt;&lt;br /&gt;
       &amp;lt;name&amp;gt;conductance&amp;lt;/name&amp;gt;&lt;br /&gt;
       &amp;lt;longflag&amp;gt;--conductance&amp;lt;/longflag&amp;gt;&lt;br /&gt;
       &amp;lt;description&amp;gt;Conductance&amp;lt;/description&amp;gt;&lt;br /&gt;
       &amp;lt;label&amp;gt;Conductance&amp;lt;/label&amp;gt;&lt;br /&gt;
       &amp;lt;default&amp;gt;1&amp;lt;/default&amp;gt;&lt;br /&gt;
       &amp;lt;constraints&amp;gt;&lt;br /&gt;
         &amp;lt;minimum&amp;gt;0&amp;lt;/minimum&amp;gt;&lt;br /&gt;
         &amp;lt;maximum&amp;gt;10&amp;lt;/maximum&amp;gt;&lt;br /&gt;
         &amp;lt;step&amp;gt;.01&amp;lt;/step&amp;gt;&lt;br /&gt;
       &amp;lt;/constraints&amp;gt;&lt;br /&gt;
     &amp;lt;/double&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;double&amp;gt;&lt;br /&gt;
       &amp;lt;name&amp;gt;timeStep&amp;lt;/name&amp;gt;&lt;br /&gt;
       &amp;lt;longflag&amp;gt;--timeStep&amp;lt;/longflag&amp;gt;&lt;br /&gt;
       &amp;lt;description&amp;gt;Time Step&amp;lt;/description&amp;gt;&lt;br /&gt;
       &amp;lt;label&amp;gt;Time Step&amp;lt;/label&amp;gt;&lt;br /&gt;
       &amp;lt;default&amp;gt;0.0625&amp;lt;/default&amp;gt;&lt;br /&gt;
       &amp;lt;constraints&amp;gt;&lt;br /&gt;
         &amp;lt;minimum&amp;gt;.001&amp;lt;/minimum&amp;gt;&lt;br /&gt;
         &amp;lt;maximum&amp;gt;1&amp;lt;/maximum&amp;gt;&lt;br /&gt;
         &amp;lt;step&amp;gt;.001&amp;lt;/step&amp;gt;&lt;br /&gt;
       &amp;lt;/constraints&amp;gt;&lt;br /&gt;
     &amp;lt;/double&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;integer&amp;gt;&lt;br /&gt;
       &amp;lt;name&amp;gt;numberOfIterations&amp;lt;/name&amp;gt;&lt;br /&gt;
       &amp;lt;longflag&amp;gt;--iterations&amp;lt;/longflag&amp;gt;&lt;br /&gt;
       &amp;lt;description&amp;gt;Number of iterations&amp;lt;/description&amp;gt;&lt;br /&gt;
       &amp;lt;label&amp;gt;Iterations&amp;lt;/label&amp;gt;&lt;br /&gt;
       &amp;lt;default&amp;gt;1&amp;lt;/default&amp;gt;&lt;br /&gt;
       &amp;lt;constraints&amp;gt;&lt;br /&gt;
         &amp;lt;minimum&amp;gt;1&amp;lt;/minimum&amp;gt;&lt;br /&gt;
         &amp;lt;maximum&amp;gt;30&amp;lt;/maximum&amp;gt;&lt;br /&gt;
         &amp;lt;step&amp;gt;1&amp;lt;/step&amp;gt;&lt;br /&gt;
       &amp;lt;/constraints&amp;gt;&lt;br /&gt;
     &amp;lt;/integer&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
   &amp;lt;/parameters&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
   &amp;lt;parameters&amp;gt;&lt;br /&gt;
     &amp;lt;label&amp;gt;IO&amp;lt;/label&amp;gt;&lt;br /&gt;
     &amp;lt;description&amp;gt;Input/output parameters&amp;lt;/description&amp;gt;&lt;br /&gt;
     &amp;lt;image&amp;gt;&lt;br /&gt;
       &amp;lt;name&amp;gt;inputVolume&amp;lt;/name&amp;gt;&lt;br /&gt;
       &amp;lt;label&amp;gt;Input Volume&amp;lt;/label&amp;gt;&lt;br /&gt;
       &amp;lt;channel&amp;gt;input&amp;lt;/channel&amp;gt;&lt;br /&gt;
       &amp;lt;index&amp;gt;0&amp;lt;/index&amp;gt;&lt;br /&gt;
       &amp;lt;description&amp;gt;Input volume to be filtered&amp;lt;/description&amp;gt;&lt;br /&gt;
     &amp;lt;/image&amp;gt;&lt;br /&gt;
     &amp;lt;image&amp;gt;&lt;br /&gt;
       &amp;lt;name&amp;gt;outputVolume&amp;lt;/name&amp;gt;&lt;br /&gt;
       &amp;lt;label&amp;gt;Output Volume&amp;lt;/label&amp;gt;&lt;br /&gt;
       &amp;lt;channel&amp;gt;output&amp;lt;/channel&amp;gt;&lt;br /&gt;
       &amp;lt;index&amp;gt;1&amp;lt;/index&amp;gt;&lt;br /&gt;
       &amp;lt;description&amp;gt;Output filtered volume&amp;lt;/description&amp;gt;&lt;br /&gt;
     &amp;lt;/image&amp;gt;&lt;br /&gt;
   &amp;lt;/parameters&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;/executable&amp;gt;&lt;br /&gt;
 &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
       &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 def Execute ( inputVolume, outputVolume, conductance=1.0, timeStep=0.0625, iterations=1 ):&lt;br /&gt;
     Slicer = __import__ ( &amp;quot;Slicer&amp;quot; );&lt;br /&gt;
     slicer = Slicer.slicer&lt;br /&gt;
     scene = slicer.MRMLScene&lt;br /&gt;
     inputVolume = scene.GetNodeByID(inputVolume)&lt;br /&gt;
     outputVolume = scene.GetNodeByID(outputVolume)&lt;br /&gt;
 &lt;br /&gt;
     filter = slicer.vtkITKGradientAnisotropicDiffusionImageFilter()&lt;br /&gt;
     filter.SetConductanceParameter(conductance)&lt;br /&gt;
     filter.SetTimeStep(timeStep)&lt;br /&gt;
     filter.SetNumberOfIterations(iterations)&lt;br /&gt;
     filter.SetInput(inputVolume.GetImageData())&lt;br /&gt;
     filter.Update()&lt;br /&gt;
     outputVolume.SetAndObserveImageData(filter.GetOutput())&lt;br /&gt;
     filter.SetOutput('')&lt;br /&gt;
     matrix = slicer.vtkMatrix4x4()&lt;br /&gt;
     inputVolume.GetIJKToRASMatrix(matrix)&lt;br /&gt;
     outputVolume.SetIJKToRASMatrix(matrix)&lt;br /&gt;
 &lt;br /&gt;
     return&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===ResampleVolume.py===&lt;br /&gt;
&lt;br /&gt;
This module again shows how to handle reference systems correctly: here we get a volume in a vtkImageData, resample it (note where image spacing is fetched from and how it is handled), and put it back in the scene.&lt;br /&gt;
&lt;br /&gt;
 XML = &amp;quot;&amp;quot;&amp;quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;executable&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
   &amp;lt;category&amp;gt;Converters&amp;lt;/category&amp;gt;&lt;br /&gt;
   &amp;lt;title&amp;gt;Python Resample Volume&amp;lt;/title&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;&lt;br /&gt;
 Resample a volume based on user-specified parameters.&lt;br /&gt;
 &amp;lt;/description&amp;gt;&lt;br /&gt;
   &amp;lt;version&amp;gt;1.0&amp;lt;/version&amp;gt;&lt;br /&gt;
   &amp;lt;documentation-url&amp;gt;&amp;lt;/documentation-url&amp;gt;&lt;br /&gt;
   &amp;lt;license&amp;gt;&amp;lt;/license&amp;gt;&lt;br /&gt;
   &amp;lt;contributor&amp;gt;Luca Antiga and Daniel Blezek&amp;lt;/contributor&amp;gt;&lt;br /&gt;
 &amp;lt;acknowledgements&amp;gt;&lt;br /&gt;
 This work is part of the National Alliance for Medical Image Computing (NAMIC), funded by the National Institutes of Health through the NIH Roadmap for Medical Research, Grant U54 EB005149.&lt;br /&gt;
 &amp;lt;/acknowledgements&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
   &amp;lt;parameters&amp;gt;&lt;br /&gt;
     &amp;lt;label&amp;gt;Resample Parameters&amp;lt;/label&amp;gt;&lt;br /&gt;
     &amp;lt;description&amp;gt;Parameters for resampling&amp;lt;/description&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;string-enumeration&amp;gt;&lt;br /&gt;
       &amp;lt;name&amp;gt;interpolation&amp;lt;/name&amp;gt;&lt;br /&gt;
       &amp;lt;longflag&amp;gt;interpolation&amp;lt;/longflag&amp;gt;&lt;br /&gt;
       &amp;lt;description&amp;gt;Interpolation mode&amp;lt;/description&amp;gt;&lt;br /&gt;
       &amp;lt;label&amp;gt;Interpolation Mode&amp;lt;/label&amp;gt;&lt;br /&gt;
       &amp;lt;default&amp;gt;linear&amp;lt;/default&amp;gt;&lt;br /&gt;
       &amp;lt;element&amp;gt;nearest neighbor&amp;lt;/element&amp;gt;&lt;br /&gt;
       &amp;lt;element&amp;gt;linear&amp;lt;/element&amp;gt;&lt;br /&gt;
       &amp;lt;element&amp;gt;cubic&amp;lt;/element&amp;gt;&lt;br /&gt;
     &amp;lt;/string-enumeration&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;double-vector&amp;gt;&lt;br /&gt;
       &amp;lt;name&amp;gt;outputSpacing&amp;lt;/name&amp;gt;&lt;br /&gt;
       &amp;lt;longflag&amp;gt;outputSpacing&amp;lt;/longflag&amp;gt;&lt;br /&gt;
       &amp;lt;description&amp;gt;Spacing of the output image (in IJK axis ordering)&amp;lt;/description&amp;gt;&lt;br /&gt;
       &amp;lt;label&amp;gt;Output spacing&amp;lt;/label&amp;gt;&lt;br /&gt;
       &amp;lt;default&amp;gt;1,1,1&amp;lt;/default&amp;gt;&lt;br /&gt;
     &amp;lt;/double-vector&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
   &amp;lt;/parameters&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
   &amp;lt;parameters&amp;gt;&lt;br /&gt;
     &amp;lt;label&amp;gt;IO&amp;lt;/label&amp;gt;&lt;br /&gt;
     &amp;lt;description&amp;gt;Input/output parameters&amp;lt;/description&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;image&amp;gt;&lt;br /&gt;
       &amp;lt;name&amp;gt;inputVolume&amp;lt;/name&amp;gt;&lt;br /&gt;
       &amp;lt;label&amp;gt;Input Volume&amp;lt;/label&amp;gt;&lt;br /&gt;
       &amp;lt;channel&amp;gt;input&amp;lt;/channel&amp;gt;&lt;br /&gt;
       &amp;lt;index&amp;gt;0&amp;lt;/index&amp;gt;&lt;br /&gt;
       &amp;lt;description&amp;gt;Input volume to be resampled&amp;lt;/description&amp;gt;&lt;br /&gt;
     &amp;lt;/image&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;image&amp;gt;&lt;br /&gt;
       &amp;lt;name&amp;gt;outputVolume&amp;lt;/name&amp;gt;&lt;br /&gt;
       &amp;lt;label&amp;gt;Output Volume&amp;lt;/label&amp;gt;&lt;br /&gt;
       &amp;lt;channel&amp;gt;output&amp;lt;/channel&amp;gt;&lt;br /&gt;
       &amp;lt;index&amp;gt;1&amp;lt;/index&amp;gt;&lt;br /&gt;
       &amp;lt;description&amp;gt;Output resampled volume&amp;lt;/description&amp;gt;&lt;br /&gt;
     &amp;lt;/image&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
   &amp;lt;/parameters&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;/executable&amp;gt;&lt;br /&gt;
 &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 def Execute (inputVolume, outputVolume, interpolation=&amp;quot;linear&amp;quot;, outputSpacing=[1.0,1.0,1.0]):&lt;br /&gt;
 &lt;br /&gt;
     Slicer = __import__(&amp;quot;Slicer&amp;quot;)&lt;br /&gt;
     slicer = Slicer.slicer&lt;br /&gt;
     scene = slicer.MRMLScene&lt;br /&gt;
 &lt;br /&gt;
     inputVolume = scene.GetNodeByID(inputVolume)&lt;br /&gt;
     outputVolume = scene.GetNodeByID(outputVolume)&lt;br /&gt;
 &lt;br /&gt;
     ijkToRASMatrix = slicer.vtkMatrix4x4()&lt;br /&gt;
     inputVolume.GetIJKToRASMatrix(ijkToRASMatrix)&lt;br /&gt;
 &lt;br /&gt;
     inputSpacing = inputVolume.GetSpacing()&lt;br /&gt;
     spacingRatio = [outputSpacing[0]/inputSpacing[0], &lt;br /&gt;
                     outputSpacing[1]/inputSpacing[1], &lt;br /&gt;
                     outputSpacing[2]/inputSpacing[2]]&lt;br /&gt;
 &lt;br /&gt;
     reslice = slicer.vtkImageReslice()&lt;br /&gt;
     reslice.SetInput(inputVolume.GetImageData())&lt;br /&gt;
     if interpolation == &amp;quot;nearest neighbor&amp;quot;:&lt;br /&gt;
         reslice.SetInterpolationModeToNearestNeighbor()&lt;br /&gt;
     elif interpolation == &amp;quot;linear&amp;quot;:&lt;br /&gt;
         reslice.SetInterpolationModeToLinear()&lt;br /&gt;
     elif interpolation == &amp;quot;cubic&amp;quot;:&lt;br /&gt;
         reslice.SetInterpolationModeToCubic()&lt;br /&gt;
     reslice.SetOutputSpacing(*spacingRatio) &lt;br /&gt;
     reslice.Update()&lt;br /&gt;
 &lt;br /&gt;
     changeInformation = slicer.vtkImageChangeInformation()&lt;br /&gt;
     changeInformation.SetInput(reslice.GetOutput())&lt;br /&gt;
     changeInformation.SetOutputOrigin(0.0,0.0,0.0)&lt;br /&gt;
     changeInformation.SetOutputSpacing(1.0,1.0,1.0)&lt;br /&gt;
     changeInformation.Update()&lt;br /&gt;
 &lt;br /&gt;
     outputVolume.SetAndObserveImageData(changeInformation.GetOutput())&lt;br /&gt;
     outputVolume.SetIJKToRASMatrix(ijkToRASMatrix)&lt;br /&gt;
     outputVolume.SetSpacing(*outputSpacing)&lt;br /&gt;
 &lt;br /&gt;
     return&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
===ResliceAsVolume.py===&lt;br /&gt;
&lt;br /&gt;
A variation on the same theme, this module takes a volume and a reference volume and resamples the first on the image grid of the second. Recently this same functionality has been provided in a C++ CLI module, so this one has been relegated here. Again, see how this functionality is achieved using non-RAS aware VTK filters by manually shuffling transform matrices.&lt;br /&gt;
&lt;br /&gt;
  XML = &amp;quot;&amp;quot;&amp;quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;executable&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
   &amp;lt;category&amp;gt;Converters&amp;lt;/category&amp;gt;&lt;br /&gt;
   &amp;lt;title&amp;gt;Python Reslice As Volume&amp;lt;/title&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;&lt;br /&gt;
 Reslice a volume based on the geometry of another volume.&lt;br /&gt;
 &amp;lt;/description&amp;gt;&lt;br /&gt;
   &amp;lt;version&amp;gt;1.0&amp;lt;/version&amp;gt;&lt;br /&gt;
   &amp;lt;documentation-url&amp;gt;&amp;lt;/documentation-url&amp;gt;&lt;br /&gt;
   &amp;lt;license&amp;gt;&amp;lt;/license&amp;gt;&lt;br /&gt;
   &amp;lt;contributor&amp;gt;Luca Antiga and Daniel Blezek&amp;lt;/contributor&amp;gt;&lt;br /&gt;
 &amp;lt;acknowledgements&amp;gt;&lt;br /&gt;
 This work is part of the National Alliance for Medical Image Computing (NAMIC), funded by the National Institutes of Health through the NIH Roadmap for Medical Research, Grant U54 EB005149.&lt;br /&gt;
 &amp;lt;/acknowledgements&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
   &amp;lt;parameters&amp;gt;&lt;br /&gt;
     &amp;lt;label&amp;gt;Reslice Parameters&amp;lt;/label&amp;gt;&lt;br /&gt;
     &amp;lt;description&amp;gt;Parameters for the reslice filter&amp;lt;/description&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;string-enumeration&amp;gt;&lt;br /&gt;
       &amp;lt;name&amp;gt;interpolation&amp;lt;/name&amp;gt;&lt;br /&gt;
       &amp;lt;longflag&amp;gt;interpolation&amp;lt;/longflag&amp;gt;&lt;br /&gt;
       &amp;lt;description&amp;gt;Interpolation mode&amp;lt;/description&amp;gt;&lt;br /&gt;
       &amp;lt;label&amp;gt;Interpolation Mode&amp;lt;/label&amp;gt;&lt;br /&gt;
       &amp;lt;default&amp;gt;linear&amp;lt;/default&amp;gt;&lt;br /&gt;
       &amp;lt;element&amp;gt;nearest neighbor&amp;lt;/element&amp;gt;&lt;br /&gt;
       &amp;lt;element&amp;gt;linear&amp;lt;/element&amp;gt;&lt;br /&gt;
       &amp;lt;element&amp;gt;cubic&amp;lt;/element&amp;gt;&lt;br /&gt;
     &amp;lt;/string-enumeration&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;double&amp;gt;&lt;br /&gt;
       &amp;lt;name&amp;gt;background&amp;lt;/name&amp;gt;&lt;br /&gt;
       &amp;lt;longflag&amp;gt;background&amp;lt;/longflag&amp;gt;&lt;br /&gt;
       &amp;lt;description&amp;gt;Background level for &amp;quot;outside&amp;quot; values&amp;lt;/description&amp;gt;&lt;br /&gt;
       &amp;lt;label&amp;gt;Background&amp;lt;/label&amp;gt;&lt;br /&gt;
       &amp;lt;default&amp;gt;0.0&amp;lt;/default&amp;gt;&lt;br /&gt;
     &amp;lt;/double&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;boolean&amp;gt;&lt;br /&gt;
       &amp;lt;name&amp;gt;autoCrop&amp;lt;/name&amp;gt;&lt;br /&gt;
       &amp;lt;longflag&amp;gt;autoCrop&amp;lt;/longflag&amp;gt;&lt;br /&gt;
       &amp;lt;description&amp;gt;Toggle cropping output to ensure that all the input data is contained in the output&amp;lt;/description&amp;gt;&lt;br /&gt;
       &amp;lt;label&amp;gt;Auto Crop&amp;lt;/label&amp;gt;&lt;br /&gt;
       &amp;lt;default&amp;gt;false&amp;lt;/default&amp;gt;&lt;br /&gt;
     &amp;lt;/boolean&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
   &amp;lt;/parameters&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
   &amp;lt;parameters&amp;gt;&lt;br /&gt;
     &amp;lt;label&amp;gt;IO&amp;lt;/label&amp;gt;&lt;br /&gt;
     &amp;lt;description&amp;gt;Input/output parameters&amp;lt;/description&amp;gt;&lt;br /&gt;
     &amp;lt;image&amp;gt;&lt;br /&gt;
       &amp;lt;name&amp;gt;inputVolume&amp;lt;/name&amp;gt;&lt;br /&gt;
       &amp;lt;label&amp;gt;Input Volume&amp;lt;/label&amp;gt;&lt;br /&gt;
       &amp;lt;channel&amp;gt;input&amp;lt;/channel&amp;gt;&lt;br /&gt;
       &amp;lt;index&amp;gt;0&amp;lt;/index&amp;gt;&lt;br /&gt;
       &amp;lt;description&amp;gt;Input volume to be resampled&amp;lt;/description&amp;gt;&lt;br /&gt;
     &amp;lt;/image&amp;gt;&lt;br /&gt;
     &amp;lt;image&amp;gt;&lt;br /&gt;
       &amp;lt;name&amp;gt;referenceVolume&amp;lt;/name&amp;gt;&lt;br /&gt;
       &amp;lt;label&amp;gt;Reference Volume&amp;lt;/label&amp;gt;&lt;br /&gt;
       &amp;lt;channel&amp;gt;input&amp;lt;/channel&amp;gt;&lt;br /&gt;
       &amp;lt;index&amp;gt;1&amp;lt;/index&amp;gt;&lt;br /&gt;
       &amp;lt;description&amp;gt;Reference volume defining the geometry&amp;lt;/description&amp;gt;&lt;br /&gt;
     &amp;lt;/image&amp;gt;&lt;br /&gt;
     &amp;lt;image&amp;gt;&lt;br /&gt;
       &amp;lt;name&amp;gt;outputVolume&amp;lt;/name&amp;gt;&lt;br /&gt;
       &amp;lt;label&amp;gt;Output Volume&amp;lt;/label&amp;gt;&lt;br /&gt;
       &amp;lt;channel&amp;gt;output&amp;lt;/channel&amp;gt;&lt;br /&gt;
       &amp;lt;index&amp;gt;2&amp;lt;/index&amp;gt;&lt;br /&gt;
       &amp;lt;description&amp;gt;Output resampled volume&amp;lt;/description&amp;gt;&lt;br /&gt;
     &amp;lt;/image&amp;gt;&lt;br /&gt;
   &amp;lt;/parameters&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;/executable&amp;gt;&lt;br /&gt;
 &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 def Execute (inputVolume, referenceVolume, outputVolume, interpolation=&amp;quot;linear&amp;quot;, background=0.0, autoCrop=False):&lt;br /&gt;
 &lt;br /&gt;
     Slicer = __import__(&amp;quot;Slicer&amp;quot;)&lt;br /&gt;
     slicer = Slicer.slicer&lt;br /&gt;
     scene = slicer.MRMLScene&lt;br /&gt;
 &lt;br /&gt;
     inputVolume = scene.GetNodeByID(inputVolume)&lt;br /&gt;
     referenceVolume = scene.GetNodeByID(referenceVolume)&lt;br /&gt;
     outputVolume = scene.GetNodeByID(outputVolume)&lt;br /&gt;
 &lt;br /&gt;
     inputIJKToRASMatrix = slicer.vtkMatrix4x4()&lt;br /&gt;
     inputVolume.GetIJKToRASMatrix(inputIJKToRASMatrix)&lt;br /&gt;
     &lt;br /&gt;
     referenceIJKToRASMatrix = slicer.vtkMatrix4x4()&lt;br /&gt;
     referenceVolume.GetIJKToRASMatrix(referenceIJKToRASMatrix)&lt;br /&gt;
 &lt;br /&gt;
     resliceMatrix = slicer.vtkMatrix4x4()&lt;br /&gt;
     inputIJKToRASMatrix.Invert()&lt;br /&gt;
     resliceMatrix.Multiply4x4(inputIJKToRASMatrix,referenceIJKToRASMatrix,resliceMatrix)&lt;br /&gt;
 &lt;br /&gt;
     resliceTransform = slicer.vtkTransform()&lt;br /&gt;
     resliceTransform.SetMatrix(resliceMatrix)&lt;br /&gt;
 &lt;br /&gt;
     reslice = slicer.vtkImageReslice()&lt;br /&gt;
     reslice.SetInput(inputVolume.GetImageData())&lt;br /&gt;
     reslice.SetResliceTransform(resliceTransform)&lt;br /&gt;
     if interpolation == &amp;quot;nearest neighbor&amp;quot;:&lt;br /&gt;
         reslice.SetInterpolationModeToNearestNeighbor()&lt;br /&gt;
     elif interpolation == &amp;quot;linear&amp;quot;:&lt;br /&gt;
         reslice.SetInterpolationModeToLinear()&lt;br /&gt;
     elif interpolation == &amp;quot;cubic&amp;quot;:&lt;br /&gt;
         reslice.SetInterpolationModeToCubic()&lt;br /&gt;
     reslice.SetBackgroundLevel(background)&lt;br /&gt;
     if autoCrop:&lt;br /&gt;
         reslice.AutoCropOutputOn()&lt;br /&gt;
     else:&lt;br /&gt;
         reslice.AutoCropOutputOff()&lt;br /&gt;
         reslice.SetOutputExtent(*referenceVolume.GetImageData().GetWholeExtent())&lt;br /&gt;
     reslice.Update()&lt;br /&gt;
  &lt;br /&gt;
     outputIJKToRASMatrix = slicer.vtkMatrix4x4()&lt;br /&gt;
 &lt;br /&gt;
     if autoCrop:&lt;br /&gt;
         resliceOrigin = reslice.GetOutput().GetOrigin()&lt;br /&gt;
         originMatrix = slicer.vtkMatrix4x4()&lt;br /&gt;
         originMatrix.Identity()&lt;br /&gt;
         originMatrix.SetElement(0,3,resliceOrigin[0])&lt;br /&gt;
         originMatrix.SetElement(1,3,resliceOrigin[1])&lt;br /&gt;
         originMatrix.SetElement(2,3,resliceOrigin[2])&lt;br /&gt;
         outputIJKToRASMatrix.Multiply4x4(referenceIJKToRASMatrix,originMatrix,outputIJKToRASMatrix)&lt;br /&gt;
     else:&lt;br /&gt;
         outputIJKToRASMatrix.DeepCopy(referenceIJKToRASMatrix)&lt;br /&gt;
 &lt;br /&gt;
     changeInformation = slicer.vtkImageChangeInformation()&lt;br /&gt;
     changeInformation.SetInput(reslice.GetOutput())&lt;br /&gt;
     changeInformation.SetOutputOrigin(0.0,0.0,0.0)&lt;br /&gt;
     changeInformation.SetOutputSpacing(1.0,1.0,1.0)&lt;br /&gt;
     changeInformation.Update()&lt;br /&gt;
 &lt;br /&gt;
     outputVolume.SetAndObserveImageData(changeInformation.GetOutput())&lt;br /&gt;
     outputVolume.SetIJKToRASMatrix(outputIJKToRASMatrix)&lt;br /&gt;
 &lt;br /&gt;
     return&lt;/div&gt;</summary>
		<author><name>Lantiga</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Modules:PythonSurfaceICPRegistration-Documentation-3.4&amp;diff=8892</id>
		<title>Modules:PythonSurfaceICPRegistration-Documentation-3.4</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Modules:PythonSurfaceICPRegistration-Documentation-3.4&amp;diff=8892"/>
		<updated>2009-04-09T15:57:13Z</updated>

		<summary type="html">&lt;p&gt;Lantiga: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Documentation-3.4|Return to Slicer 3.4 Documentation]]&lt;br /&gt;
__NOTOC__&lt;br /&gt;
===Module Name===&lt;br /&gt;
Python ICP Registration&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[Image:PythonICP1.png|thumb|320px|Figure 1: Full model of aneurysm and (unregistered) aneurysm dome]]&lt;br /&gt;
|[[Image:PythonICP2.png|thumb|320px|Figure 2: Aneurysm dome registered on the full model]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== General Information ==&lt;br /&gt;
===Module Type &amp;amp; Category===&lt;br /&gt;
&lt;br /&gt;
Type: CLI&lt;br /&gt;
&lt;br /&gt;
Category: Surface Models&lt;br /&gt;
&lt;br /&gt;
===Authors, Collaborators &amp;amp; Contact===&lt;br /&gt;
* Luca Antiga: Mario Negri Institute&lt;br /&gt;
* Daniel Blezek: Mayo Clinic&lt;br /&gt;
* Contact: Luca Antiga, antiga@marionegri.it&lt;br /&gt;
&lt;br /&gt;
===Module Description===&lt;br /&gt;
This Python module registers an input surface to a target surface using the Iterative Closest Point algorithm using rigid, similarity and affine transforms.&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
&lt;br /&gt;
===Examples, Use Cases &amp;amp; Tutorials===&lt;br /&gt;
&lt;br /&gt;
* The module is appropriate when there is need for aligning surfaces, e.g. for comparison of surface features.&lt;br /&gt;
* Possible improvements are the generation of the registration transform in output (TO DO).&lt;br /&gt;
&lt;br /&gt;
===Quick Tour of Features and Use===&lt;br /&gt;
List all the panels in your interface, their features, what they mean, and how to use them. For instance:&lt;br /&gt;
&lt;br /&gt;
* '''Surface ICP Registration Parameters:'''&lt;br /&gt;
** ''Landmark transform mode'': choose between RigidBody, Similarity or Affine transforms for registration of the surfaces. &lt;br /&gt;
** ''Mean distance mode'': choose between square root of the average of the sum of squares of the closest point distances (RMS) or mean of the sum of absolute values of the closest point distances (Absolute)&lt;br /&gt;
** ''Maximum number of iterations'': number of iterations beyond which the ICP algorithm won't proceed even if the maximum mean distance is above threshold. &lt;br /&gt;
** ''Maximum number of landmarks'': maximum number of surface landmarks used to minimize distance between surfaces&lt;br /&gt;
** ''Start by matching centroids'': initialize the transform by translating the input surface so that its centroid coincides the centroid of the target surface. &lt;br /&gt;
** ''Check mean distance'': force checking distance between every two iterations (slower but more accurate)&lt;br /&gt;
** ''Maximum mean distance'': distance threshold, the algorithm stops when the mean distance between the surfaces is below this threshold &lt;br /&gt;
* '''IO:'''&lt;br /&gt;
** ''Input Surface'': the input (moving) surface&lt;br /&gt;
** ''Target Surface'': the target (not moving) surface&lt;br /&gt;
** ''Output Surface'': the input surface registered on the target surface&lt;br /&gt;
&lt;br /&gt;
== Development ==&lt;br /&gt;
&lt;br /&gt;
===Dependencies===&lt;br /&gt;
&lt;br /&gt;
Python&lt;br /&gt;
&lt;br /&gt;
===Known bugs===&lt;br /&gt;
&lt;br /&gt;
Follow this [http://na-mic.org/Mantis/main_page.php link] to the Slicer3 bug tracker. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Usability issues===&lt;br /&gt;
&lt;br /&gt;
Follow this [http://na-mic.org/Mantis/main_page.php link] to the Slicer3 bug tracker. Please select the '''usability issue category''' when browsing or contributing.&lt;br /&gt;
&lt;br /&gt;
===Source code &amp;amp; documentation===&lt;br /&gt;
&lt;br /&gt;
Follow this [http://viewvc.slicer.org/viewcvs.cgi/trunk/Modules/Python/ link] to the module.&lt;br /&gt;
&lt;br /&gt;
[http://www.na-mic.org/Slicer/Documentation/Slicer3/html/ Links] to documentation generated by doxygen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== More Information == &lt;br /&gt;
&lt;br /&gt;
===Acknowledgment===&lt;br /&gt;
&lt;br /&gt;
===References===&lt;br /&gt;
&lt;br /&gt;
[http://www.vtk.org/doc/nightly/html/classvtkIterativeClosestPointTransform.html vtkIterativeClosestPointTransform]&lt;/div&gt;</summary>
		<author><name>Lantiga</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=File:PythonICP2.png&amp;diff=8891</id>
		<title>File:PythonICP2.png</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=File:PythonICP2.png&amp;diff=8891"/>
		<updated>2009-04-09T15:57:01Z</updated>

		<summary type="html">&lt;p&gt;Lantiga: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Lantiga</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=File:PythonICP1.png&amp;diff=8890</id>
		<title>File:PythonICP1.png</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=File:PythonICP1.png&amp;diff=8890"/>
		<updated>2009-04-09T15:56:43Z</updated>

		<summary type="html">&lt;p&gt;Lantiga: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Lantiga</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Modules:PythonSurfaceConnectivity-Documentation-3.4&amp;diff=8888</id>
		<title>Modules:PythonSurfaceConnectivity-Documentation-3.4</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Modules:PythonSurfaceConnectivity-Documentation-3.4&amp;diff=8888"/>
		<updated>2009-04-09T15:44:42Z</updated>

		<summary type="html">&lt;p&gt;Lantiga: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Documentation-3.4|Return to Slicer 3.4 Documentation]]&lt;br /&gt;
__NOTOC__&lt;br /&gt;
===Module Name===&lt;br /&gt;
Python Surface Connectivity&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[Image:PythonSurfaceConnectivity1.png|thumb|320px|Figure 1: Clipped model of ICA aneurysm]]&lt;br /&gt;
|[[Image:PythonSurfaceConnectivity2.png|thumb|320px|Figure 2: Connnected region closest to user-specified seed is extracted]]&lt;br /&gt;
|[[Image:PythonSurfaceConnectivity3.png|thumb|320px|Figure 2: All connected regions are extracted and one seed is generated for every region]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== General Information ==&lt;br /&gt;
===Module Type &amp;amp; Category===&lt;br /&gt;
&lt;br /&gt;
Type: CLI&lt;br /&gt;
&lt;br /&gt;
Category: Surface Models&lt;br /&gt;
&lt;br /&gt;
===Authors, Collaborators &amp;amp; Contact===&lt;br /&gt;
* Luca Antiga: Mario Negri Institute&lt;br /&gt;
* Daniel Blezek: Mayo Clinic&lt;br /&gt;
* Contact: Luca Antiga, antiga@marionegri.it&lt;br /&gt;
&lt;br /&gt;
===Module Description===&lt;br /&gt;
This Python module takes in input a surface and labels it according to surface connectivity. The module either labels the surface with a different RegionId for each connected region, or it extracts the connected region closest to an input fiducial. Optionally, the module produces a list of fiducials positioned on each connected region and labeled with its RegionId.&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
&lt;br /&gt;
===Examples, Use Cases &amp;amp; Tutorials===&lt;br /&gt;
&lt;br /&gt;
* The module is appropriate when there is need of extracting different disconnected components of a model or label them.&lt;br /&gt;
* For developers: the module is a good example on how Python CLI modules can access and modify the MRML scene (unlike executable and shared library CLI modules)&lt;br /&gt;
&lt;br /&gt;
===Quick Tour of Features and Use===&lt;br /&gt;
List all the panels in your interface, their features, what they mean, and how to use them. For instance:&lt;br /&gt;
&lt;br /&gt;
* '''Surface Connectivity Parameters:'''&lt;br /&gt;
** ''Connectivity mode'': choose between assigning a RegionId to each connected region (AllRegions) or extract the connected region closest to a seed fiducial (ClosestToSeed). &lt;br /&gt;
** ''Enable output fiducials'': enable output of a fiducial list containing one fiducial per connected region labeled with the corresponding RegionId&lt;br /&gt;
* '''IO:'''&lt;br /&gt;
** ''Input Surface'': the input surface&lt;br /&gt;
** ''Output Surface'': the labeled surface (for AllRegions mode) or the labeled portion of the surface closest to the seed (for ClosestToSeed)&lt;br /&gt;
&lt;br /&gt;
== Development ==&lt;br /&gt;
&lt;br /&gt;
===Dependencies===&lt;br /&gt;
&lt;br /&gt;
Python&lt;br /&gt;
&lt;br /&gt;
===Known bugs===&lt;br /&gt;
&lt;br /&gt;
Follow this [http://na-mic.org/Mantis/main_page.php link] to the Slicer3 bug tracker. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Usability issues===&lt;br /&gt;
&lt;br /&gt;
Follow this [http://na-mic.org/Mantis/main_page.php link] to the Slicer3 bug tracker. Please select the '''usability issue category''' when browsing or contributing.&lt;br /&gt;
&lt;br /&gt;
===Source code &amp;amp; documentation===&lt;br /&gt;
&lt;br /&gt;
Follow this [http://viewvc.slicer.org/viewcvs.cgi/trunk/Modules/Python/ link] to the module.&lt;br /&gt;
&lt;br /&gt;
[http://www.na-mic.org/Slicer/Documentation/Slicer3/html/ Links] to documentation generated by doxygen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== More Information == &lt;br /&gt;
&lt;br /&gt;
===Acknowledgment===&lt;br /&gt;
&lt;br /&gt;
===References===&lt;br /&gt;
&lt;br /&gt;
[http://www.vtk.org/doc/nightly/html/classvtkPolyDataConnectivityFilter.html vtkPolyDataConnectivityFilter]&lt;/div&gt;</summary>
		<author><name>Lantiga</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=File:PythonSurfaceConnectivity3.png&amp;diff=8887</id>
		<title>File:PythonSurfaceConnectivity3.png</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=File:PythonSurfaceConnectivity3.png&amp;diff=8887"/>
		<updated>2009-04-09T15:35:51Z</updated>

		<summary type="html">&lt;p&gt;Lantiga: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Lantiga</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=File:PythonSurfaceConnectivity2.png&amp;diff=8886</id>
		<title>File:PythonSurfaceConnectivity2.png</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=File:PythonSurfaceConnectivity2.png&amp;diff=8886"/>
		<updated>2009-04-09T15:35:04Z</updated>

		<summary type="html">&lt;p&gt;Lantiga: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Lantiga</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=File:PythonSurfaceConnectivity1.png&amp;diff=8885</id>
		<title>File:PythonSurfaceConnectivity1.png</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=File:PythonSurfaceConnectivity1.png&amp;diff=8885"/>
		<updated>2009-04-09T15:34:36Z</updated>

		<summary type="html">&lt;p&gt;Lantiga: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Lantiga</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Modules:PythonExplodeVolumeTransform-Documentation-3.4&amp;diff=8792</id>
		<title>Modules:PythonExplodeVolumeTransform-Documentation-3.4</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Modules:PythonExplodeVolumeTransform-Documentation-3.4&amp;diff=8792"/>
		<updated>2009-04-06T15:39:29Z</updated>

		<summary type="html">&lt;p&gt;Lantiga: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Documentation-3.4|Return to Slicer 3.4 Documentation]]&lt;br /&gt;
__NOTOC__&lt;br /&gt;
===Module Name===&lt;br /&gt;
Python Explode Volume Transform&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[Image:ExplodeVolumeTransform1.png|thumb|320px|Figure 1: Volume loaded with RAS orientation (orientation &amp;quot;From file&amp;quot;)]]&lt;br /&gt;
|[[Image:ExplodeVolumeTransform2.png|thumb|320px|Figure 2: Same volume loaded with IJK orientation]]&lt;br /&gt;
|}&lt;br /&gt;
{|&lt;br /&gt;
|[[Image:ExplodeVolumeTransform3.png|thumb|320px|Figure 3: Exploded RAS volume: ijkToRAS transform + IJK volume (see MRML tree widget on the left)]]&lt;br /&gt;
|[[Image:ExplodeVolumeTransform4.png|thumb|320px|Figure 4: The volume loaded with IJK orientation (from Figure 2) moved under the output transform assumes RAS orientation]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== General Information ==&lt;br /&gt;
===Module Type &amp;amp; Category===&lt;br /&gt;
&lt;br /&gt;
Type: CLI&lt;br /&gt;
&lt;br /&gt;
Category: Python Modules&lt;br /&gt;
&lt;br /&gt;
===Authors, Collaborators &amp;amp; Contact===&lt;br /&gt;
* Luca Antiga: Mario Negri Institute&lt;br /&gt;
* Daniel Blezek: Mayo Clinic&lt;br /&gt;
* Contact: Luca Antiga, antiga@marionegri.it&lt;br /&gt;
&lt;br /&gt;
===Module Description===&lt;br /&gt;
This Python module takes a volume in input, extracts its IJKToRAS transform by matrix manipulation, where IJK is the local (VTK-compatible) coordinate system, and generates an IJK-oriented volume in the MRML scene as a child of a IJKToRAS transform node.&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
&lt;br /&gt;
===Examples, Use Cases &amp;amp; Tutorials===&lt;br /&gt;
&lt;br /&gt;
* The module is appropriate when a CLI module can only handle non-oriented images (i.e. images oriented as the XYZ axes), like pure-VTK modules.&lt;br /&gt;
* The typical use is as follows: run a volume through this filter, use the output volume as input for the non-orientation-aware CLI module and place the output of this latter module under the IJKToRAS transform generated by the present module by using the MRML tree widget.&lt;br /&gt;
* Use case: you have data generated from a RAS-agnostic program (e.g. fiber tracts generated in Matlab) and you want to place them in your RAS oriented scene in Slicer. What you do is then to load the MR b0 volume with orientation &amp;quot;From file&amp;quot;, explode its ijkToRAS Transform, load the fiber tracts and place them under the exploded transform in the MRML tree (note that you may have to invert the transform beforehand if what you move under the transform is a polydata, as in this case). You can then (optionally) right-click on the fiber tract nodes and choose &amp;quot;Harden transforms&amp;quot; in order to have the transform applied to the fiber points. At this point you can save them in RAS.&lt;br /&gt;
&lt;br /&gt;
===Quick Tour of Features and Use===&lt;br /&gt;
List all the panels in your interface, their features, what they mean, and how to use them. For instance:&lt;br /&gt;
&lt;br /&gt;
* '''Explode Volume Transform Parameters:'''&lt;br /&gt;
** &amp;quot;Keep origin in volume&amp;quot;: Toggle the inclusion of the origin in the extracted transform rather than in the output volume. The default is to include the origin in the transform, which produces an output volume node with the origin in 0,0,0 (same as if the node was saved and then loaded with the orientation set to IJK).&lt;br /&gt;
&lt;br /&gt;
* '''IO:'''&lt;br /&gt;
** ''Input Volume'': the input volume&lt;br /&gt;
** ''Output Volume'': the output volume, the input volume aligned with the XYZ axes (IJK orientation), set as the child of the corresponding IJKToRAS transform.&lt;br /&gt;
&lt;br /&gt;
== Development ==&lt;br /&gt;
&lt;br /&gt;
===Dependencies===&lt;br /&gt;
&lt;br /&gt;
Python&lt;br /&gt;
&lt;br /&gt;
===Known bugs===&lt;br /&gt;
&lt;br /&gt;
Follow this [http://na-mic.org/Mantis/main_page.php link] to the Slicer3 bug tracker. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Usability issues===&lt;br /&gt;
&lt;br /&gt;
Follow this [http://na-mic.org/Mantis/main_page.php link] to the Slicer3 bug tracker. Please select the '''usability issue category''' when browsing or contributing.&lt;br /&gt;
&lt;br /&gt;
===Source code &amp;amp; documentation===&lt;br /&gt;
&lt;br /&gt;
Follow this [http://viewvc.slicer.org/viewcvs.cgi/trunk/Modules/Python/ link] to the module.&lt;br /&gt;
&lt;br /&gt;
[http://www.na-mic.org/Slicer/Documentation/Slicer3/html/ Links] to documentation generated by doxygen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== More Information == &lt;br /&gt;
&lt;br /&gt;
===Acknowledgment===&lt;br /&gt;
&lt;br /&gt;
===References===&lt;/div&gt;</summary>
		<author><name>Lantiga</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Modules:PythonExplodeVolumeTransform-Documentation-3.4&amp;diff=8791</id>
		<title>Modules:PythonExplodeVolumeTransform-Documentation-3.4</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Modules:PythonExplodeVolumeTransform-Documentation-3.4&amp;diff=8791"/>
		<updated>2009-04-06T15:37:46Z</updated>

		<summary type="html">&lt;p&gt;Lantiga: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Documentation-3.4|Return to Slicer 3.4 Documentation]]&lt;br /&gt;
__NOTOC__&lt;br /&gt;
===Module Name===&lt;br /&gt;
Python Explode Volume Transform&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[Image:ExplodeVolumeTransform1.png|thumb|320px|Figure 1: Volume loaded with RAS orientation (orientation &amp;quot;From file&amp;quot;)]]&lt;br /&gt;
|[[Image:ExplodeVolumeTransform2.png|thumb|320px|Figure 2: Same volume loaded with IJK orientation]]&lt;br /&gt;
|}&lt;br /&gt;
{|&lt;br /&gt;
|[[Image:ExplodeVolumeTransform3.png|thumb|320px|Figure 3: Exploded RAS orientation volume: ijkToRAS transform + IJK volume]]&lt;br /&gt;
|[[Image:ExplodeVolumeTransform4.png|thumb|320px|Figure 4: IJK volume in Figure 2 moved under the output transform assumes RAS orientation]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== General Information ==&lt;br /&gt;
===Module Type &amp;amp; Category===&lt;br /&gt;
&lt;br /&gt;
Type: CLI&lt;br /&gt;
&lt;br /&gt;
Category: Python Modules&lt;br /&gt;
&lt;br /&gt;
===Authors, Collaborators &amp;amp; Contact===&lt;br /&gt;
* Luca Antiga: Mario Negri Institute&lt;br /&gt;
* Daniel Blezek: Mayo Clinic&lt;br /&gt;
* Contact: Luca Antiga, antiga@marionegri.it&lt;br /&gt;
&lt;br /&gt;
===Module Description===&lt;br /&gt;
This Python module takes a volume in input, extracts its IJKToRAS transform by matrix manipulation, where IJK is the local (VTK-compatible) coordinate system, and generates an IJK-oriented volume in the MRML scene as a child of a IJKToRAS transform node.&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
&lt;br /&gt;
===Examples, Use Cases &amp;amp; Tutorials===&lt;br /&gt;
&lt;br /&gt;
* The module is appropriate when a CLI module can only handle non-oriented images (i.e. images oriented as the XYZ axes), like pure-VTK modules.&lt;br /&gt;
* The typical use is as follows: run a volume through this filter, use the output volume as input for the non-orientation-aware CLI module and place the output of this latter module under the IJKToRAS transform generated by the present module by using the MRML tree widget.&lt;br /&gt;
* Use case: you have data generated from a RAS-agnostic program (e.g. fiber tracts generated in Matlab) and you want to place them in your RAS oriented scene in Slicer. What you do is then to load the MR b0 volume with orientation &amp;quot;From file&amp;quot;, explode its ijkToRAS Transform, load the fiber tracts and place them under the exploded transform in the MRML tree (note that you may have to invert the transform beforehand if what you move under the transform is a polydata, as in this case). You can then (optionally) right-click on the fiber tract nodes and choose &amp;quot;Harden transforms&amp;quot; in order to have the transform applied to the fiber points. At this point you can save them in RAS.&lt;br /&gt;
&lt;br /&gt;
===Quick Tour of Features and Use===&lt;br /&gt;
List all the panels in your interface, their features, what they mean, and how to use them. For instance:&lt;br /&gt;
&lt;br /&gt;
* '''Explode Volume Transform Parameters:'''&lt;br /&gt;
** &amp;quot;Keep origin in volume&amp;quot;: Toggle the inclusion of the origin in the extracted transform rather than in the output volume. The default is to include the origin in the transform, which produces an output volume node with the origin in 0,0,0 (same as if the node was saved and then loaded with the orientation set to IJK).&lt;br /&gt;
&lt;br /&gt;
* '''IO:'''&lt;br /&gt;
** ''Input Volume'': the input volume&lt;br /&gt;
** ''Output Volume'': the output volume, the input volume aligned with the XYZ axes (IJK orientation), set as the child of the corresponding IJKToRAS transform.&lt;br /&gt;
&lt;br /&gt;
== Development ==&lt;br /&gt;
&lt;br /&gt;
===Dependencies===&lt;br /&gt;
&lt;br /&gt;
Python&lt;br /&gt;
&lt;br /&gt;
===Known bugs===&lt;br /&gt;
&lt;br /&gt;
Follow this [http://na-mic.org/Mantis/main_page.php link] to the Slicer3 bug tracker. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Usability issues===&lt;br /&gt;
&lt;br /&gt;
Follow this [http://na-mic.org/Mantis/main_page.php link] to the Slicer3 bug tracker. Please select the '''usability issue category''' when browsing or contributing.&lt;br /&gt;
&lt;br /&gt;
===Source code &amp;amp; documentation===&lt;br /&gt;
&lt;br /&gt;
Follow this [http://viewvc.slicer.org/viewcvs.cgi/trunk/Modules/Python/ link] to the module.&lt;br /&gt;
&lt;br /&gt;
[http://www.na-mic.org/Slicer/Documentation/Slicer3/html/ Links] to documentation generated by doxygen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== More Information == &lt;br /&gt;
&lt;br /&gt;
===Acknowledgment===&lt;br /&gt;
&lt;br /&gt;
===References===&lt;/div&gt;</summary>
		<author><name>Lantiga</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Modules:PythonExplodeVolumeTransform-Documentation-3.4&amp;diff=8790</id>
		<title>Modules:PythonExplodeVolumeTransform-Documentation-3.4</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Modules:PythonExplodeVolumeTransform-Documentation-3.4&amp;diff=8790"/>
		<updated>2009-04-06T15:37:07Z</updated>

		<summary type="html">&lt;p&gt;Lantiga: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Documentation-3.4|Return to Slicer 3.4 Documentation]]&lt;br /&gt;
__NOTOC__&lt;br /&gt;
===Module Name===&lt;br /&gt;
Python Explode Volume Transform&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[Image:ExplodeVolumeTransform1.png|thumb|280px|Figure 1: Volume loaded with RAS orientation (orientation &amp;quot;From file&amp;quot;)]]&lt;br /&gt;
|[[Image:ExplodeVolumeTransform2.png|thumb|280px|Figure 2: Same volume loaded with IJK orientation]]&lt;br /&gt;
|}&lt;br /&gt;
{|&lt;br /&gt;
|[[Image:ExplodeVolumeTransform3.png|thumb|280px|Figure 3: Exploded RAS orientation volume: ijkToRAS transform + IJK volume]]&lt;br /&gt;
|[[Image:ExplodeVolumeTransform4.png|thumb|280px|Figure 4: IJK volume in Figure 2 moved under the output transform assumes RAS orientation]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== General Information ==&lt;br /&gt;
===Module Type &amp;amp; Category===&lt;br /&gt;
&lt;br /&gt;
Type: CLI&lt;br /&gt;
&lt;br /&gt;
Category: Python Modules&lt;br /&gt;
&lt;br /&gt;
===Authors, Collaborators &amp;amp; Contact===&lt;br /&gt;
* Luca Antiga: Mario Negri Institute&lt;br /&gt;
* Daniel Blezek: Mayo Clinic&lt;br /&gt;
* Contact: Luca Antiga, antiga@marionegri.it&lt;br /&gt;
&lt;br /&gt;
===Module Description===&lt;br /&gt;
This Python module takes a volume in input, extracts its IJKToRAS transform by matrix manipulation, where IJK is the local (VTK-compatible) coordinate system, and generates an IJK-oriented volume in the MRML scene as a child of a IJKToRAS transform node.&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
&lt;br /&gt;
===Examples, Use Cases &amp;amp; Tutorials===&lt;br /&gt;
&lt;br /&gt;
* The module is appropriate when a CLI module can only handle non-oriented images (i.e. images oriented as the XYZ axes), like pure-VTK modules.&lt;br /&gt;
* The typical use is as follows: run a volume through this filter, use the output volume as input for the non-orientation-aware CLI module and place the output of this latter module under the IJKToRAS transform generated by the present module by using the MRML tree widget.&lt;br /&gt;
* Use case: you have data generated from a RAS-agnostic program (e.g. fiber tracts generated in Matlab) and you want to place them in your RAS oriented scene in Slicer. What you do is then to load the MR b0 volume with orientation &amp;quot;From file&amp;quot;, explode its ijkToRAS Transform, load the fiber tracts and place them under the exploded transform in the MRML tree (note that you may have to invert the transform beforehand if what you move under the transform is a polydata, as in this case). You can then (optionally) right-click on the fiber tract nodes and choose &amp;quot;Harden transforms&amp;quot; in order to have the transform applied to the fiber points. At this point you can save them in RAS.&lt;br /&gt;
&lt;br /&gt;
===Quick Tour of Features and Use===&lt;br /&gt;
List all the panels in your interface, their features, what they mean, and how to use them. For instance:&lt;br /&gt;
&lt;br /&gt;
* '''Explode Volume Transform Parameters:'''&lt;br /&gt;
** &amp;quot;Keep origin in volume&amp;quot;: Toggle the inclusion of the origin in the extracted transform rather than in the output volume. The default is to include the origin in the transform, which produces an output volume node with the origin in 0,0,0 (same as if the node was saved and then loaded with the orientation set to IJK).&lt;br /&gt;
&lt;br /&gt;
* '''IO:'''&lt;br /&gt;
** ''Input Volume'': the input volume&lt;br /&gt;
** ''Output Volume'': the output volume, the input volume aligned with the XYZ axes (IJK orientation), set as the child of the corresponding IJKToRAS transform.&lt;br /&gt;
&lt;br /&gt;
== Development ==&lt;br /&gt;
&lt;br /&gt;
===Dependencies===&lt;br /&gt;
&lt;br /&gt;
Python&lt;br /&gt;
&lt;br /&gt;
===Known bugs===&lt;br /&gt;
&lt;br /&gt;
Follow this [http://na-mic.org/Mantis/main_page.php link] to the Slicer3 bug tracker. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Usability issues===&lt;br /&gt;
&lt;br /&gt;
Follow this [http://na-mic.org/Mantis/main_page.php link] to the Slicer3 bug tracker. Please select the '''usability issue category''' when browsing or contributing.&lt;br /&gt;
&lt;br /&gt;
===Source code &amp;amp; documentation===&lt;br /&gt;
&lt;br /&gt;
Follow this [http://viewvc.slicer.org/viewcvs.cgi/trunk/Modules/Python/ link] to the module.&lt;br /&gt;
&lt;br /&gt;
[http://www.na-mic.org/Slicer/Documentation/Slicer3/html/ Links] to documentation generated by doxygen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== More Information == &lt;br /&gt;
&lt;br /&gt;
===Acknowledgment===&lt;br /&gt;
&lt;br /&gt;
===References===&lt;/div&gt;</summary>
		<author><name>Lantiga</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=File:ExplodeVolumeTransform4.png&amp;diff=8786</id>
		<title>File:ExplodeVolumeTransform4.png</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=File:ExplodeVolumeTransform4.png&amp;diff=8786"/>
		<updated>2009-04-06T15:31:26Z</updated>

		<summary type="html">&lt;p&gt;Lantiga: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Lantiga</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=File:ExplodeVolumeTransform3.png&amp;diff=8785</id>
		<title>File:ExplodeVolumeTransform3.png</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=File:ExplodeVolumeTransform3.png&amp;diff=8785"/>
		<updated>2009-04-06T15:30:56Z</updated>

		<summary type="html">&lt;p&gt;Lantiga: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Lantiga</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=File:ExplodeVolumeTransform2.png&amp;diff=8784</id>
		<title>File:ExplodeVolumeTransform2.png</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=File:ExplodeVolumeTransform2.png&amp;diff=8784"/>
		<updated>2009-04-06T15:30:35Z</updated>

		<summary type="html">&lt;p&gt;Lantiga: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Lantiga</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=File:ExplodeVolumeTransform1.png&amp;diff=8783</id>
		<title>File:ExplodeVolumeTransform1.png</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=File:ExplodeVolumeTransform1.png&amp;diff=8783"/>
		<updated>2009-04-06T15:30:09Z</updated>

		<summary type="html">&lt;p&gt;Lantiga: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Lantiga</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Modules:PythonExplodeVolumeTransform-Documentation-3.4&amp;diff=8774</id>
		<title>Modules:PythonExplodeVolumeTransform-Documentation-3.4</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Modules:PythonExplodeVolumeTransform-Documentation-3.4&amp;diff=8774"/>
		<updated>2009-04-06T12:23:57Z</updated>

		<summary type="html">&lt;p&gt;Lantiga: /* Quick Tour of Features and Use */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Documentation-3.4|Return to Slicer 3.4 Documentation]]&lt;br /&gt;
__NOTOC__&lt;br /&gt;
===Module Name===&lt;br /&gt;
Python Explode Volume Transform&lt;br /&gt;
&lt;br /&gt;
== General Information ==&lt;br /&gt;
===Module Type &amp;amp; Category===&lt;br /&gt;
&lt;br /&gt;
Type: CLI&lt;br /&gt;
&lt;br /&gt;
Category: Python Modules&lt;br /&gt;
&lt;br /&gt;
===Authors, Collaborators &amp;amp; Contact===&lt;br /&gt;
* Luca Antiga: Mario Negri Institute&lt;br /&gt;
* Daniel Blezek: Mayo Clinic&lt;br /&gt;
* Contact: Luca Antiga, antiga@marionegri.it&lt;br /&gt;
&lt;br /&gt;
===Module Description===&lt;br /&gt;
This Python module takes a volume in input, extracts its IJKToRAS transform by matrix manipulation, where IJK is the local (VTK-compatible) coordinate system, and generates an IJK-oriented volume in the MRML scene as a child of a IJKToRAS transform node.&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
&lt;br /&gt;
===Examples, Use Cases &amp;amp; Tutorials===&lt;br /&gt;
&lt;br /&gt;
* The module is appropriate when a CLI module can only handle non-oriented images (i.e. images oriented as the XYZ axes), like pure-VTK modules.&lt;br /&gt;
* The typical use is as follows: run a volume through this filter, use the output volume as input for the non-orientation-aware CLI module and place the output of this latter module under the IJKToRAS transform generated by the present module by using the MRML tree widget.&lt;br /&gt;
* Use case: you have data generated from a RAS-agnostic program (e.g. fiber tracts generated in Matlab) and you want to place them in your RAS oriented scene in Slicer. What you do is then to load the MR b0 volume with orientation &amp;quot;From file&amp;quot;, explode its ijkToRAS Transform, load the fiber tracts and place them under the exploded transform in the MRML tree (note that you may have to invert the transform beforehand if what you move under the transform is a polydata, as in this case). You can then (optionally) right-click on the fiber tract nodes and choose &amp;quot;Harden transforms&amp;quot; in order to have the transform applied to the fiber points. At this point you can save them in RAS.&lt;br /&gt;
&lt;br /&gt;
===Quick Tour of Features and Use===&lt;br /&gt;
List all the panels in your interface, their features, what they mean, and how to use them. For instance:&lt;br /&gt;
&lt;br /&gt;
* '''Explode Volume Transform Parameters:'''&lt;br /&gt;
** &amp;quot;Keep origin in volume&amp;quot;: Toggle the inclusion of the origin in the extracted transform rather than in the output volume. The default is to include the origin in the transform, which produces an output volume node with the origin in 0,0,0 (same as if the node was saved and then loaded with the orientation set to IJK).&lt;br /&gt;
&lt;br /&gt;
* '''IO:'''&lt;br /&gt;
** ''Input Volume'': the input volume&lt;br /&gt;
** ''Output Volume'': the output volume, the input volume aligned with the XYZ axes (IJK orientation), set as the child of the corresponding IJKToRAS transform.&lt;br /&gt;
&lt;br /&gt;
== Development ==&lt;br /&gt;
&lt;br /&gt;
===Dependencies===&lt;br /&gt;
&lt;br /&gt;
Python&lt;br /&gt;
&lt;br /&gt;
===Known bugs===&lt;br /&gt;
&lt;br /&gt;
Follow this [http://na-mic.org/Mantis/main_page.php link] to the Slicer3 bug tracker. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Usability issues===&lt;br /&gt;
&lt;br /&gt;
Follow this [http://na-mic.org/Mantis/main_page.php link] to the Slicer3 bug tracker. Please select the '''usability issue category''' when browsing or contributing.&lt;br /&gt;
&lt;br /&gt;
===Source code &amp;amp; documentation===&lt;br /&gt;
&lt;br /&gt;
Follow this [http://viewvc.slicer.org/viewcvs.cgi/trunk/Modules/Python/ link] to the module.&lt;br /&gt;
&lt;br /&gt;
[http://www.na-mic.org/Slicer/Documentation/Slicer3/html/ Links] to documentation generated by doxygen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== More Information == &lt;br /&gt;
&lt;br /&gt;
===Acknowledgment===&lt;br /&gt;
&lt;br /&gt;
===References===&lt;/div&gt;</summary>
		<author><name>Lantiga</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Modules:PythonExplodeVolumeTransform-Documentation-3.4&amp;diff=8773</id>
		<title>Modules:PythonExplodeVolumeTransform-Documentation-3.4</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Modules:PythonExplodeVolumeTransform-Documentation-3.4&amp;diff=8773"/>
		<updated>2009-04-06T12:20:18Z</updated>

		<summary type="html">&lt;p&gt;Lantiga: /* Examples, Use Cases &amp;amp; Tutorials */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Documentation-3.4|Return to Slicer 3.4 Documentation]]&lt;br /&gt;
__NOTOC__&lt;br /&gt;
===Module Name===&lt;br /&gt;
Python Explode Volume Transform&lt;br /&gt;
&lt;br /&gt;
== General Information ==&lt;br /&gt;
===Module Type &amp;amp; Category===&lt;br /&gt;
&lt;br /&gt;
Type: CLI&lt;br /&gt;
&lt;br /&gt;
Category: Python Modules&lt;br /&gt;
&lt;br /&gt;
===Authors, Collaborators &amp;amp; Contact===&lt;br /&gt;
* Luca Antiga: Mario Negri Institute&lt;br /&gt;
* Daniel Blezek: Mayo Clinic&lt;br /&gt;
* Contact: Luca Antiga, antiga@marionegri.it&lt;br /&gt;
&lt;br /&gt;
===Module Description===&lt;br /&gt;
This Python module takes a volume in input, extracts its IJKToRAS transform by matrix manipulation, where IJK is the local (VTK-compatible) coordinate system, and generates an IJK-oriented volume in the MRML scene as a child of a IJKToRAS transform node.&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
&lt;br /&gt;
===Examples, Use Cases &amp;amp; Tutorials===&lt;br /&gt;
&lt;br /&gt;
* The module is appropriate when a CLI module can only handle non-oriented images (i.e. images oriented as the XYZ axes), like pure-VTK modules.&lt;br /&gt;
* The typical use is as follows: run a volume through this filter, use the output volume as input for the non-orientation-aware CLI module and place the output of this latter module under the IJKToRAS transform generated by the present module by using the MRML tree widget.&lt;br /&gt;
* Use case: you have data generated from a RAS-agnostic program (e.g. fiber tracts generated in Matlab) and you want to place them in your RAS oriented scene in Slicer. What you do is then to load the MR b0 volume with orientation &amp;quot;From file&amp;quot;, explode its ijkToRAS Transform, load the fiber tracts and place them under the exploded transform in the MRML tree (note that you may have to invert the transform beforehand if what you move under the transform is a polydata, as in this case). You can then (optionally) right-click on the fiber tract nodes and choose &amp;quot;Harden transforms&amp;quot; in order to have the transform applied to the fiber points. At this point you can save them in RAS.&lt;br /&gt;
&lt;br /&gt;
===Quick Tour of Features and Use===&lt;br /&gt;
List all the panels in your interface, their features, what they mean, and how to use them. For instance:&lt;br /&gt;
&lt;br /&gt;
* '''IO:'''&lt;br /&gt;
** ''Input Volume'': the input volume&lt;br /&gt;
** ''Output Volume'': the output volume, the input volume with its IJKToRAS transform aligned with the XYZ axes, set as the child of the corresponding XYZToRAS transform.&lt;br /&gt;
&lt;br /&gt;
== Development ==&lt;br /&gt;
&lt;br /&gt;
===Dependencies===&lt;br /&gt;
&lt;br /&gt;
Python&lt;br /&gt;
&lt;br /&gt;
===Known bugs===&lt;br /&gt;
&lt;br /&gt;
Follow this [http://na-mic.org/Mantis/main_page.php link] to the Slicer3 bug tracker. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Usability issues===&lt;br /&gt;
&lt;br /&gt;
Follow this [http://na-mic.org/Mantis/main_page.php link] to the Slicer3 bug tracker. Please select the '''usability issue category''' when browsing or contributing.&lt;br /&gt;
&lt;br /&gt;
===Source code &amp;amp; documentation===&lt;br /&gt;
&lt;br /&gt;
Follow this [http://viewvc.slicer.org/viewcvs.cgi/trunk/Modules/Python/ link] to the module.&lt;br /&gt;
&lt;br /&gt;
[http://www.na-mic.org/Slicer/Documentation/Slicer3/html/ Links] to documentation generated by doxygen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== More Information == &lt;br /&gt;
&lt;br /&gt;
===Acknowledgment===&lt;br /&gt;
&lt;br /&gt;
===References===&lt;/div&gt;</summary>
		<author><name>Lantiga</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Modules:PythonExplodeVolumeTransform-Documentation-3.4&amp;diff=8772</id>
		<title>Modules:PythonExplodeVolumeTransform-Documentation-3.4</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Modules:PythonExplodeVolumeTransform-Documentation-3.4&amp;diff=8772"/>
		<updated>2009-04-06T12:18:17Z</updated>

		<summary type="html">&lt;p&gt;Lantiga: /* Module Description */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Documentation-3.4|Return to Slicer 3.4 Documentation]]&lt;br /&gt;
__NOTOC__&lt;br /&gt;
===Module Name===&lt;br /&gt;
Python Explode Volume Transform&lt;br /&gt;
&lt;br /&gt;
== General Information ==&lt;br /&gt;
===Module Type &amp;amp; Category===&lt;br /&gt;
&lt;br /&gt;
Type: CLI&lt;br /&gt;
&lt;br /&gt;
Category: Python Modules&lt;br /&gt;
&lt;br /&gt;
===Authors, Collaborators &amp;amp; Contact===&lt;br /&gt;
* Luca Antiga: Mario Negri Institute&lt;br /&gt;
* Daniel Blezek: Mayo Clinic&lt;br /&gt;
* Contact: Luca Antiga, antiga@marionegri.it&lt;br /&gt;
&lt;br /&gt;
===Module Description===&lt;br /&gt;
This Python module takes a volume in input, extracts its IJKToRAS transform by matrix manipulation, where IJK is the local (VTK-compatible) coordinate system, and generates an IJK-oriented volume in the MRML scene as a child of a IJKToRAS transform node.&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
&lt;br /&gt;
===Examples, Use Cases &amp;amp; Tutorials===&lt;br /&gt;
&lt;br /&gt;
* The module is appropriate when a CLI module can only handle non-oriented images (i.e. images oriented as the XYZ axes), like pure-VTK modules.&lt;br /&gt;
* The typical use is as follows: run a volume through this filter, use the output volume as input for the non-orientation-aware CLI module and place the output of this latter module under the XYZToRAS transform generated by the present module by using the MRML tree widget.&lt;br /&gt;
* Use case: you have data generated from a RAS-agnostic program (e.g. fiber tracts generated in Matlab) and you want to place them in your RAS oriented scene in Slicer. What you do is then to load the MR b0 volume with orientation &amp;quot;From file&amp;quot;, explode its ijkToRAS Transform, load the fiber tracts and place them under the exploded transform in the MRML tree. You can then optionally right-click on the fiber tract nodes and choose &amp;quot;Harden transforms&amp;quot; in order to have the transform applied to the fiber point, so you can save them in RAS.&lt;br /&gt;
&lt;br /&gt;
===Quick Tour of Features and Use===&lt;br /&gt;
List all the panels in your interface, their features, what they mean, and how to use them. For instance:&lt;br /&gt;
&lt;br /&gt;
* '''IO:'''&lt;br /&gt;
** ''Input Volume'': the input volume&lt;br /&gt;
** ''Output Volume'': the output volume, the input volume with its IJKToRAS transform aligned with the XYZ axes, set as the child of the corresponding XYZToRAS transform.&lt;br /&gt;
&lt;br /&gt;
== Development ==&lt;br /&gt;
&lt;br /&gt;
===Dependencies===&lt;br /&gt;
&lt;br /&gt;
Python&lt;br /&gt;
&lt;br /&gt;
===Known bugs===&lt;br /&gt;
&lt;br /&gt;
Follow this [http://na-mic.org/Mantis/main_page.php link] to the Slicer3 bug tracker. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Usability issues===&lt;br /&gt;
&lt;br /&gt;
Follow this [http://na-mic.org/Mantis/main_page.php link] to the Slicer3 bug tracker. Please select the '''usability issue category''' when browsing or contributing.&lt;br /&gt;
&lt;br /&gt;
===Source code &amp;amp; documentation===&lt;br /&gt;
&lt;br /&gt;
Follow this [http://viewvc.slicer.org/viewcvs.cgi/trunk/Modules/Python/ link] to the module.&lt;br /&gt;
&lt;br /&gt;
[http://www.na-mic.org/Slicer/Documentation/Slicer3/html/ Links] to documentation generated by doxygen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== More Information == &lt;br /&gt;
&lt;br /&gt;
===Acknowledgment===&lt;br /&gt;
&lt;br /&gt;
===References===&lt;/div&gt;</summary>
		<author><name>Lantiga</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Slicer3:Python&amp;diff=7864</id>
		<title>Slicer3:Python</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Slicer3:Python&amp;diff=7864"/>
		<updated>2009-02-11T18:10:13Z</updated>

		<summary type="html">&lt;p&gt;Lantiga: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Status of Python in Slicer ==&lt;br /&gt;
In post-3.2 Slicer3, Python support is currently disabled by default.  However, it is easy to enable and should compile on all tested platform (Mac, Windows, Linux).  Though [http://matplotlib.sourceforge.net/ matplotlib] is still not properly interacting with Slicer3, NumPy and Python support should work well for all platforms.  [[Slicer3:Execution_Model_Documentation:Python | Python command line modules]] are well supported, as is building full [[Modules:Python | GUI modules in Python]].&lt;br /&gt;
&lt;br /&gt;
== Python for scientific computing ==&lt;br /&gt;
Python has a fairly comprehensive package for scientific computing called [http://scipy.org SciPy].  Of main interest to Slicer users/developers is [http://numpy.scipy.org NumPy].  NumPy provides most of the features of the Matlab image processing toolbox and numeric computations, but in an Open Source package.  A compelling reason to use NumPy is the ease of interaction and integration with Slicer3.&lt;br /&gt;
&lt;br /&gt;
== Slicer3 and Python ==&lt;br /&gt;
==== Enabling Python in the Slicer Build====&lt;br /&gt;
# Edit slicer_variables.tcl&lt;br /&gt;
## Change &amp;quot;set ::USE_PYTHON &amp;quot;off&amp;quot;&amp;quot; to &amp;quot;on&amp;quot;&lt;br /&gt;
# '''Optional:''' If you prefer to use your system Python installation, change set ::USE_SYSTEM_PYTHON &amp;quot;false&amp;quot; to &amp;quot;true&amp;quot;&lt;br /&gt;
## This will give an error under Linux and Windows, but it can be easily fixed by adding the system path for Python, just search for &amp;quot;if { $::USE_SYSTEM_PYTHON } {&amp;quot;&lt;br /&gt;
# '''Optional:''' installing SciPy&lt;br /&gt;
## [http://sourceforge.net/project/showfiles.php?group_id=27747 Download] the scipy egg for your platform&lt;br /&gt;
## Unzip the egg in any directory that is part of Slicer's Python path, eg Slicer3-build/lib/Slicer3/Plugins&lt;br /&gt;
## SciPy should now be available in Slicer's Python interpreter&lt;br /&gt;
&lt;br /&gt;
Build Slicer3 using &amp;quot;getbuildtest.tcl&amp;quot;, i.e.:&lt;br /&gt;
&lt;br /&gt;
 Macintosh:Slicer3 blezek$ Scripts/getbuildtest.tcl&lt;br /&gt;
&lt;br /&gt;
A new menu command '''Python Interpreter''' should appear on the Window menu.&lt;br /&gt;
&lt;br /&gt;
[[Image:PythonMenu.png]]&lt;br /&gt;
&lt;br /&gt;
This command should bring up the '''Python Console''' window.&lt;br /&gt;
&lt;br /&gt;
[[Image:PythonConsole.png]]&lt;br /&gt;
&lt;br /&gt;
== Basic Slicer/Python tutorial ==&lt;br /&gt;
''Note: this is initial documentation only, and is subject to change as the API evolves.''&lt;br /&gt;
&lt;br /&gt;
The Slicer Python interpreter has access to all Python modules referenced by the environment variable '''PYTHONPATH''' as well as the '''Slicer''' internal module.  The '''Slicer''' module also supports the interface between Slicer Volume Nodes and NumPy.  It would be instructive for the reader to review the [http://www.scipy.org/Documentation NumPy documentation].  For serious users of NumPy, there is the [http://www.tramy.us/ ''Guide to NumPy''] by Travis Oliphant for purchase.&lt;br /&gt;
&lt;br /&gt;
The main interface to Slicer from Python is through the Slicer Python module.  From there, the Python user can access any of Slicer's global objects and MRML tree.  For example:&lt;br /&gt;
&lt;br /&gt;
  &amp;gt;&amp;gt;&amp;gt; import Slicer&lt;br /&gt;
  &amp;gt;&amp;gt;&amp;gt; Slicer.slicer&lt;br /&gt;
  &amp;lt;Slicer.Slicer object at 0x9f325f0&amp;gt;&lt;br /&gt;
  &amp;gt;&amp;gt;&amp;gt; Slicer.slicer.MRMLScene.GetNumberOfNodesByClass ( 'vtkMRMLVolumeNode' )&lt;br /&gt;
  0&lt;br /&gt;
  &amp;gt;&amp;gt;&amp;gt; &lt;br /&gt;
&lt;br /&gt;
In this case, no 'vtkMRMLVolumeNode's were loaded into Slicer.&lt;br /&gt;
&lt;br /&gt;
VTK objects may be easily constructed, as well as any other object available from the C++ Slicer API.&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; a = Slicer.slicer.vtkPolyData()&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; help ( a )&lt;br /&gt;
 Help on vtkPolyData in module Slicer object:&lt;br /&gt;
 &lt;br /&gt;
 class vtkPolyData(vtkPointSet)&lt;br /&gt;
  |  Method resolution order:&lt;br /&gt;
  |      vtkPolyData&lt;br /&gt;
  |      vtkPointSet&lt;br /&gt;
  |      vtkDataSet&lt;br /&gt;
  &amp;lt;output truncated&amp;gt;&lt;br /&gt;
&lt;br /&gt;
VTK objects created in this manner conform as closely as possible to the VTK Python bindings, but must be created through the slicer object inside the Slicer module.  Each object may be fully subclassed following the [http://www.onlamp.com/pub/a/python/2003/04/17/metaclasses.html meta object pattern].&lt;br /&gt;
&lt;br /&gt;
==== A few details on Python in Slicer ====&lt;br /&gt;
&lt;br /&gt;
Although it is possible to use Slicer within Python, enabling Python in a Slicer build does not trigger Python wrapping of C++ classes. Instead, Python has access to the Slicer API through Tcl. Whenever a constructor for an object is invoked, e.g.&lt;br /&gt;
&lt;br /&gt;
 from Slicer import slicer &lt;br /&gt;
 surface = slicer.vtkPolyData()&lt;br /&gt;
&lt;br /&gt;
to create a VTK object, or&lt;br /&gt;
&lt;br /&gt;
 modelNode = slicer.vtkMRMLModelNode()&lt;br /&gt;
&lt;br /&gt;
to create a MRML node, the Python interpreter tells the Tcl interpreter to instantiate a vtkPolyData or vtkMRMLModelNode (this happens through the Tcl wrappers which are built as part of the basic Slicer) and makes it available to the Python interface. More in detail, Python asks Tcl to illustrate what is a vtkPolyData, what are the parent classes and the methods, creates the whole class hierarchy on the fly, and creates an instance of that object.&lt;br /&gt;
When one calls an object's method, like&lt;br /&gt;
&lt;br /&gt;
 numberOfPoints = surface.GetNumberOfPoints()&lt;br /&gt;
&lt;br /&gt;
the Python interpreter relies the call to the Tcl interpreter and returns the proper return value. Any object available to Tcl is the same object available to Python, and this allows for a great flexibility, as everything lives in a common space.&lt;br /&gt;
&lt;br /&gt;
Writing modules (especially interactive modules) in Python can lead to quite a speed up in the development cycle, since the code is more concise, it requires less file shuffling and, more than anything, it doesn't need to be recompiled (in some cases you don't even need to exit Slicer).&lt;br /&gt;
&lt;br /&gt;
More than this, enabling Python in Slicer opens up the possibility of accessing a very wide range of Python libraries, such as Numpy and Scipy, from within Slicer (interactively or in modules), making the Slicer use cases potentially explode.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== NumPy tutorial ====&lt;br /&gt;
&lt;br /&gt;
Python and NumPy give direct access to the volume data in Slicer by wrapping the image data in a NumPy '''array''' object through the '''.ToArray()''' method on the volume node.  This tutorial assumes you have installed [http://scipy.org/Download SciPy].&lt;br /&gt;
&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; # Access the image data directly&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; from Slicer import slicer&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; nodes = slicer.ListVolumeNodes()&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; t2 = nodes['T2.hdr']&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; data = t2.GetImageData().ToArray()&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print data&lt;br /&gt;
 [[[ 0  0  0 ...,  0  0  0]&lt;br /&gt;
   [ 0  0  1 ...,  0  1  0]&lt;br /&gt;
   [ 0  0  0 ...,  0  0  0]&lt;br /&gt;
   ..., &lt;br /&gt;
   [ 0  8  0 ...,  0  1  2]&lt;br /&gt;
   [ 0  0  0 ...,  4  1  2]&lt;br /&gt;
   [ 0  0  2 ...,  6  0  2]]&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;&amp;lt;&amp;lt; Some output truncated &amp;gt;&amp;gt;&amp;gt; &lt;br /&gt;
 &lt;br /&gt;
  [[ 0  0  0 ...,  0  0  0]&lt;br /&gt;
   [ 0  0  0 ...,  0  0  0]&lt;br /&gt;
   [ 0  0  0 ...,  0  0  0]&lt;br /&gt;
   ..., &lt;br /&gt;
   [ 0  3  3 ...,  0  0  8]&lt;br /&gt;
   [ 0  6  0 ...,  5  3 13]&lt;br /&gt;
   [ 0  5  1 ...,  9  3  8]]]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; # Load the image filtering package from scipy&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; import scipy.ndimage&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; # Filter into a new array&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; temp = scipy.ndimage.gaussian_filter ( data, 2.0 )&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; # Copy back into Slicer&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; data[:] = temp[:]&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; t2.Modified()&lt;br /&gt;
&lt;br /&gt;
Before:&lt;br /&gt;
&lt;br /&gt;
[[Image:PythonBefore.png]]&lt;br /&gt;
&lt;br /&gt;
After:&lt;br /&gt;
&lt;br /&gt;
[[Image:PythonAfter.png]]&lt;br /&gt;
&lt;br /&gt;
==== The NumPy command line module ====&lt;br /&gt;
&lt;br /&gt;
In order to speed up experimentation, a Numpy command line module is available.&lt;br /&gt;
&lt;br /&gt;
It takes in input one or two volume nodes and an output volume node, plus a path to a Python script residing in a text file. &lt;br /&gt;
&lt;br /&gt;
Upon execution, input volume nodes are converted to ndarray variables named iarray and iarray2. The user simply has to put Numpy/Scipy code in the text file, taking care that the output array is stored in a variable named oarray. For example, the file could look like&lt;br /&gt;
&lt;br /&gt;
 import scipy.ndimage&lt;br /&gt;
 oarray = scipy.ndimage.gaussian_filter ( iarray, 2.0 )&lt;br /&gt;
&lt;br /&gt;
The module will take care of taking the content of oarray and storing it in the output volume node (note: differently from the example above, and more in line with Slicer practices, the result of processing is stored in a different output volume, which is selected from the node selector). &lt;br /&gt;
&lt;br /&gt;
To rerun different NumPy code on the input image, simply edit the script file, save it and rerun the module.&lt;br /&gt;
&lt;br /&gt;
== Matplotlib plotting functionality ==&lt;br /&gt;
Matplotlib may be used from within Slicer, but currently (on the Mac) the Tk backend locks up and crashes Slicer.  However, Matplotlib may still be used through one of the non-GUI backends.  More details can be found on the [http://matplotlib.sourceforge.net/ MatPlotLib] pages.&lt;br /&gt;
&lt;br /&gt;
 import matplotlib&lt;br /&gt;
 matplotlib.use ( 'Agg' )&lt;br /&gt;
 from pylab import *&lt;br /&gt;
&lt;br /&gt;
 t1 = arange(0.0, 5.0, 0.1)&lt;br /&gt;
 t2 = arange(0.0, 5.0, 0.02)&lt;br /&gt;
 t3 = arange(0.0, 2.0, 0.01) &lt;br /&gt;
 &lt;br /&gt;
 subplot(211)&lt;br /&gt;
 plot(t1, cos(2*pi*t1)*exp(-t1), 'bo', t2, cos(2*pi*t2)*exp(-t2), 'k')&lt;br /&gt;
 grid(True)&lt;br /&gt;
 title('A tale of 2 subplots')&lt;br /&gt;
 ylabel('Damped')&lt;br /&gt;
 &lt;br /&gt;
 subplot(212)&lt;br /&gt;
 plot(t3, cos(2*pi*t3), 'r--')&lt;br /&gt;
 grid(True)&lt;br /&gt;
 xlabel('time (s)')&lt;br /&gt;
 ylabel('Undamped')&lt;br /&gt;
 savefig ( 'MatplotlibExample.png' )&lt;br /&gt;
&lt;br /&gt;
[[Image:MatplotlibExample.png]]&lt;br /&gt;
&lt;br /&gt;
== Where to go from here ==&lt;br /&gt;
Far from exhaustive, this documentation is intended to whet the appitite of researchers who love the power of Matlab, but feel trapped inside, unable to break out and deploy applications.  This Python interface to Slicer is intended to help!  Here are some selected resources to begin to understand the power of what the combined NumPy - Slicer package offers.&lt;br /&gt;
&lt;br /&gt;
=== Python Language Information ===&lt;br /&gt;
&lt;br /&gt;
* [http://www.python.org/doc/ Python documentation]&lt;br /&gt;
** [http://www.rexx.com/~dkuhlman/python_101/python_101.html Gentle introduction to Python]&lt;br /&gt;
** [http://www.python.org/doc/Intros.html Python introduction]&lt;br /&gt;
&lt;br /&gt;
=== Numpy and Scipy Information ===&lt;br /&gt;
&lt;br /&gt;
* [http://www.scipy.org/NumPy NumPy documentation]&lt;br /&gt;
** [http://www.trelgol.com/ Comprehensive ''Guide to NumPy''] by the current maintainer&lt;br /&gt;
** [http://numeric.scipy.org/numpydoc/numdoc.htm Old NumPy documentation] ([http://numeric.scipy.org/numpy.pdf pdf])&lt;br /&gt;
* [http://www.scipy.org SciPy] [http://scipy.org/Documentation Documentation]&lt;br /&gt;
* [http://matplotlib.sourceforge.net/ MatPlotLib]&lt;br /&gt;
&lt;br /&gt;
=== Writing Slicer Modules in Python ===&lt;br /&gt;
&lt;br /&gt;
Painless Development in Slicer3 with Python, talk given by Demian Wassermann at the LMI, sept. 2008&lt;br /&gt;
* Slides: Introduction to Slicer3 with Python: [[media:PythonSlicer.pdf]]&lt;br /&gt;
* Slides: Numpy indexing and example: [[media:PythonSlicerNumpy.pdf]]&lt;br /&gt;
* See [[Slicer3:Python:DemianExamples | Demian's Example Code]]&lt;br /&gt;
&lt;br /&gt;
Slicer Python breakout session in Salt Lake City, Winter Project Week 2009, by Luca Antiga.&lt;br /&gt;
* Slides: [[media:ProjectWeekBreakout2009_SlicerPython.pdf]]‎&lt;/div&gt;</summary>
		<author><name>Lantiga</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=File:ProjectWeekBreakout2009_SlicerPython.pdf&amp;diff=7863</id>
		<title>File:ProjectWeekBreakout2009 SlicerPython.pdf</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=File:ProjectWeekBreakout2009_SlicerPython.pdf&amp;diff=7863"/>
		<updated>2009-02-11T18:08:46Z</updated>

		<summary type="html">&lt;p&gt;Lantiga: Uploading slides from Python breakout session&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Uploading slides from Python breakout session&lt;/div&gt;</summary>
		<author><name>Lantiga</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Modules:PythonNumpyScript-Documentation-3.4&amp;diff=7859</id>
		<title>Modules:PythonNumpyScript-Documentation-3.4</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Modules:PythonNumpyScript-Documentation-3.4&amp;diff=7859"/>
		<updated>2009-02-11T10:53:54Z</updated>

		<summary type="html">&lt;p&gt;Lantiga: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Documentation-3.4|Return to Slicer 3.4 Documentation]]&lt;br /&gt;
__NOTOC__&lt;br /&gt;
===Module Name===&lt;br /&gt;
Python Numpy Script&lt;br /&gt;
&lt;br /&gt;
== General Information ==&lt;br /&gt;
===Module Type &amp;amp; Category===&lt;br /&gt;
&lt;br /&gt;
Type: CLI&lt;br /&gt;
&lt;br /&gt;
Category: Python Modules&lt;br /&gt;
&lt;br /&gt;
===Authors, Collaborators &amp;amp; Contact===&lt;br /&gt;
* Luca Antiga: Mario Negri Institute&lt;br /&gt;
* Daniel Blezek: Mayo Clinic&lt;br /&gt;
* Contact: Luca Antiga, antiga@marionegri.it&lt;br /&gt;
&lt;br /&gt;
===Module Description===&lt;br /&gt;
This Python module makes it easy to experiment with Numpy in Slicer without interacting with the console and without restarting Slicer when working on the code. The module is meant for experimentation and fast prototyping, and it is not recommended for deployment of full-fledged Python Numpy modules.&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
&lt;br /&gt;
===Examples, Use Cases &amp;amp; Tutorials===&lt;br /&gt;
&lt;br /&gt;
* The module is appropriate when a user wants to try out or rapidly prototype Python code in Slicer, prior to writing full-fledged modules and without need of restarting slicer in-between modifications.&lt;br /&gt;
* The recent availability of an iPython console in Slicer has made it more convenient to use the interactive console for the same tasks.&lt;br /&gt;
&lt;br /&gt;
===Quick Tour of Features and Use===&lt;br /&gt;
List all the panels in your interface, their features, what they mean, and how to use them. For instance:&lt;br /&gt;
&lt;br /&gt;
* '''Python Script Parameters:'''&lt;br /&gt;
** ''Script file'': the (text) file where the Python Numpy code is located&lt;br /&gt;
* '''IO:'''&lt;br /&gt;
** ''Input Volume'': the input volume, to be referenced as variable &amp;quot;iarray&amp;quot; in the Python Numpy code contained in the Script file.&lt;br /&gt;
** ''Input Volume2'': a second input volume, to be referenced as variable &amp;quot;iarray2&amp;quot; in the Python code contained in the Script file.&lt;br /&gt;
** ''Output Volume'': the output volume, to be referenced as variable &amp;quot;oarray&amp;quot; in the Python code contained in the Script file (if the output is a 2D image, the variable name is &amp;quot;oarray2D&amp;quot;. The orientation of the output volume is copied to the orientation of the input volume.&lt;br /&gt;
&lt;br /&gt;
Example of Python Numpy code contained in the Script file is&lt;br /&gt;
&lt;br /&gt;
oarray = iarray[:]&lt;br /&gt;
&lt;br /&gt;
== Development ==&lt;br /&gt;
&lt;br /&gt;
===Dependencies===&lt;br /&gt;
&lt;br /&gt;
Python&lt;br /&gt;
&lt;br /&gt;
===Known bugs===&lt;br /&gt;
&lt;br /&gt;
Follow this [http://na-mic.org/Mantis/main_page.php link] to the Slicer3 bug tracker. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Usability issues===&lt;br /&gt;
&lt;br /&gt;
Follow this [http://na-mic.org/Mantis/main_page.php link] to the Slicer3 bug tracker. Please select the '''usability issue category''' when browsing or contributing.&lt;br /&gt;
&lt;br /&gt;
===Source code &amp;amp; documentation===&lt;br /&gt;
&lt;br /&gt;
Follow this [http://viewvc.slicer.org/viewcvs.cgi/trunk/Modules/Python/ link] to the module.&lt;br /&gt;
&lt;br /&gt;
[http://www.na-mic.org/Slicer/Documentation/Slicer3/html/ Links] to documentation generated by doxygen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== More Information == &lt;br /&gt;
&lt;br /&gt;
===Acknowledgment===&lt;br /&gt;
&lt;br /&gt;
===References===&lt;/div&gt;</summary>
		<author><name>Lantiga</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Modules:PythonScript-Documentation-3.4&amp;diff=7858</id>
		<title>Modules:PythonScript-Documentation-3.4</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Modules:PythonScript-Documentation-3.4&amp;diff=7858"/>
		<updated>2009-02-11T10:50:47Z</updated>

		<summary type="html">&lt;p&gt;Lantiga: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Documentation-3.4|Return to Slicer 3.4 Documentation]]&lt;br /&gt;
__NOTOC__&lt;br /&gt;
===Module Name===&lt;br /&gt;
Python Script&lt;br /&gt;
&lt;br /&gt;
== General Information ==&lt;br /&gt;
===Module Type &amp;amp; Category===&lt;br /&gt;
&lt;br /&gt;
Type: CLI&lt;br /&gt;
&lt;br /&gt;
Category: Python Modules&lt;br /&gt;
&lt;br /&gt;
===Authors, Collaborators &amp;amp; Contact===&lt;br /&gt;
* Luca Antiga: Mario Negri Institute&lt;br /&gt;
* Daniel Blezek: Mayo Clinic&lt;br /&gt;
* Contact: Luca Antiga, antiga@marionegri.it&lt;br /&gt;
&lt;br /&gt;
===Module Description===&lt;br /&gt;
This Python module makes it easy to experiment with Python in Slicer without interacting with the console and without restarting Slicer when working on the code. The module is meant for experimentation and fast prototyping, and it is not recommended for deployment of full-fledged Python modules.&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
&lt;br /&gt;
===Examples, Use Cases &amp;amp; Tutorials===&lt;br /&gt;
&lt;br /&gt;
* The module is appropriate when a user wants to try out or rapidly prototype Python code in Slicer, prior to writing full-fledged modules and without need of restarting slicer in-between modifications.&lt;br /&gt;
* The recent availability of an iPython console in Slicer has made it more convenient to use the interactive console for the same tasks.&lt;br /&gt;
&lt;br /&gt;
===Quick Tour of Features and Use===&lt;br /&gt;
List all the panels in your interface, their features, what they mean, and how to use them. For instance:&lt;br /&gt;
&lt;br /&gt;
* '''Python Script Parameters:'''&lt;br /&gt;
** ''Script file'': the (text) file where the Python code is located&lt;br /&gt;
* '''IO:'''&lt;br /&gt;
** ''Input Surface'': the input surface, to be referenced as variable &amp;quot;inputSurface&amp;quot; in the Python code contained in the Script file.&lt;br /&gt;
** ''Input Volume'': the input volume, to be referenced as variable &amp;quot;inputVolume&amp;quot; in the Python code contained in the Script file.&lt;br /&gt;
** ''Output Surface'': the output surface, to be referenced as variable &amp;quot;outputSurface&amp;quot; in the Python code contained in the Script file.&lt;br /&gt;
** ''Output Volume'': the output volume, to be referenced as variable &amp;quot;outputSurface&amp;quot; in the Python code contained in the Script file.&lt;br /&gt;
&lt;br /&gt;
Example of Python code contained in the Script file is&lt;br /&gt;
&lt;br /&gt;
outputSurface.GetPolyData().DeepCopy(inputSurface.GetPolyData())&lt;br /&gt;
&lt;br /&gt;
== Development ==&lt;br /&gt;
&lt;br /&gt;
===Dependencies===&lt;br /&gt;
&lt;br /&gt;
Python&lt;br /&gt;
&lt;br /&gt;
===Known bugs===&lt;br /&gt;
&lt;br /&gt;
Follow this [http://na-mic.org/Mantis/main_page.php link] to the Slicer3 bug tracker. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Usability issues===&lt;br /&gt;
&lt;br /&gt;
Follow this [http://na-mic.org/Mantis/main_page.php link] to the Slicer3 bug tracker. Please select the '''usability issue category''' when browsing or contributing.&lt;br /&gt;
&lt;br /&gt;
===Source code &amp;amp; documentation===&lt;br /&gt;
&lt;br /&gt;
Follow this [http://viewvc.slicer.org/viewcvs.cgi/trunk/Modules/Python/ link] to the module.&lt;br /&gt;
&lt;br /&gt;
[http://www.na-mic.org/Slicer/Documentation/Slicer3/html/ Links] to documentation generated by doxygen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== More Information == &lt;br /&gt;
&lt;br /&gt;
===Acknowledgment===&lt;br /&gt;
&lt;br /&gt;
===References===&lt;/div&gt;</summary>
		<author><name>Lantiga</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Modules:PythonExplodeVolumeTransform-Documentation-3.4&amp;diff=7857</id>
		<title>Modules:PythonExplodeVolumeTransform-Documentation-3.4</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Modules:PythonExplodeVolumeTransform-Documentation-3.4&amp;diff=7857"/>
		<updated>2009-02-11T10:42:09Z</updated>

		<summary type="html">&lt;p&gt;Lantiga: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Documentation-3.4|Return to Slicer 3.4 Documentation]]&lt;br /&gt;
__NOTOC__&lt;br /&gt;
===Module Name===&lt;br /&gt;
Python Explode Volume Transform&lt;br /&gt;
&lt;br /&gt;
== General Information ==&lt;br /&gt;
===Module Type &amp;amp; Category===&lt;br /&gt;
&lt;br /&gt;
Type: CLI&lt;br /&gt;
&lt;br /&gt;
Category: Python Modules&lt;br /&gt;
&lt;br /&gt;
===Authors, Collaborators &amp;amp; Contact===&lt;br /&gt;
* Luca Antiga: Mario Negri Institute&lt;br /&gt;
* Daniel Blezek: Mayo Clinic&lt;br /&gt;
* Contact: Luca Antiga, antiga@marionegri.it&lt;br /&gt;
&lt;br /&gt;
===Module Description===&lt;br /&gt;
This Python module takes a volume in input, computes its XYZToRAS transform by matrix manipulation, where XYZ is the local (VTK-compatible) coordinate system, and generate a XYZ-oriented volume in the MRML scene as a child of the XYZToRASTransform.&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
&lt;br /&gt;
===Examples, Use Cases &amp;amp; Tutorials===&lt;br /&gt;
&lt;br /&gt;
* The module is appropriate when a CLI module can only handle non-oriented images (i.e. images oriented as the XYZ axes), like pure-VTK modules.&lt;br /&gt;
* The typical use is as follows: run a volume through this filter, use the output volume as input for the non-orientation-aware CLI module and place the output of this latter module under the XYZToRAS transform generated by the present module by using the MRML tree widget.&lt;br /&gt;
&lt;br /&gt;
===Quick Tour of Features and Use===&lt;br /&gt;
List all the panels in your interface, their features, what they mean, and how to use them. For instance:&lt;br /&gt;
&lt;br /&gt;
* '''IO:'''&lt;br /&gt;
** ''Input Volume'': the input volume&lt;br /&gt;
** ''Output Volume'': the output volume, the input volume with its IJKToRAS transform aligned with the XYZ axes, set as the child of the corresponding XYZToRAS transform.&lt;br /&gt;
&lt;br /&gt;
== Development ==&lt;br /&gt;
&lt;br /&gt;
===Dependencies===&lt;br /&gt;
&lt;br /&gt;
Python&lt;br /&gt;
&lt;br /&gt;
===Known bugs===&lt;br /&gt;
&lt;br /&gt;
Follow this [http://na-mic.org/Mantis/main_page.php link] to the Slicer3 bug tracker. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Usability issues===&lt;br /&gt;
&lt;br /&gt;
Follow this [http://na-mic.org/Mantis/main_page.php link] to the Slicer3 bug tracker. Please select the '''usability issue category''' when browsing or contributing.&lt;br /&gt;
&lt;br /&gt;
===Source code &amp;amp; documentation===&lt;br /&gt;
&lt;br /&gt;
Follow this [http://viewvc.slicer.org/viewcvs.cgi/trunk/Modules/Python/ link] to the module.&lt;br /&gt;
&lt;br /&gt;
[http://www.na-mic.org/Slicer/Documentation/Slicer3/html/ Links] to documentation generated by doxygen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== More Information == &lt;br /&gt;
&lt;br /&gt;
===Acknowledgment===&lt;br /&gt;
&lt;br /&gt;
===References===&lt;/div&gt;</summary>
		<author><name>Lantiga</name></author>
		
	</entry>
</feed>