18 #ifndef itkAttributeMorphologyBaseImageFilter_h
19 #define itkAttributeMorphologyBaseImageFilter_h
62 template <
typename TInputImage,
typename TOutputImage,
typename TAttribute,
typename TFunction>
89 static constexpr
unsigned int ImageDimension = TOutputImage::ImageDimension;
124 itkSetMacro(FullyConnected,
bool);
125 itkGetConstReferenceMacro(FullyConnected,
bool);
126 itkBooleanMacro(FullyConnected);
141 m_FullyConnected =
false;
142 m_AttributeValuePerPixel = 1;
149 PrintSelf(std::ostream & os,
Indent indent)
const override;
155 GenerateData()
override;
161 GenerateInputRequestedRegion()
override;
168 EnlargeOutputRequestedRegion(
DataObject * itkNotUsed(output))
override;
213 if (m_TFunction(l.
Val, r.
Val))
231 m_Parent[x] = ACTIVE;
232 m_AuxData[x] = m_AttributeValuePerPixel;
238 if (m_Parent[x] >= 0)
240 m_Parent[x] = FindRoot(m_Parent[x]);
241 return (m_Parent[x]);
252 return ((m_Raw[x] == m_Raw[y]) || (m_AuxData[x] < m_Lambda));
264 m_AuxData[p] += m_AuxData[r];
269 m_AuxData[p] = m_Lambda;
279 m_Parent[x] = ACTIVE;
280 m_AuxData[x] = m_AttributeValuePerPixel;
286 if ((m_Parent[y] == ACTIVE) && (m_Parent[x] == ACTIVE))
289 m_AuxData[y] = m_AuxData[x] + m_AuxData[y];
290 m_AuxData[x] = -m_AttributeValuePerPixel;
292 else if (m_Parent[x] == ACTIVE)
294 m_AuxData[x] = -m_AttributeValuePerPixel;
298 m_AuxData[y] = -m_AttributeValuePerPixel;
299 m_Parent[y] = INACTIVE;
307 if (m_Parent[x] >= 0)
309 m_Parent[x] = FindRoot(m_Parent[x]);
310 return (m_Parent[x]);
321 return ((m_Raw[x] == m_Raw[y]) || (m_Parent[x] == ACTIVE));
335 else if (m_Parent[p] == ACTIVE)
337 m_Parent[p] = INACTIVE;
338 m_AuxData[p] = -m_AttributeValuePerPixel;
347 #ifndef ITK_MANUAL_INSTANTIATION
348 # include "itkAttributeMorphologyBaseImageFilter.hxx"