📄 jjskeleton.h
字号:
#include "FusionGlobal.h"#include "maskvolume.h"typedef struct HeapNodeInformation { float time; short x; short y; short z; unsigned short pointer;} Node;class JJSkeleton{private: float* m_pLongDistanceMap; float* m_pDistanceMapFromPS; float* m_pDistanceMapFromPS_FAST_WAVE; unsigned char* m_pPointType; unsigned short* m_pClusterGraph; unsigned short m_nClusterMapping[65535]; Node m_ExtremePoint[65535]; unsigned int* pTable; RxMaskVolume* m_pVesselVolume; RxMaskVolume* m_pVesselEdge; RxMaskVolume* m_pSkeleton; Node m_arrHeap[1000000]; unsigned long m_lHeapLength; float m_fVel; float m_fMaxDistanceMapFromPS; short m_PS_X; short m_PS_Y; short m_PS_Z; short m_nClusterIndex; unsigned short m_GraphLink[65535][20]; short m_GL_Index[65535]; unsigned short* m_pLabel; unsigned short m_nObjectID[200]; unsigned short m_nObjectNum;public: short m_VolX; short m_VolY; short m_VolZ; short m_OffsetX; short m_OffsetY; short m_OffsetZ; Node m_ControlPoint[2000]; Node m_BranchPoint[2000]; unsigned long m_nExtremeNum; unsigned long m_nBranchNum;private: void HeapInitialization(void); Node HeapRemoveMin(void); void HeapInsert(Node NewNode); void HeapModify(Node NewNode); BOOL HeapSearch(Node SearchNode); BOOL HeapEmpty(void); void Iteration_ORD_1(short nDistanceMapMode); float solve_ORD_1(int i1, int j1, int k1, int i2, int j2, int k2, int i3, int j3, int k3, float sol, short nDistanceMapMode); void FindPointSource(short nObjectLabel); void PropagateFromPS(short nObjectLabel); void PropagateFromPS_FAST_WAVE(short nObjectLabel); void BuildClusterGraph(void); void ExtractCenterline(void); void BuildCGLink(unsigned short nParent, unsigned short nChild); void SetNode(short nSeed_X, short nSeed_Y, short nSeed_Z, short nDistance, short nClusterIndex); void VisualizeSkeleton(void); inline float minimum(float num1, float num2); void FindConnectedComponent(void); int MapFillingWithSortedLabel(unsigned int *pTable, unsigned short *pMap, int nImageSize); int FindFinalLabel(unsigned int *pTable, unsigned short nNowLabel); void SetLabelByState(unsigned short *pMap, int nWidth, int nHeight, int nDepth, int x, int y, int z, int *nLabel, int nState, unsigned int *pTable); int GetState(unsigned short *pMap, int nWidth, int nHeight, int nDepth, int x, int y, int z); enum { COMP_NONE = 0, COMP_X = 10, COMP_Y = 20, COMP_Z = 30, COMP_NEW = 40, COMP_SAME = 50, COMP_DIFF_XY= 60, COMP_DIFF_YZ= 70, COMP_DIFF_ZX= 80, COMP_DIFF_XYZ=90, COMP_DIFF =100, };public: JJSkeleton(); ~JJSkeleton(); void Initialization(void); void SetParameter(RxMaskVolume* pVesselEdge, RxMaskVolume* pVesselVolume, RxMaskVolume* pSkeleton, int minX, int maxX, int minY, int maxY, int minZ, int maxZ, BOOL bRef); void Skeletonization(void); int GetConnectedComponent(int nWidth, int nHeight, int nDepth); int RemoveSmallComponent(unsigned char *pMap, int nWidth, int nHeight, int nDepth);};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -