https://www.slicer.org/w/api.php?action=feedcontributions&user=Magalab&feedformat=atomSlicer Wiki - User contributions [en]2024-03-29T08:09:04ZUser contributionsMediaWiki 1.33.0https://www.slicer.org/w/index.php?title=Documentation/4.10/Modules/GPA&diff=61074Documentation/4.10/Modules/GPA2019-04-23T22:03:30Z<p>Magalab: SlicerMorph - Generalized Procrustes Analysis Module</p>
<hr />
<div>SlicerMorph - Generalized Procrustes Analysis Module Placeholder</div>Magalabhttps://www.slicer.org/w/index.php?title=Documentation/Labs/Plotting2DLineSegments&diff=60805Documentation/Labs/Plotting2DLineSegments2019-02-07T05:16:17Z<p>Magalab: </p>
<hr />
<div>We need a way to plot 2D arbitrary line segments to visualize 3D deformation vectors projected on each plane. Below is a code snippet that does this in R using a plotting function called segments which takes a starting coordinate set (x0,y0) and an end coordinate set (x1,y1) and plots a line segments. By convention (x0,y0) is the coordinate of that landmark in the meanshape space, and the segment drawn is the amount it will be displaced by the selected PC (which is also calculated by adding the eigenvectors times some arbitrary scale to the mean coordinate).<br />
<br />
<br />
<pre><br />
if (require(Morpho)) {} else install.packages('Morpho')<br />
if (require(geomorph)) {} else install.packages('geomorph')<br />
<br />
<br />
#define the location to save the temp zipfile <br />
zip = 'c:/tmp/Gorilla_Skull_LMs.zip'<br />
download.file(url = 'https://github.com/SlicerMorph/SampleData/blob/master/Gorilla_Skull_LMs.zip?raw=true', <br />
destfile = zip, method = 'auto', mode='wb')<br />
files = unzip(zip, list = T)$Name<br />
<br />
no.subjects = length(files)<br />
no.landmarks = nrow (Morpho::read.fcsv(unzip(zip, files[1])))<br />
<br />
lms = array(dim = c(no.landmarks, 3, no.subjects))<br />
<br />
for (i in 1:no.subjects) lms[,,i] = Morpho::read.fcsv(unzip(zip, files=files[i]))<br />
<br />
gpa = geomorph::gpagen(lms)<br />
pca = geomorph::plotTangentSpace(gpa$coords)<br />
<br />
par(mfrow=c(2,2))<br />
par(pty="s")<br />
<br />
plot(gpa$consensus[,c(1,2)], pch=20, main ='mean shape')<br />
plot(gpa$consensus[,c(1,2)],pch=20, main = 'XY plane', asp=1)<br />
for (i in 1:41) segments(x0=gpa$consensus[i,1], y0=gpa$consensus[i,2], x1=pca$pc.shapes$PC1max[i,1], y1=pca$pc.shapes$PC1max[i,2], col='red')<br />
for (i in 1:41) segments(x0=gpa$consensus[i,1], y0=gpa$consensus[i,2], x1=pca$pc.shapes$PC2max[i,1], y1=pca$pc.shapes$PC2max[i,2], col='green')<br />
<br />
plot(gpa$consensus[,c(1,3)],pch=20, main = 'XZ plane', asp=1)<br />
for (i in 1:41) segments(x0=gpa$consensus[i,1], y0=gpa$consensus[i,3], x1=pca$pc.shapes$PC1max[i,1], y1=pca$pc.shapes$PC1max[i,3], col='red')<br />
for (i in 1:41) segments(x0=gpa$consensus[i,1], y0=gpa$consensus[i,3], x1=pca$pc.shapes$PC2max[i,1], y1=pca$pc.shapes$PC2max[i,3], col='green')<br />
<br />
plot(gpa$consensus[,c(2,3)],pch=20, main = 'YZ plane', asp=1)<br />
for (i in 1:41) segments(x0=gpa$consensus[i,2], y0=gpa$consensus[i,3], x1=pca$pc.shapes$PC1max[i,2], y1=pca$pc.shapes$PC1max[i,3], col='red')<br />
for (i in 1:41) segments(x0=gpa$consensus[i,2], y0=gpa$consensus[i,3], x1=pca$pc.shapes$PC2max[i,2], y1=pca$pc.shapes$PC2max[i,3], col='green')<br />
</pre><br />
[[File:Rplot02.png|thumb|left|Sample Output]]</div>Magalabhttps://www.slicer.org/w/index.php?title=Documentation/Labs/Plotting2DLineSegments&diff=60804Documentation/Labs/Plotting2DLineSegments2019-02-06T18:36:25Z<p>Magalab: </p>
<hr />
<div>We need a way to plot 2D arbitrary line segments to visualize 3D deformation vectors projected on each plane. Below is a code snippet that does this in R using a plotting function called segments which takes a starting coordinate set (x0,y0) and an end coordinate set (x1,y1) and plots a line segments. By convention (x0,y0) is the coordinate of that landmark in the meanshape space, and the segment drawn is the amount it will be displaced by the selected PC (which is also calculated by adding the eigenvectors times some arbitrary scale to the mean coordinate).<br />
<br />
<br />
<pre><br />
install.packages(c('Morpho', 'geomorph'))<br />
<br />
#define the location to save the temp zipfile <br />
zip = 'c:/tmp/Gorilla_Skull_LMs.zip'<br />
download.file(url = 'https://github.com/SlicerMorph/SampleData/blob/master/Gorilla_Skull_LMs.zip?raw=true', <br />
destfile = zip, method = 'auto', mode='wb')<br />
files = unzip(zip, list = T)$Name<br />
<br />
no.subjects = length(files)<br />
no.landmarks = nrow (Morpho::read.fcsv(unzip(zip, files[1])))<br />
<br />
lms = array(dim = c(no.landmarks, 3, no.subjects))<br />
<br />
for (i in 1:no.subjects) lms[,,i] = Morpho::read.fcsv(unzip(zip, files=files[i]))<br />
<br />
gpa = geomorph::gpagen(lms)<br />
pca = geomorph::plotTangentSpace(gpa$coords)<br />
<br />
par(mfrow=c(2,2))<br />
par(pty="s")<br />
<br />
plot(gpa$consensus[,c(1,2)], pch=20, main ='mean shape')<br />
plot(gpa$consensus[,c(1,2)],pch=20, main = 'XY plane', asp=1)<br />
for (i in 1:41) segments(x0=gpa$consensus[i,1], y0=gpa$consensus[i,2], x1=pca$pc.shapes$PC1max[i,1], y1=pca$pc.shapes$PC1max[i,2], col='red')<br />
for (i in 1:41) segments(x0=gpa$consensus[i,1], y0=gpa$consensus[i,2], x1=pca$pc.shapes$PC2max[i,1], y1=pca$pc.shapes$PC2max[i,2], col='green')<br />
<br />
plot(gpa$consensus[,c(1,3)],pch=20, main = 'XZ plane', asp=1)<br />
for (i in 1:41) segments(x0=gpa$consensus[i,1], y0=gpa$consensus[i,3], x1=pca$pc.shapes$PC1max[i,1], y1=pca$pc.shapes$PC1max[i,3], col='red')<br />
for (i in 1:41) segments(x0=gpa$consensus[i,1], y0=gpa$consensus[i,3], x1=pca$pc.shapes$PC2max[i,1], y1=pca$pc.shapes$PC2max[i,3], col='green')<br />
<br />
plot(gpa$consensus[,c(2,3)],pch=20, main = 'YZ plane', asp=1)<br />
for (i in 1:41) segments(x0=gpa$consensus[i,2], y0=gpa$consensus[i,3], x1=pca$pc.shapes$PC1max[i,2], y1=pca$pc.shapes$PC1max[i,3], col='red')<br />
for (i in 1:41) segments(x0=gpa$consensus[i,2], y0=gpa$consensus[i,3], x1=pca$pc.shapes$PC2max[i,2], y1=pca$pc.shapes$PC2max[i,3], col='green')<br />
</pre><br />
[[File:Rplot02.png|thumb|left|Sample Output]]</div>Magalabhttps://www.slicer.org/w/index.php?title=Documentation/Labs/Plotting2DLineSegments&diff=60803Documentation/Labs/Plotting2DLineSegments2019-02-06T18:28:16Z<p>Magalab: Description of 2D line segments need</p>
<hr />
<div>We need a way to plot 2D arbitrary line segments to visualize 3D deformation vectors projected on each plane. Below is a code snippet that does this in R using a plotting function called segments which takes a starting coordinate set (x0,y0) and an end coordinate set (x1,y1) and plots a line segments. By convention (x0,y0) is the coordinate of that landmark in the meanshape space, and the segment drawn is the amount it will be displaced by the selected PC (which is also calculated by adding the eigenvectors times some arbitrary scale to the mean coordinate).<br />
<br />
<br />
<br />
<br />
install.packages(c('Morpho', 'geomorph'))<br />
<br />
zip = 'c:/tmp/Gorilla_Skull_LMs.zip'<br />
download.file(url = 'https://github.com/SlicerMorph/SampleData/blob/master/Gorilla_Skull_LMs.zip?raw=true', destfile = zip, method = 'auto', mode='wb')<br />
files = unzip(zip, list = T)$Name<br />
<br />
no.subjects = length(files)<br />
no.landmarks = nrow (Morpho::read.fcsv(unzip(zip, files[1])))<br />
<br />
lms = array(dim = c(no.landmarks, 3, no.subjects))<br />
<br />
for (i in 1:no.subjects) lms[,,i] = Morpho::read.fcsv(unzip(zip, files=files[i]))<br />
<br />
gpa = geomorph::gpagen(lms)<br />
pca = geomorph::plotTangentSpace(gpa$coords)<br />
<br />
par(mfrow=c(2,2))<br />
par(pty="s")<br />
<br />
plot(gpa$consensus[,c(1,2)], pch=20, main ='mean shape')<br />
plot(gpa$consensus[,c(1,2)],pch=20, main = 'XY plane', asp=1)<br />
for (i in 1:41) segments(x0=gpa$consensus[i,1], y0=gpa$consensus[i,2], x1=pca$pc.shapes$PC1max[i,1], y1=pca$pc.shapes$PC1max[i,2], col='red')<br />
for (i in 1:41) segments(x0=gpa$consensus[i,1], y0=gpa$consensus[i,2], x1=pca$pc.shapes$PC2max[i,1], y1=pca$pc.shapes$PC2max[i,2], col='green')<br />
<br />
plot(gpa$consensus[,c(1,3)],pch=20, main = 'XZ plane', asp=1)<br />
for (i in 1:41) segments(x0=gpa$consensus[i,1], y0=gpa$consensus[i,3], x1=pca$pc.shapes$PC1max[i,1], y1=pca$pc.shapes$PC1max[i,3], col='red')<br />
for (i in 1:41) segments(x0=gpa$consensus[i,1], y0=gpa$consensus[i,3], x1=pca$pc.shapes$PC2max[i,1], y1=pca$pc.shapes$PC2max[i,3], col='green')<br />
<br />
plot(gpa$consensus[,c(2,3)],pch=20, main = 'YZ plane', asp=1)<br />
for (i in 1:41) segments(x0=gpa$consensus[i,2], y0=gpa$consensus[i,3], x1=pca$pc.shapes$PC1max[i,2], y1=pca$pc.shapes$PC1max[i,3], col='red')<br />
for (i in 1:41) segments(x0=gpa$consensus[i,2], y0=gpa$consensus[i,3], x1=pca$pc.shapes$PC2max[i,2], y1=pca$pc.shapes$PC2max[i,3], col='green')<br />
<br />
[[File:Rplot02.png|thumb|left|Sample Output]]</div>Magalabhttps://www.slicer.org/w/index.php?title=File:Rplot02.png&diff=60802File:Rplot02.png2019-02-06T18:25:28Z<p>Magalab: </p>
<hr />
<div>Sample Output</div>Magalabhttps://www.slicer.org/w/index.php?title=Documentation/Labs&diff=60801Documentation/Labs2019-02-06T18:16:16Z<p>Magalab: Making a new page for missing functionality of plotting 2D arbitrary lines</p>
<hr />
<div>This is the place where we will keep track of our experiments and projects.<br />
<br />
__TOC__<br />
<br />
= On-going =<br />
<br />
== Roadmap ==<br />
* [[{{FULLPAGENAME}}/Slicer5-roadmap|Slicer 5]]<br />
<br />
== Internals ==<br />
* [[{{FULLPAGENAME}}/NrrdReading_Writing_Optimizations|NrrdReading_Writing_Optimizations]]<br />
* [[{{FULLPAGENAME}}/OpenGLFilters|OpenGLFilters]]<br />
* [[{{FULLPAGENAME}}/DeprecatedModules|DeprecatedModules extension]]<br />
* [[{{FULLPAGENAME}}/FHSCompliantDirectoryStructure|FHS compliant directory structure]]<br />
* [[{{FULLPAGENAME}}/FiberTractMeasurementAndVisualization|Fiber Tract measurement and visualization]]<br />
* [[{{FULLPAGENAME}}/VTKWidgets|VTK Widgets improvements]]<br />
* [[{{FULLPAGENAME}}/CLIInfrastructureCleanupAndRefactoring|CLI infrastructure cleanup and refactoring]]<br />
* [[{{FULLPAGENAME}}/UpgradingCompilerInfrastructure|Upgrading Compiler Infrastructure]]<br />
* [[{{FULLPAGENAME}}/ViewInfrastructureImprovements| View Infrastructure Improvements]]<br />
* [[{{FULLPAGENAME}}/CDash Improvements|CDash Improvements]]<br />
* [[{{FULLPAGENAME}}/SlicerBridge|SlicerBridge]]<br />
<!--<br />
* [[{{FULLPAGENAME}}/Display2dText|Display 2D text in viewers]]<br />
--><br />
* [[{{FULLPAGENAME}}/CI-and-NightlyPackagesGeneration|Continuous Integration and Nightly packages build infrastructure]]<br />
* [[{{FULLPAGENAME}}/ParameterSerializer|Parameter Serializer support for CLIs]]<br />
* [[{{FULLPAGENAME}}/Augmented Reality and Virtual Reality support|Augmented Reality and Virtual Reality support]]<br />
* [[{{FULLPAGENAME}}/Infrastucture Status|Infrastucture Status]]<br />
* [[{{FULLPAGENAME}}/Improving Slicer Packages Download Experience|Improving Slicer Packages Download experience]]<br />
* [[{{FULLPAGENAME}}/Sequences|Sequences]]<br />
* [[{{FULLPAGENAME}}/Improving Markups|Improving Markups]]<br />
<br />
== Libraries ==<br />
* [[{{FULLPAGENAME}}/VTK-Orientation|Design: Addition of orientation to VTK data structures]]<br />
<br />
== Python ==<br />
* [[{{FULLPAGENAME}}/CallingPythonMethodsFromCpp|Calling Python methods from Cpp]]<br />
* [[{{FULLPAGENAME}}/IPython|IPython]]<br />
* [[{{FULLPAGENAME}}/PythonCondaBuild|Python conda build]]<br />
<br />
== Compilers & IDE ==<br />
* <br />
<br />
== Virtual Machines ==<br />
* [[{{FULLPAGENAME}}/GPU Virtualization|GPU Virtualization]]<br />
<br />
== Documentation ==<br />
* [[{{FULLPAGENAME}}/DocumentationImprovments|Documentation Improvements (Wiki, website, ...)]]<br />
* [[{{FULLPAGENAME}}/ModulesAndEvents|Intermediate documentation for developers]]<br />
<br />
== Tutorials ==<br />
* [[{{FULLPAGENAME}}/IPythonSlicerTutorials|IPython Slicer Tutorials]]<br />
<br />
== Source code management ==<br />
* [[{{FULLPAGENAME}}/TransitionToGit|Transition to Git]]<br />
<br />
== Extension ==<br />
<br />
* [[{{FULLPAGENAME}}/ExtensionsFrameworkRoadmap|Extensions Framework Roadmap]]<br />
* [[{{FULLPAGENAME}}/CustomSlicerGenerator|Custom Slicer Generator]]<br />
* [[{{FULLPAGENAME}}/ExtensionsMetadata|Improving Extensions Metadata]]<br />
<br />
== Functionalities ==<br />
* [[{{FULLPAGENAME}}/FlyThroughNavigation|Fly-through Navigation]]<br />
* [[{{FULLPAGENAME}}/AutomaticUpdateAndInstallationFramework|Automatic Update and Installation Framework]]<br />
* [[{{FULLPAGENAME}}/ApplicationUsageAnalytics|Application usage analytics]]<br />
* [[{{FULLPAGENAME}}/Plotting2DLineSegments|Plotting 2D Line Segments]]<br />
<br />
== Packaging ==<br />
* [[{{FULLPAGENAME}}/HomebrewCask|Homebrew Cask]<br />
<br />
= Completed =<br />
<br />
* [[Slicer4:Developers|Developer Projects]]<br />
<br />
== Extension ==<br />
* [[{{FULLPAGENAME}}/EasyExtensionContribution|Easy Extension Contribution]] - See [[Documentation/Nightly/Developers/ExtensionWizard|ExtensionWizard]]<br />
<br />
== Internals ==<br />
* [[{{FULLPAGENAME}}/StartupTimeImprovement|Slicer startup time improvement]]<br />
* [[{{FULLPAGENAME}}/CMake-ified Python|CMake-ified Python]] - See [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&revision=21911 r21911], [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&revision=21912 r21912], [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&revision=21913 r21913]<br />
* [[{{FULLPAGENAME}}/NonlinearTransforms|Full support for non-linear transforms]]<br />
<br />
== Libraries ==<br />
* [[{{FULLPAGENAME}}/Qt5-and-VTK8|Migration to Qt5 and VTK8]]<br />
* [[{{FULLPAGENAME}}/OpenCV|Integration with OpenCV]]<br />
* [[{{FULLPAGENAME}}/ITKv4|ITKv4]]<br />
* [[{{FULLPAGENAME}}/Qt484|Qt484]]<br />
* [[{{FULLPAGENAME}}/VTK6|VTK6]]<br />
* [[{{FULLPAGENAME}}/VTK7|VTK7]]<br />
<br />
== Python ==<br />
* [[{{FULLPAGENAME}}/Pip|Pip]]<br />
* [[{{FULLPAGENAME}}/DevelopmentWithGit|Development with Git]] - See [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&revision=21863 r21863], [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&revision=21867 r21867], [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&revision=21869 r21869], [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&revision=21879 r21879], [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&revision=21891 r21891]<br />
* [[{{FULLPAGENAME}}/PythonObserverCallbacks|Python observer callbacks]]<br />
<br />
== Compilers & IDE ==<br />
* [[{{FULLPAGENAME}}/Ninja|Ninja]]<br />
* [[{{FULLPAGENAME}}/VS2012|VS2012]]<br />
* [[{{FULLPAGENAME}}/NUMPY171|Support for Numpy 1.7.1]]<br />
<br />
== Modules ==<br />
* [[{{FULLPAGENAME}}/SimpleFilters|Simple Filters]]<br />
* [[{{FULLPAGENAME}}/Editor|Editor]]<br />
<br />
== Tutorials testing ==<br />
* [[{{FULLPAGENAME}}/TutorialTesting/4.3-Release|4.3 Release]]<br />
<br />
== Debug ==<br />
* [[{{FULLPAGENAME}}/BRAINS_and_ITKv4_issue|BRAINS and ITKv4 issue]]<br />
<br />
== Internals ==<br />
* [[{{FULLPAGENAME}}/Segmentations|Segmentations]]<br />
* [[{{FULLPAGENAME}}/MultiDimensional Data Management|MultiDimensional Data Management]]<br />
* [[{{FULLPAGENAME}}/DICOMExport|DICOM Export]]<br />
* [[{{FULLPAGENAME}}/SliceViewAnnotations|Slice View Annotations]]<br />
* [[{{FULLPAGENAME}}/SubjectHierarchy|Subject hierarchy module and plugins]]<br />
* [[{{FULLPAGENAME}}/I18N|Internationalization]]<br />
* [[{{FULLPAGENAME}}/Units|Units]]<br />
* [https://github.com/TubeTK/SlicerExecutionModel/wiki/SlicerExecutionModel-Parameter-Serialization SlicerExecutionModel Parameter Serialization]<br />
<br />
<br />
= Abandoned =<br />
<br />
* [[{{FULLPAGENAME}}/SlicerConfigAndUseSlicerTweaks|SlicerConfig and UseSlicer Tweaks]]</div>Magalabhttps://www.slicer.org/w/index.php?title=Documentation/Labs/Improving_Markups&diff=59512Documentation/Labs/Improving Markups2018-10-10T19:10:59Z<p>Magalab: /* Proposed Improvements */</p>
<hr />
<div>== Overview ==<br />
The goal of this page is to support improvements to the Markups Module for fiducial placement. This page will document improvements suggested by users and developers and coordinate efforts to address them.<br />
== Proposed Improvements ==<br />
* Landmarks sticking and sliding on surface (this should work both with volume rendered datasets as well as surface models)<br />
* One click 3D angle, length measurements from landmarks (latter is already available)<br />
* Read a template for fiducial labels to be populated from <br />
* Generate blank fiducials. <br />
* Fine control for fiducial placement/modifications by keyboard strokes<br />
* Scale 3D glyphs and 2D points properly with respect to the voxel size of the dataset<br />
<br />
== References ==<br />
* https://discourse.slicer.org/t/a-users-proposal-for-markups-module-enhancements/3362<br />
* https://discourse.slicer.org/t/markups-module-enhancements/4335<br />
* https://issues.slicer.org/view.php?id=3849<br />
* https://issues.slicer.org/view.php?id=3713</div>Magalabhttps://www.slicer.org/w/index.php?title=Documentation/Labs/Improving_Markups&diff=59510Documentation/Labs/Improving Markups2018-10-10T02:59:06Z<p>Magalab: /* References */</p>
<hr />
<div>== Overview ==<br />
The goal of this page is to support improvements to the Markups Module for fiducial placement. This page will document improvements suggested by users and developers and coordinate efforts to address them.<br />
== Proposed Improvements ==<br />
* Landmarks sticking and sliding on surface<br />
* One click 3D angle, length measurements from LMs (latter is already available)<br />
* Read a template for fiducial labels to be populated from <br />
* Generate blank fiducials. <br />
* Fine control for fiducial placement/modifications by keyboard strokes<br />
* Scale 3D glyphs and 2D points properly with respect to the voxel size of the dataset<br />
<br />
== References ==<br />
* https://discourse.slicer.org/t/a-users-proposal-for-markups-module-enhancements/3362<br />
* https://discourse.slicer.org/t/markups-module-enhancements/4335<br />
* https://issues.slicer.org/view.php?id=3849<br />
* https://issues.slicer.org/view.php?id=3713</div>Magalabhttps://www.slicer.org/w/index.php?title=Documentation/Labs/Improving_Markups&diff=59509Documentation/Labs/Improving Markups2018-10-10T02:47:20Z<p>Magalab: /* Proposed Improvements */</p>
<hr />
<div>== Overview ==<br />
The goal of this page is to support improvements to the Markups Module for fiducial placement. This page will document improvements suggested by users and developers and coordinate efforts to address them.<br />
== Proposed Improvements ==<br />
* Landmarks sticking and sliding on surface<br />
* One click 3D angle, length measurements from LMs (latter is already available)<br />
* Read a template for fiducial labels to be populated from <br />
* Generate blank fiducials. <br />
* Fine control for fiducial placement/modifications by keyboard strokes<br />
* Scale 3D glyphs and 2D points properly with respect to the voxel size of the dataset<br />
<br />
== References ==<br />
* https://discourse.slicer.org/t/a-users-proposal-for-markups-module-enhancements/3362<br />
* https://discourse.slicer.org/t/markups-module-enhancements/4335<br />
* https://issues.slicer.org/view.php?id=3849</div>Magalabhttps://www.slicer.org/w/index.php?title=Documentation/Labs/Improving_Markups&diff=59508Documentation/Labs/Improving Markups2018-10-10T02:47:00Z<p>Magalab: Clarified a few of the points and added a couple more.</p>
<hr />
<div>== Overview ==<br />
The goal of this page is to support improvements to the Markups Module for fiducial placement. This page will document improvements suggested by users and developers and coordinate efforts to address them.<br />
== Proposed Improvements ==<br />
* Landmarks sticking and sliding on surface<br />
* One click 3D angle, length measurements from LMs (this is available)<br />
* Read a template for fiducial labels to be populated from <br />
* Generate blank fiducials. <br />
* Fine control for fiducial placement/modifications by keyboard strokes<br />
* Scale 3D glyphs and 2D points properly with respect to the voxel size of the dataset<br />
<br />
== References ==<br />
* https://discourse.slicer.org/t/a-users-proposal-for-markups-module-enhancements/3362<br />
* https://discourse.slicer.org/t/markups-module-enhancements/4335<br />
* https://issues.slicer.org/view.php?id=3849</div>Magalabhttps://www.slicer.org/w/index.php?title=Documentation/Labs/Improving_Markups&diff=59507Documentation/Labs/Improving Markups2018-10-10T02:43:00Z<p>Magalab: /* Proposed Improvements */</p>
<hr />
<div>== Overview ==<br />
The goal of this page is to support improvements to the Markups Module for fiducial placement. This page will document improvements suggested by users and developers and coordinate efforts to address them.<br />
== Proposed Improvements ==<br />
* Landmarks sticking and sliding on surface<br />
* One click 3D angle, length measurements from LMs<br />
* Read a template for LM names, sequence<br />
* Fine control for LM placement<br />
<br />
== References ==<br />
* https://discourse.slicer.org/t/a-users-proposal-for-markups-module-enhancements/3362<br />
* https://discourse.slicer.org/t/markups-module-enhancements/4335<br />
* https://issues.slicer.org/view.php?id=3849</div>Magalabhttps://www.slicer.org/w/index.php?title=Documentation/4.8/Modules/DownsampleImageStack&diff=59481Documentation/4.8/Modules/DownsampleImageStack2018-09-27T20:46:20Z<p>Magalab: Initial creation</p>
<hr />
<div>Murat's Test for DOwnsample Image Stack import function.</div>Magalab