EMAN2
skeletonizer.h
Go to the documentation of this file.
1// Copyright (C) 2005-2008 Washington University in St Louis, Baylor College of Medicine. All rights reserved
2// Author: Sasakthi S. Abeysinghe (sasakthi@gmail.com)
3// Description: Performs skeletonization on a grayscale volume
4
5#include "volume.h"
6using namespace wustl_mm::SkeletonMaker;
7
8#ifndef GRAYSKELETONCPP_VOLUME_SKELETONIZER_H
9#define GRAYSKELETONCPP_VOLUME_SKELETONIZER_H
10
13
14namespace wustl_mm {
15 namespace GraySkeletonCPP {
16
18 {
19 public:
22 static Volume * PerformPureJuSkeletonization(Volume * imageVol, string outputPath, double threshold, int minCurveWidth, int minSurfaceWidth);
23 //Volume * PerformImmersionSkeletonizationAndPruning(Volume * sourceVol, Volume * preserveVol, double startGray, double endGray, double stepSize, int smoothingIterations, int smoothingRadius, int minCurveSize, int minSurfaceSize, int maxCurveHole, int maxSurfaceHole, string outputPath, bool doPruning, double pointThreshold, double curveThreshold, double surfaceThreshold);
24 static void CleanUpSkeleton(Volume * skeleton, int minNumVoxels = 4, float valueThreshold = 0.5); //Added for EMAN2
25 static void MarkSurfaces(Volume* skeleton); //Added for EMAN2
26
27 private:
28 static bool Are26Neighbors(Vec3<int> u, Vec3<int> v); //Added for EMAN2
29 static Volume * GetJuSurfaceSkeleton(Volume * sourceVolume, Volume * preserve, double threshold);
30 static Volume * GetJuCurveSkeleton(Volume * sourceVolume, Volume * preserve, double threshold, bool is3D);
31 static Volume * GetJuTopologySkeleton(Volume * sourceVolume, Volume * preserve, double threshold);
32 static void PruneCurves(Volume * sourceVolume, int pruneLength);
33 static void PruneSurfaces(Volume * sourceVolume, int pruneLength);
34 static void VoxelOr(Volume * sourceAndDestVolume1, Volume * sourceVolume2);
35 static Volume * GetJuThinning(Volume * sourceVolume, Volume * preserve, double threshold, char thinningClass);
36
43 static const char PRUNING_CLASS_PRUNE_CURVES;
44 static const char PRUNING_CLASS_PRUNE_POINTS;
45
46 //MathLib * math;
47 //NormalFinder * surfaceNormalFinder;
48 //ProbabilityDistribution3D gaussianFilterPointRadius;
49 //ProbabilityDistribution3D gaussianFilterCurveRadius;
50 //ProbabilityDistribution3D gaussianFilterSurfaceRadius;
51 //ProbabilityDistribution3D gaussianFilterMaxRadius;
52 //ProbabilityDistribution3D uniformFilterSkeletonDirectionRadius;
57 };
58 }
59}
60
61#endif
static bool Are26Neighbors(Vec3< int > u, Vec3< int > v)
static void MarkSurfaces(Volume *skeleton)
static Volume * GetJuTopologySkeleton(Volume *sourceVolume, Volume *preserve, double threshold)
VolumeSkeletonizer(int pointRadius, int curveRadius, int surfaceRadius, int skeletonDirectionRadius=DEFAULT_SKELETON_DIRECTION_RADIUS)
static void PruneSurfaces(Volume *sourceVolume, int pruneLength)
static Volume * GetJuThinning(Volume *sourceVolume, Volume *preserve, double threshold, char thinningClass)
static void VoxelOr(Volume *sourceAndDestVolume1, Volume *sourceVolume2)
static Volume * GetJuCurveSkeleton(Volume *sourceVolume, Volume *preserve, double threshold, bool is3D)
static void CleanUpSkeleton(Volume *skeleton, int minNumVoxels=4, float valueThreshold=0.5)
static Volume * PerformPureJuSkeletonization(Volume *imageVol, string outputPath, double threshold, int minCurveWidth, int minSurfaceWidth)
static Volume * GetJuSurfaceSkeleton(Volume *sourceVolume, Volume *preserve, double threshold)
static void PruneCurves(Volume *sourceVolume, int pruneLength)
const int DEFAULT_SKELETON_DIRECTION_RADIUS
Definition: skeletonizer.h:12
const int MAX_GAUSSIAN_FILTER_RADIUS
Definition: skeletonizer.h:11