# DGtalTools

DGtalTools is a separate github project containing tools constructed using DGtal library. The main goal of this part is to gather simple and useful tools exploiting the structures and algorithms defined in DGtal. Note that in complement to DGtalTools, the DGtalTools-contrib project was added to gather specific research tools or prototypes. The resulting tools could be useful to:

• Share and apply DGtal algorithms to various data from different domains.
• Construct demonstration tools like online demonstrations (as for instance the one of the Image Processing Online).
• Simplify comparisons of different algorithms with an single framework.
• Provide useful tools of digital image related algorithms (extraction of connected components, digital contour/surface extraction, simple visualization tools…).

The source code of the tools can also be used to non DGtal familiar user to show how to include the DGtal library framework directly in their own source code (in complement of DGtal tutorial ).

### DGtalTools content:

At the moment the DGTalTools project is organized as follows (new or improved in 0.9.3):

• converters/: utilities to convert various simple file formats:
• convertVol: a simple generic volume image converters (can process actually pgm3d, vol, longvol, raw (for writing)).
• dicom2vol: convert dicom images into 3d volumic file (need itk option in DGtal).
• freeman2img: transform one or several freeman chains into a pgm file by filling their interior areas.
• freeman2sdp: convert freeman chain towards a Sequence of Discrete Points.
• HDF52vol: convert HDF5 to vol file format.
• heightfield2shading: a new tool to render a 2D heightfield image into a shading one.
• heightfield2vol: a new tool to transform 2D heightmap into volumetric file.
• img2freeman: to extract a freeman chain contour from a grayscale image.
• imgAddNoise: a new tool to add noise (Kanungo’s) to a binary 2D object.
• itk2vol: convert any image of itk format (mhd, mha, …) to vol (available with the itk option in DGtal).
• longvol2vol: convert longvol to vol file using different conversion policies.
• mesh2heightfield: new tool to convert a mesh file into a 2D height map (from a normal direction N and from a starting point P).
• ofs2off: convert OFS mesh format towards a OFF variant.
• raw2HDF5: convert raw image to HDF5.
• raw2vol and vol2raw: transform 3D volumes files from (resp. to) raw to vol.
• sdp2vol: a simple tool to create a 3d vol image from 3d digital points.
• slice2vol: tool to merge slices into one 3d volumic file.
• vol2heightfield: a new tool to transform volumetric file into 2D heightmap.
• vol2obj: convert a volume file into OBJ format (all voxels belonging to threshold interval)
• vol2raw: convert a vol to a 8-bit raw file.
• vol2sdp: a simple tools to extract digital points from 3d vol files.
• vol2slice: tool to extract all slices from 3d volumic images.
• volAddNoise: a new tool to add noise (Kanungo’s) to a binary 3D object.
• volBoundary2obj: a simple tool to export the boundary of a an object in a volumetric file to OBJ.

• estimators/:
• 2dLocalEstimators: program to compare local curvature/tangent estimators on implicit shapes:
• Maximal DSS based estimators
• Maximal DCA based estimators
• Binomial convolver based estimators
• Integral Invariants based estimators
• 3dLocalEstimators: program to compare 3D local curvature estimators  (mean, gaussian and principal curvatures) on 3D implicit shapes  with integral invariant and monge via jet fitting (with also noise robustness measure).
• curvatureBC: curvature estimator using the Binomial convolver.
• curvatureMCMS: curvature estimator using the maximal segments cover (to be updated for current DGtal version).
• curvatureScaleSpaceBCC: a tool to display the curvature scale space of a given contour with the Binomial Convolver Curvature Estimator.
• euleurCharacteristic : bruteforce tool to extract (volumetric) Euler characteristic from volumetric binary object.
• lengthEstimator: program to generate multigrid analysis of length estimators.
• generic3dNormalEstimators: Computes a normal vector field over a digitized 3D implicit surface for several estimators (II|VCM|Trivial|True).
• statisticsEstimators: compute satistics (L1, L2, Loo) from results of two estimators.
• tangentBC: tangent estimator using the Binomial convolver.
• vol2normalField: compute the normal vector field of a given vol file .

• image processing/:
• at-u2-v0: computes a piecewise smooth approximation of a grey-level or color image, by optimizing the Ambrosio-Tortorelli functional (with u a 2-form and v a 0-form).
• at-u0-v1: Computes a piecewise smooth approximation of a grey-level or color image, by optimizing the Ambrosio-Tortorelli functional (with u a 0-form and v a 1-form).

• shapeGenerator/:
• shapeGenerator: generate multigrid shape
• contourGenerator: generate multigrid shape contours

• visualization/:
• 3dCompSurfelData: a tool to compare generic surfel data informations given from two data files.
• 3dCurvatureViewer: permits to compute and visualize mean or gaussian curvature and principal curvature directions of  binary shape.
• 3dCurvatureViewerNoise: same as 3dCurvatureViewer, but allows to add some noise to objects.
• 3dCurveViewer: A tool for visualizing the tangential cover of 3d curves.
• 3dDisplaySurfelData: display surfel data from SDP file with color attributes given as scalar interpreted as color.
• 3dHeightMapViewer: display a 2D image as heightmap by using QGLviewer.
• 3dImageViewer: new tool to display slice image with interactive translatations or rotations (can open dicom format if WITH_ITK is set to true).
• 3dImplicitSurfaceExtractorBy4DExtension: a tool to visualize 3d polynomial implicit surface defined as some f(x,y,z)=0.
• 3dImplicitSurfaceExtractorByThickening: a tool to visualize 3d polynomial implicit surface defined as some f(x,y,z)=0.
• 3dSDPViewer: basic display of a sequence of 3d points (as voxel or sphere) and vectors by using QGLviewer.
• 3dVolBoundaryViewer: Display the boundary of a volume file by using QGLviewer.
• 3dVolViewer: volume file (.vol and .pgm3d) viewer with QGLViewer.
• displayContours: display discrete contours from various format (.fc (freemanchain), .sdp).
• meshViewer: display 3D mesh from OFS or OFF format.
• patternTriangulation: a new tool that draws with Board2D the convex hull, the closest-point Delaunay triangulation or the farthest-point Delaunay triangulation of a pattern.
• sliceViewer: a new 2D and 3D slice viewer from 3D volumic files ( pgm3d, vol, longvol, and DICOM with ITK).

• volumetric/:
• 3dVolMarchingCubes: marching cubes form a Vol file
• homotopicThinning3D: ultimate skeleton from vol file
• volAddBorder: add a 1 voxel boundary with value 0 to a vol file.
• volCComponentCounter: a simple program to count the number of connected components in a 3D image.
• volCrop: crop an 3D vol image from to points.
• volFlip: tool to flip all volume slice images according a given dimension.
• volImageMetrics: apply basic measures from two volumetric images: RMSE and PSNR.
• volIntensityScale: a simple tool to apply a linear scale of the intensity given in a volumetric file.
• volReSample: apply a basic re sampling of a 3D volumetric image (.vol, .longvol, .pgm3d) with a given grid size.
• volSegment: Segment volumetric file from a simple threshold which can be set automatically from the otsu estimation.
• volShapeMetrics: apply shape measures for comparing two volumetric images A and B (shape defined from thresholds)
• volSubSample: sub sample a vol file (division by 2 in each direction)
• Measures from voxel partition (true/false+-, precision recall, f-measure)
• Measures bases on euclidean distance between the two Shape A and B.
• volTrValues: a basic tool to transform the voxel values from an input/output set.

### DGtalTools-contrib content:

At the moment the DFtalTools-contrib project is organized as follows (new or improved in 0.9.3):

• Geometry2d/:
• houghLineDetect: to detect line segment from Hough transform (using OpenCV).
• meaningFullThickness: to display the meaningful thickness of digital contour.
• distanceTransform/:
• LUTBasedNSDistanceTransform: Compute the 2D translated neighborhood-sequence distance transform of a binary imag
• CumulativeSequenceTest and RationalBeattySequenceTest: tests from LUTBasedNSDistanceTransform.

• Geometry3d/:
• basicEditMesh: to apply basic mesh edition (scale change, mesh face contraction, face filtering).
• basicMorphoFilter: apply basic morpho filter from a ball structural element.
• computeMeshDistances: computes for each face of a mesh A the minimal distance to another mesh B.
• volLocalMax: extract the local maximas of a vol image within a spherical kernel.
• xyzScale: a basic tool to adjust the scale of an xyz file.

• Visualisation/:
• displayLineSegments: new tool allowing to display line segment in an output image.
• displayTgtCoverAlphaTS: to display alpha-thick segment given on a simple contour.
• graphViewer: add a new tool allowing to display graph from edges, vertex and radii.
• meshViewerEdit: tool to visualize a mesh and to apply simple edits (face removal, color edits…).

### How to get and install DGtalTools (or DGtalTools-contrib)

You can get the DGtalTools by using git:

git clone git://github.com/DGtal-team/DGtalTools.git or the source archive: DGtalTools-0.9.3-Source.tar.gz

or the DGtalTools-contrib:
git clone git://github.com/DGtal-team/DGtalTools-contrib.git or the source archive: DGtalTools-contrib-0.9.3-Source.tar.gz

Installation:

• use cmake tool to generate a build script (MakeFile, VS project,..) from the CMakeLists.txt
• DGtal must be installed in your system. Concerning DGtal dependencies (boost, Qt,…), all the dependencies used to compile your DGtal library must be present to build the DGtalTools.