-
Notifications
You must be signed in to change notification settings - Fork 58
/
tubeSegmentBinaryImageSkeleton3D.h
104 lines (74 loc) · 3.08 KB
/
tubeSegmentBinaryImageSkeleton3D.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
/*=========================================================================
Library: TubeTK
Copyright Kitware Inc.
All rights reserved.
Licensed under the Apache License, Version 2.0 ( the "License" );
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
=========================================================================*/
#ifndef __tubeSegmentBinaryImageSkeleton3D_h
#define __tubeSegmentBinaryImageSkeleton3D_h
// ITK includes
#include "itkProcessObject.h"
// TubeTK includes
#include "tubeWrappingMacros.h"
#include "itktubeBinaryThinningImageFilter3D.h"
namespace tube
{
/** \class SegmentBinaryImageSkeleton3D
* \brief Computes skeleton of a binary image.
* The output skeleton can be dilated if a radius greater than zero is
* provided
*
* \ingroup TubeTK
*/
template< class TImageType >
class SegmentBinaryImageSkeleton3D:
public itk::ProcessObject
{
public:
/** Standard class typedefs. */
typedef SegmentBinaryImageSkeleton3D Self;
typedef itk::ProcessObject Superclass;
typedef itk::SmartPointer< Self > Pointer;
typedef itk::SmartPointer< const Self > ConstPointer;
typedef TImageType ImageType;
typedef itk::tube::BinaryThinningImageFilter3D<
TImageType, TImageType > FilterType;
typedef typename FilterType::EndPointListType EndPointListType;
/** Method for creation through the object factory. */
itkNewMacro( Self );
/** Run-time type information ( and related methods ). */
itkTypeMacro( SegmentBinaryImageSkeleton3D, ProcessObject );
/** Set/Get input image */
tubeWrapSetConstObjectMacro( Input, ImageType, Filter );
tubeWrapGetConstObjectMacro( Input, ImageType, Filter );
/** Compute image similarity */
tubeWrapUpdateMacro( Filter );
/** Get image similarity */
tubeWrapGetObjectMacro( Output, ImageType, Filter );
tubeWrapGetObjectMacro( Thinning, ImageType, Filter );
tubeWrapGetConstReferenceMacro( EndPoints, EndPointListType, Filter );
protected:
SegmentBinaryImageSkeleton3D( void );
~SegmentBinaryImageSkeleton3D() {}
void PrintSelf( std::ostream & os, itk::Indent indent ) const;
private:
/** itktubeSegmentBinaryImageSkeleton3DFilter parameters **/
SegmentBinaryImageSkeleton3D( const Self & );
void operator=( const Self & );
// To remove warning "was hidden [-Woverloaded-virtual]"
void SetInput( const DataObjectIdentifierType &, itk::DataObject * ) {};
typename FilterType::Pointer m_Filter;
};
} // End namespace tube
#ifndef ITK_MANUAL_INSTANTIATION
#include "tubeSegmentBinaryImageSkeleton3D.hxx"
#endif
#endif // End !defined( __tubeSegmentBinaryImageSkeleton3D_h )