52 #ifndef __PCL_Convolution_h
53 #define __PCL_Convolution_h
58 #include <pcl/Diagnostics.h>
66 #define __PCL_CONVOLUTION_TINY_WEIGHT 1.0e-20
121 , m_weight( x.m_weight )
122 , m_highPass( x.m_highPass )
123 , m_rawHighPass( x.m_rawHighPass )
124 , m_rescaleHighPass( x.m_rescaleHighPass )
126 if ( !x.m_filter.IsNull() )
127 m_filter = x.m_filter->Clone();
149 (void)InterlacedTransformation::operator =( x );
150 (void)ThresholdedTransformation::operator =( x );
151 (void)ParallelProcess::operator =( x );
152 if ( x.m_filter.IsNull() )
155 m_filter = x.m_filter->Clone();
156 m_weight = x.m_weight;
157 m_highPass = x.m_highPass;
158 m_rawHighPass = x.m_rawHighPass;
159 m_rescaleHighPass = x.m_rescaleHighPass;
178 PCL_PRECONDITION( !m_filter.IsNull() )
187 m_filter = filter.
Clone();
188 CacheFilterProperties();
241 return m_rescaleHighPass;
251 m_rescaleHighPass = enable;
261 EnableHighPassRescaling( !disable );
276 return m_rawHighPass;
285 m_rawHighPass = enable;
294 EnableRawHighPass( !disable );
304 PCL_PRECONDITION( !m_filter.IsNull() )
305 return m_filter->Size() + (m_filter->Size() - 1)*(InterlacingDistance() - 1);
319 bool m_highPass =
false;
324 bool m_rawHighPass =
false;
325 bool m_rescaleHighPass =
false;
338 void CacheFilterProperties()
340 PCL_PRECONDITION( !m_filter.
IsNull() )
341 PCL_PRECONDITION( !m_filter->IsEmpty() )
343 m_highPass = m_filter->IsHighPassFilter();
344 m_weight = m_filter->Weight();
345 if (
pcl::
Abs( m_weight ) < __PCL_CONVOLUTION_TINY_WEIGHT )
349 void ValidateFilter() const;
A smart pointer with exclusive object ownership and optional automatic object destruction.
Discrete two-dimensional nonseparable convolution in the spatial domain.
const KernelFilter & Filter() const
void Apply(pcl::UInt32Image &) const override
bool IsHighPassFilter() const
void Apply(pcl::DImage &) const override
bool IsHighPassRescalingEnabled() const
void Apply(pcl::Image &) const override
void Apply(pcl::UInt8Image &) const override
void DisableHighPassRescaling(bool disable=true)
Convolution(const KernelFilter &filter)
void EnableHighPassRescaling(bool enable=true)
void Apply(pcl::UInt16Image &) const override
Convolution(Convolution &&)=default
void SetFilter(const KernelFilter &filter)
void DisableRawHighPass(bool disable=true)
int OverlappingDistance() const
Convolution(const Convolution &x)
void EnableRawHighPass(bool enable=true)
double FilterWeight() const
bool IsRawHighPassEnabled() const
Implements a generic, two-dimensional, shared or local image.
Kernel filter in two dimensions.
virtual KernelFilter * Clone() const
A process using multiple concurrent execution threads.
T Abs(const Complex< T > &c) noexcept