Difference between revisions of "Documentation/Labs/Surface Toolbox update"

From Slicer Wiki
Jump to: navigation, search
Line 15: Line 15:
 
* [http://insight-journal.org/browse/publication/106 KWMeshVisu]: Legacy mesh viewer from the Styner Lab.
 
* [http://insight-journal.org/browse/publication/106 KWMeshVisu]: Legacy mesh viewer from the Styner Lab.
 
* Types of Mesh Operations:
 
* Types of Mesh Operations:
** PairWise Mesh
+
** Multiple Mesh (2+)
** Group Mesh
 
 
** Single Mesh
 
** Single Mesh
 
** MeshToVolume
 
** MeshToVolume
 
** MeshScalar to Mesh
 
** MeshScalar to Mesh
 
** MeshScalar to MeshScalar
 
** MeshScalar to MeshScalar
 +
** MeshScalar Operation
  
 
=== Initial discussions ===
 
=== Initial discussions ===
Line 30: Line 30:
 
<big> subtract: "Subtract mesh from inputmesh, write a KWMeshVisu readable text file"</big>  
 
<big> subtract: "Subtract mesh from inputmesh, write a KWMeshVisu readable text file"</big>  
  
* Type: PairWiseMesh
+
* Type: Multiple Mesh
 
* To-do: NOT KEEP. This functionality is currently available through [[Documentation/Nightly/Extensions/ModelToModelDistance|ModelToModelDistance]]  
 
* To-do: NOT KEEP. This functionality is currently available through [[Documentation/Nightly/Extensions/ModelToModelDistance|ModelToModelDistance]]  
  
Line 47: Line 47:
 
* Type: SingleMesh  
 
* Type: SingleMesh  
 
* To-do: KEEP.  
 
* To-do: KEEP.  
 +
 +
<big> avgMesh : "Compute the average mesh from inputmesh file1, file2..."</big>
 +
 +
* Type: Multiple Mesh
 +
* To-do: KEEP.
 +
 +
<big> ave : "Compute the average vector field from file1, file2... generated with -substract"</big>
 +
 +
* Type: Multiple Mesh (also MeshScalar Operation)
 +
* To-do: KEEP. Turn into a new MeshScalar operator. Given several Meshes with MeshScalars that are named the same way, it will allow averaging them and creating a new scalar map.
 +
 +
<big> normave : "Works as the \"-ave\" option, but the average vector are projected on the normal at each point "</big>
 +
 +
* Type: Multiple Mesh (also MeshScalar Operation)
 +
* To-do: KEEP. Turn into a new MeshScalar operator. Given several Meshes with MeshScalars that are named the same way, it will allow averaging/projecting into normals and creating a new scalar map.
 +
 +
<big> InvVect:    Invert all the vectors created with the -substract option and write a KWMeshVisu readable file</big>
 +
 +
* Type: MeshScalar Operation
 +
* To-do: KEEP.
 +
 +
magdir <VectorFile>  Compute the signed magnitude of each of the vector from the vector field.(+ if in the normal direction, - otherwise)"  << std::endl;
 +
    std::cout << " -magNormDir <VectorFile> Compute the signed magnitude of the normal projection of the vector field"  << std::endl;
 +
    std::cout << " -applyVec <VectorFile> Deforme the mesh according to the vector field specified as input" << std::endl;
 +
    std::cout << " -meshValues                Find the points and cells in a mesh. The outputfile is a textfile with the values"<< std::endl;
 +
    std::cout << " -avgGaussMesh <Meshfile1> <Meshfile2> ... -gaussMeshPara <mean>,<stdev>,<val1>,<val2>,... "<< std::endl;
 +
    std::cout << "  Compute the gaussian average for mesh files." << std::endl;
 +
    std::cout << "  The first parameter is the average, then the standard deviation of the Gaussian model and the rest are the values associated with the files"  << std::endl;
 +
    std::cout << " -avgGaussKWM <txtfile1> <txtfile2>... -gaussKWMPara <mean>,<stdev>,<val1>,<val2>,... "
 +
      << std::endl;
 +
    std::cout << "  Compute the gaussian average for KWMeshVisu files." << std::endl;
 +
    std::cout
 +
    <<
 +
    "  The first parameter is the average, then the standard deviation of the Gaussian model and the rest are the values associated with the files"
 +
    << std::endl;
 +
    std::cout
 +
    <<
 +
    " -alignMesh <Meshfile1> <Meshfile2>... Align all of the meshes to the inputmesh (== MeshFile0) using Procrustes alignment [-scalingOn] "
 +
    << endl;
 +
    //bp 2016
 +
    std::cout
 +
    <<
 +
    " -alignMeshICP <Meshfile1> <Meshfile2>... Align all of the meshes to the inputmesh (== MeshFile0) using IterativeClosestPoints (no correspondence required) "
 +
    << endl;
 +
    //bp 2016
 +
    std::cout << " -BadTriangle <thresh value> [-correctMesh correctFilename] "  << std::endl;
 +
    std::cout
 +
    <<
 +
    "  Find the bad triangles in a Mesh. The <thresh value> is the value of the threshFactor to calculate the standard deviation for the bad triangles. The output is a KWMeshVisu text file with the values of the average of the triangles of the mesh "
 +
    << std::endl;
 +
    std::cout << "  To have a new Mesh with the correct triangles -correctMesh " <<  std::endl;
 +
    std::cout << " -extraction extractFilename [-extractClosest] [-nn]" << std::endl;
 +
    std::cout
 +
    <<
 +
    "  To extract an attribute.The Input is the Mesh, the extractFilename is the attribute image and the Output is a KWMeshVisu text file with the attribute extraction"
 +
    << std::endl;
 +
    std::cout << "  [-extractClosest]: extract closest attribute" << std::endl;
 +
    std::cout << "  [-nn]: nearest neighbor interpolation (default: linear)" << std::endl;
 +
    std::cout << " -value <file1> <file2>... " << std::endl;
 +
    std::cout
 +
    << "  Extract the 5th column from a textfile and write a KWMeshVisu file with the values obtained"
 +
    <<  std::endl;
 +
    std::cout << " -subKWM <textname>      Difference between 2 KWMeshVisu files" << std::endl;
 +
    std::cout
 +
    <<
 +
    " -MaxColor <textfile>...  Compare each point in every files, find a max for every points, keep 5% near the max, the other values will be 0"
 +
    << std::endl;
 +
    std::cout
 +
    <<
 +
    " -dist_absolute <textfile>,<textfile>...  -result_absolute <textfile>,<textfile>... Absolute distance map between KWMeshVisu files"
 +
    << std::endl;
 +
    std::cout
 +
    <<
 +
    " -dist_relative <textfile>,<textfile>...  -result_relative <textfile>,<textfile>... Relative distance map between KWMeshVisu files (values between -1 & 1)"
 +
    << std::endl;
 +
    std::cout << " -label <textfile>      Separate every labels, find the mean..." << std::endl;
 +
    std::cout
 +
    << " -color -val <number_of_label>,<value_label>... -oldval <number_of_old_label>,<old_value_label>..."
 +
    << std::endl;
 +
    std::cout << "  To change the value of labels to see the evolution with KWMeshVisu. " <<  std::endl;
 +
    std::cout << "  Value_label is when the label grow up. " <<  std::endl;
 +
    std::cout << "  Old_value_label is for the label wich has already grown up." <<  std::endl;
 +
    std::cout
 +
    << " -first <textfile>...  Convert a column file into a line file with a comma between each value"
 +
    << std::endl;
 +
    // cchou MC2Origin
 +
    std::cout << " -MC2Origin      Translate the Center of Mass to the Origin" << std::endl;
 +
    // bp2009 StatsKWM
 +
    std::cout << " -avgOneKWM      Computes the avg of an input KWMeshVisu readable file" << std::endl;
 +
    std::cout << " -medianOneKWM    Computes the min of an input KWMeshVisu readable file" << std::endl;
 +
    std::cout << " -minOneKWM      Computes the min of an input KWMeshVisu readable file" << std::endl;
 +
    std::cout << " -maxOneKWM      Computes the max of an input KWMeshVisu readable file" << std::endl;
 +
    std::cout << " -per1OneKWM      Computes the 1% percentile of an input KWMeshVisu readable file" << std::endl;
 +
    std::cout << " -per99OneKWM    Computes the 99% percentile of an input KWMeshVisu readable file" << std::endl;
 +
    // bp2009 StatsKWM
 +
    // bp2009 FillHole
 +
    std::cout << " -FillHole        Fills up a hole in a open mesh." << std::endl;
 +
    std::cout << "      If more than one hole exists, this operation might have to be repeated."
 +
      << std::endl;
 +
    // bp2009 FillHole
 +
    // bp2009 BordersOut
 +
    std::cout << " -BordersOut      Outputs the borders of a mesh (if there)." << std::endl;
 +
    // bp2009 BordersOut
 +
    // bp2009 IsOpen
 +
    std::cout << " -IsOpen          Gives back an integer defining whether the mesh is open or not" << std::endl;
 +
    // bp2009 IsOpen
 +
    // bp2009 CleanMesh
 +
    std::cout
 +
    << " -CleanMesh      Re-mesh the input mesh and gives back a new clean mesh without degenerated triangles"
 +
    << std::endl;
 +
    // bp2009 CleanMesh
 +
    // bp2009 SmoothMesh
 +
    std::cout << " -SmoothMesh iterations    Gives back a Laplacian smoothed surface" << std::endl;
 +
    std::cout << "          Iterations defines how many times the Laplacian is applied."
 +
      << std::endl;
 +
    // bp2009 SmoothMesh
 +
    // bp2009 FilterNormals
 +
    std::cout
 +
    <<
 +
    " -FilterNormals direction <MeshFileVTK> <MeshFileVTKOut>  ... Changes homogeneously normals of the polygons in a mesh"
 +
    << std::endl;
 +
    std::cout
 +
    <<
 +
    "              direction= [1] normals outwards [-1] normals inwards"
 +
    << std::endl;
 +
    // bp2009 FilterNormals
 +
    // bp2009 StatsROI
 +
    std::cout << " -statsROI <txtROIFileIn>  Process a KWMeshVisu file, given a ROI Mask" << std::endl;
 +
    std::cout << "      Outputs a new KWMeshVisu only with the info in the mask"
 +
      << std::endl;
 +
    // bp2009 StatsROI
 +
    // bp2009 KWMtoPolyData
 +
    std::cout
 +
    <<
 +
    " -KWMtoPolyData <txtFileIn> <nameScalarField>  Writes a KWM scalar field (N Dimensions) into a PolyData Field Data Scalar to visualize in Slicer"
 +
    << std::endl;
 +
    // bp2009 KWMtoPolyData
 +
    std::cout
 +
    <<
 +
    " -FSAscData <FreeSurferASCIIfile> <nameScalarField>  Extracts a curvature/thickness etc information from a FreeSurfer style scalar file and adds it as attribute to the vtk mesh for visualization. FS format is line-by-line, no header, with each line 'point-id vertex-x vertex-y vertex-z scalar-prop' "
 +
    << std::endl;
 +
    // styner2015 FSAscData
 +
    std::cout << " -significanceLevel <double> the min Pvalue for the Pval ColorMap " << std::endl;
 +
 +
    // bp2009 ProcessROI
 +
    std::cout << " -processROI <txtROIFileIn> <MeshFileIn>  ... [TEMP - do not know where to put this]" << std::endl;
 +
    std::cout << "  Gets stats for a distances ROI map" << std::endl;
 +
    // bp2009 ProcessROI
 +
    std::cout << " -surfaceArea <AttributeFile>  Computes surface area in a txt file" << std::endl;
 +
    std::cout << " -lobarSurfaceArea <ParcellationAttributeFile>  Computes lobar surface area (output: csv file)"<<std::endl;
 +
    std::cout << " -variance <AttributeFile2> <AttributeFile3>...  Compute variance across population" << std::endl;
 +
    // bp2010 GetCurvatures
 +
    std::cout
 +
    <<
 +
    " -GetCurvatures <txtFileOut_C> <txtFileOut_S> <txtFileOut_Gauss> <txtFileOut_mean>... Gets an assorted set of curvature measurements:"
 +
    << std::endl;
 +
    std::cout
 +
    <<
 +
    "  Koenderink curvature values for an input mesh (shape index = S, curvedness = C), Gaussian Curvature and Mean Curvature"
 +
    << std::endl;
 +
    // bp2010 GetCurvatures
 +
    // bp2010 particleConsistency
 +
    std::cout
 +
    <<
 +
    " -particleConsistency <vtkFileIn_1> <lptsFileIn_1> ... <vtkFileIn_n> <lptsFileIn_n> ... Generates new particle files where fliped particles does not appear"
 +
    << std::endl;
 +
    // bp2010 particleConsistency
 +
    // bp2010 GetDirectionFeatures
 +
    std::cout
 +
    <<
 +
    " -GetDirectionFeatures ... Generates three KWM loadable files that have directionality features with respect to X, Y and Z directions"
 +
    << std::endl;
 +
    // bp2010 GetDirectionFeatures
 +
    std::cout
 +
    <<
 +
    " -closestPoint <InputAttributeFile1> <InputMesh2>  Computes interpolated attribute file (output file) for second mesh using closest point interpolation between two input meshes"
 +
    << std::endl;
 +
    std::cout << " -extractVertices <YLocationAttributeFile.txt> <ZLocationAttributeFile.txt>  Extract points and write 3 different files listing respectively X, Y and Z values"
 +
    << std::endl;
 +
    std::cout << " -mean <AttributeFile2> <AttributeFile3>... Compute mean scalar attribute file (assuming same number of vertices)" << std::endl;
 +
    //cx2011 cart2bary
 +
    std::cout << " -cart2bary <vtkPointFileIn> Project each point in <vtkPointFileIn> onto the <inputmesh> and then calculate the Barycentric coordinate of the projected point, output to <OutputFileName>" << std::endl;
 +
 +
    //bp2011
 +
    std::cout << " -attSTD <attribute_file2> <attribute_file2> ...<attribute_fileN> ... Compute std for a collection of vector or scalar files" << std::endl;
 +
    std::cout << " -VTKtolpts  ... Create a particle file out of a triangulated VTK mesh" << std::endl;
 +
    //bp2012
 +
    std::cout << " -relaxPolygons iterations... Mesh relaxation based in vtkWindowedSincPolyDataFilter" << std::endl;
 +
    std::cout << " -decimateMesh <target reduction> ... Mesh decimation, reducing the number of points. Target reduction is a value from 0..1 that indicates in what % vertices should be reduced" << std::endl;
 +
    //mst2013
 +
    std::cout << " -listPointData    lists info about all the VTK point Data in the vtk file" << std::endl;
 +
    std::cout << " -PointDataOp <name> <op> <val>  <name>: name of point data, " << std::endl
 +
      << "    <op>: [threshBelow | sub]  threshBelow: set to 0 all data below <value>, sub: subtract value"  << std::endl;
 +
    //bp2013
 +
    std::cout << " -translateMesh <tx_DimX> <tx_DimY> <tx_DimZ> ,  translates a mesh for a given amount " << std::endl;
 +
    //bp2015
 +
    std::cout << " -lookupPointData <csv_lookup> <scalar_field_name>,  substitutes scalar values in a given scalar field based on an input lookup " << std::endl;
 +
    //bp2016
 +
    std::cout << " -volumePolyData,  provides volume count for the PolyData through the std output. NOTE: Only in closed surfaces." << std::endl;
 +
   
 +
    std::cout << " -verbose                  Verbose output" << std::endl;
 +
    return 0;
 +
    }
 +
  
 
=== Path forward ===
 
=== Path forward ===

Revision as of 18:21, 26 April 2019

Home < Documentation < Labs < Surface Toolbox update


Overview

As part of the SALT project we would like to revamp some of the existing functionality in MeshMath into the SurfaceToolbox. We will be hiring a summer intern to work on this over a couple of months this summer.

Team

  • JC Fillon-Robin
  • Bea Paniagua
  • Jared Vicory
  • Andras Lasso
  • TBD engineer

Definitions

  • KWMeshVisu: Legacy mesh viewer from the Styner Lab.
  • Types of Mesh Operations:
    • Multiple Mesh (2+)
    • Single Mesh
    • MeshToVolume
    • MeshScalar to Mesh
    • MeshScalar to MeshScalar
    • MeshScalar Operation

Initial discussions

We will be potentially implementing individual CLIs for each functionality in MeshMath, and those will be plugged into the Surface Toolbox.

Current MeshMath functionality

subtract: "Subtract mesh from inputmesh, write a KWMeshVisu readable text file"

  • Type: Multiple Mesh
  • To-do: NOT KEEP. This functionality is currently available through ModelToModelDistance

magnitude: "Magnitude of the input metaArray file (mvh/mva) and writes a KWMeshVisu readable file"

  • Type: ?
  • To-do: NOT KEEP. It seems this is very specific to a certain application

scaleMVA: "Scales the input metaArray file (mvh/mva) and writes a KWMeshVisu readable file"

  • Type: ?
  • To-do: NOT KEEP. It seems this is very specific to a certain application

scaleMesh : "Scales the input mesh file"

  • Type: SingleMesh
  • To-do: KEEP.

avgMesh : "Compute the average mesh from inputmesh file1, file2..."

  • Type: Multiple Mesh
  • To-do: KEEP.

ave : "Compute the average vector field from file1, file2... generated with -substract"

  • Type: Multiple Mesh (also MeshScalar Operation)
  • To-do: KEEP. Turn into a new MeshScalar operator. Given several Meshes with MeshScalars that are named the same way, it will allow averaging them and creating a new scalar map.

normave : "Works as the \"-ave\" option, but the average vector are projected on the normal at each point "

  • Type: Multiple Mesh (also MeshScalar Operation)
  • To-do: KEEP. Turn into a new MeshScalar operator. Given several Meshes with MeshScalars that are named the same way, it will allow averaging/projecting into normals and creating a new scalar map.

InvVect: Invert all the vectors created with the -substract option and write a KWMeshVisu readable file

  • Type: MeshScalar Operation
  • To-do: KEEP.

magdir <VectorFile> Compute the signed magnitude of each of the vector from the vector field.(+ if in the normal direction, - otherwise)" << std::endl;

   std::cout << " -magNormDir <VectorFile> Compute the signed magnitude of the normal projection of the vector field"   << std::endl;
   std::cout << " -applyVec <VectorFile> Deforme the mesh according to the vector field specified as input" << std::endl;
   std::cout << " -meshValues                Find the points and cells in a mesh. The outputfile is a textfile with the values"<< std::endl;
   std::cout << " -avgGaussMesh <Meshfile1> <Meshfile2> ... -gaussMeshPara <mean>,<stdev>,<val1>,<val2>,... "<< std::endl;
   std::cout << "   Compute the gaussian average for mesh files." << std::endl;
   std::cout << "   The first parameter is the average, then the standard deviation of the Gaussian model and the rest are the values associated with the files"   << std::endl;
   std::cout << " -avgGaussKWM <txtfile1> <txtfile2>... -gaussKWMPara <mean>,<stdev>,<val1>,<val2>,... "
     << std::endl;
   std::cout << "  Compute the gaussian average for KWMeshVisu files." << std::endl;
   std::cout
   <<
   "  The first parameter is the average, then the standard deviation of the Gaussian model and the rest are the values associated with the files"
   << std::endl;
   std::cout
   <<
   " -alignMesh <Meshfile1> <Meshfile2>... Align all of the meshes to the inputmesh (== MeshFile0) using Procrustes alignment [-scalingOn] "
   << endl;
   //bp 2016
   std::cout
   <<
   " -alignMeshICP <Meshfile1> <Meshfile2>... Align all of the meshes to the inputmesh (== MeshFile0) using IterativeClosestPoints (no correspondence required) "
   << endl;
   //bp 2016
   std::cout << " -BadTriangle <thresh value> [-correctMesh correctFilename] "  << std::endl;
   std::cout
   <<
   "  Find the bad triangles in a Mesh. The <thresh value> is the value of the threshFactor to calculate the standard deviation for the bad triangles. The output is a KWMeshVisu text file with the values of the average of the triangles of the mesh "
   << std::endl;
   std::cout << "  To have a new Mesh with the correct triangles -correctMesh " <<  std::endl;
   std::cout << " -extraction extractFilename [-extractClosest] [-nn]" << std::endl;
   std::cout
   <<
   "  To extract an attribute.The Input is the Mesh, the extractFilename is the attribute image and the Output is a KWMeshVisu text file with the attribute extraction"
   << std::endl;
   std::cout << "  [-extractClosest]: extract closest attribute" << std::endl;
   std::cout << "  [-nn]: nearest neighbor interpolation (default: linear)" << std::endl;
   std::cout << " -value <file1> <file2>... " << std::endl;
   std::cout
   << "  Extract the 5th column from a textfile and write a KWMeshVisu file with the values obtained"
   <<  std::endl;
   std::cout << " -subKWM <textname>       Difference between 2 KWMeshVisu files" << std::endl;
   std::cout
   <<
   " -MaxColor <textfile>...  Compare each point in every files, find a max for every points, keep 5% near the max, the other values will be 0"
   << std::endl;
   std::cout
   <<
   " -dist_absolute <textfile>,<textfile>...  -result_absolute <textfile>,<textfile>... Absolute distance map between KWMeshVisu files"
   << std::endl;
   std::cout
   <<
   " -dist_relative <textfile>,<textfile>...  -result_relative <textfile>,<textfile>... Relative distance map between KWMeshVisu files (values between -1 & 1)"
   << std::endl;
   std::cout << " -label <textfile>      Separate every labels, find the mean..." << std::endl;
   std::cout
   << " -color -val <number_of_label>,<value_label>... -oldval <number_of_old_label>,<old_value_label>..."
   << std::endl;
   std::cout << "  To change the value of labels to see the evolution with KWMeshVisu. " <<  std::endl;
   std::cout << "  Value_label is when the label grow up. " <<  std::endl;
   std::cout << "  Old_value_label is for the label wich has already grown up." <<  std::endl;
   std::cout
   << " -first <textfile>...   Convert a column file into a line file with a comma between each value"
   << std::endl;
   // cchou MC2Origin
   std::cout << " -MC2Origin       Translate the Center of Mass to the Origin" << std::endl;
   // bp2009 StatsKWM
   std::cout << " -avgOneKWM       Computes the avg of an input KWMeshVisu readable file" << std::endl;
   std::cout << " -medianOneKWM    Computes the min of an input KWMeshVisu readable file" << std::endl;
   std::cout << " -minOneKWM       Computes the min of an input KWMeshVisu readable file" << std::endl;
   std::cout << " -maxOneKWM       Computes the max of an input KWMeshVisu readable file" << std::endl;
   std::cout << " -per1OneKWM      Computes the 1% percentile of an input KWMeshVisu readable file" << std::endl;
   std::cout << " -per99OneKWM     Computes the 99% percentile of an input KWMeshVisu readable file" << std::endl;
   // bp2009 StatsKWM
   // bp2009 FillHole
   std::cout << " -FillHole        Fills up a hole in a open mesh." << std::endl;
   std::cout << "      If more than one hole exists, this operation might have to be repeated."
     << std::endl;
   // bp2009 FillHole
   // bp2009 BordersOut
   std::cout << " -BordersOut      Outputs the borders of a mesh (if there)." << std::endl;
   // bp2009 BordersOut
   // bp2009 IsOpen
   std::cout << " -IsOpen          Gives back an integer defining whether the mesh is open or not" << std::endl;
   // bp2009 IsOpen
   // bp2009 CleanMesh
   std::cout
   << " -CleanMesh       Re-mesh the input mesh and gives back a new clean mesh without degenerated triangles"
   << std::endl;
   // bp2009 CleanMesh
   // bp2009 SmoothMesh
   std::cout << " -SmoothMesh iterations    Gives back a Laplacian smoothed surface" << std::endl;
   std::cout << "          Iterations defines how many times the Laplacian is applied."
     << std::endl;
   // bp2009 SmoothMesh
   // bp2009 FilterNormals
   std::cout
   <<
   " -FilterNormals direction <MeshFileVTK> <MeshFileVTKOut>  ... Changes homogeneously normals of the polygons in a mesh"
   << std::endl;
   std::cout
   <<
   "               direction= [1] normals outwards [-1] normals inwards"
   << std::endl;
   // bp2009 FilterNormals
   // bp2009 StatsROI
   std::cout << " -statsROI <txtROIFileIn>   Process a KWMeshVisu file, given a ROI Mask" << std::endl;
   std::cout << "       Outputs a new KWMeshVisu only with the info in the mask"
     << std::endl;
   // bp2009 StatsROI
   // bp2009 KWMtoPolyData
   std::cout
   <<
   " -KWMtoPolyData <txtFileIn> <nameScalarField>   Writes a KWM scalar field (N Dimensions) into a PolyData Field Data Scalar to visualize in Slicer"
   << std::endl;
   // bp2009 KWMtoPolyData
   std::cout
   <<
   " -FSAscData <FreeSurferASCIIfile> <nameScalarField>   Extracts a curvature/thickness etc information from a FreeSurfer style scalar file and adds it as attribute to the vtk mesh for visualization. FS format is line-by-line, no header, with each line 'point-id vertex-x vertex-y vertex-z scalar-prop' "
   << std::endl;
   // styner2015 FSAscData
   std::cout << " -significanceLevel <double> the min Pvalue for the Pval ColorMap " << std::endl;
   // bp2009 ProcessROI
   std::cout << " -processROI <txtROIFileIn> <MeshFileIn>  ... [TEMP - do not know where to put this]" << std::endl;
   std::cout << "   Gets stats for a distances ROI map" << std::endl;
   // bp2009 ProcessROI
   std::cout << " -surfaceArea <AttributeFile>   Computes surface area in a txt file" << std::endl;
   std::cout << " -lobarSurfaceArea <ParcellationAttributeFile>   Computes lobar surface area (output: csv file)"<<std::endl;
   std::cout << " -variance <AttributeFile2> <AttributeFile3>...   Compute variance across population" << std::endl;
   // bp2010 GetCurvatures
   std::cout
   <<
   " -GetCurvatures <txtFileOut_C> <txtFileOut_S> <txtFileOut_Gauss> <txtFileOut_mean>... Gets an assorted set of curvature measurements:"
   << std::endl;
   std::cout
   <<
   "   Koenderink curvature values for an input mesh (shape index = S, curvedness = C), Gaussian Curvature and Mean Curvature"
   << std::endl;
   // bp2010 GetCurvatures
   // bp2010 particleConsistency
   std::cout
   <<
   " -particleConsistency <vtkFileIn_1> <lptsFileIn_1> ... <vtkFileIn_n> <lptsFileIn_n> ... Generates new particle files where fliped particles does not appear"
   << std::endl;
   // bp2010 particleConsistency
   // bp2010 GetDirectionFeatures
   std::cout
   <<
   " -GetDirectionFeatures ... Generates three KWM loadable files that have directionality features with respect to X, Y and Z directions"
   << std::endl;
   // bp2010 GetDirectionFeatures
   std::cout
   <<
   " -closestPoint <InputAttributeFile1> <InputMesh2>   Computes interpolated attribute file (output file) for second mesh using closest point interpolation between two input meshes"
   << std::endl;
   std::cout << " -extractVertices <YLocationAttributeFile.txt> <ZLocationAttributeFile.txt>  Extract points and write 3 different files listing respectively X, Y and Z values"
   << std::endl;
   std::cout << " -mean <AttributeFile2> <AttributeFile3>... Compute mean scalar attribute file (assuming same number of vertices)" << std::endl;
   //cx2011 cart2bary
   std::cout << " -cart2bary <vtkPointFileIn> Project each point in <vtkPointFileIn> onto the <inputmesh> and then calculate the Barycentric coordinate of the projected point, output to <OutputFileName>" << std::endl;
   //bp2011
   std::cout << " -attSTD <attribute_file2> <attribute_file2> ...<attribute_fileN> ... Compute std for a collection of vector or scalar files" << std::endl;
   std::cout << " -VTKtolpts  ... Create a particle file out of a triangulated VTK mesh" << std::endl;
   //bp2012
   std::cout << " -relaxPolygons iterations... Mesh relaxation based in vtkWindowedSincPolyDataFilter" << std::endl;
   std::cout << " -decimateMesh <target reduction> ... Mesh decimation, reducing the number of points. Target reduction is a value from 0..1 that indicates in what % vertices should be reduced" << std::endl;
   //mst2013
   std::cout << " -listPointData    lists info about all the VTK point Data in the vtk file" << std::endl;
   std::cout << " -PointDataOp <name> <op> <val>   <name>: name of point data, " << std::endl

<< " <op>: [threshBelow | sub] threshBelow: set to 0 all data below <value>, sub: subtract value" << std::endl;

   //bp2013
   std::cout << " -translateMesh <tx_DimX> <tx_DimY> <tx_DimZ> ,  translates a mesh for a given amount " << std::endl;
   //bp2015
   std::cout << " -lookupPointData <csv_lookup> <scalar_field_name>,  substitutes scalar values in a given scalar field based on an input lookup " << std::endl;
   //bp2016
   std::cout << " -volumePolyData,  provides volume count for the PolyData through the std output. NOTE: Only in closed surfaces." << std::endl;
   
   std::cout << " -verbose                   Verbose output" << std::endl;
   return 0;
   }

Path forward

Testing data

TBD