52 #ifndef __PCL_SeparableFilter_h
53 #define __PCL_SeparableFilter_h
58 #include <pcl/Diagnostics.h>
125 : rowFilter( PCL_VALID_KERNEL_SIZE( n ) )
126 , colFilter( PCL_VALID_KERNEL_SIZE( n ) )
129 PCL_PRECONDITION( n == 0 || n >= 3 )
130 PCL_PRECONDITION( n == 0 || (n & 1) )
140 template <
typename T>
142 : rowFilter( x, PCL_VALID_KERNEL_SIZE( n ) )
143 , colFilter( x, PCL_VALID_KERNEL_SIZE( n ) )
146 PCL_PRECONDITION( n == 0 || n >= 3 )
147 PCL_PRECONDITION( n == 0 || (n & 1) )
171 template <
typename T>
173 : rowFilter( h, PCL_VALID_KERNEL_SIZE( n ) )
174 , colFilter( v, PCL_VALID_KERNEL_SIZE( n ) )
177 PCL_PRECONDITION( n == 0 || n >= 3 )
178 PCL_PRECONDITION( n == 0 || (n & 1) )
238 return Name() == f.
Name() && SameCoefficients( f );
254 filterName = newName.Trimmed();
263 return rowFilter.Length();
273 PCL_PRECONDITION( n == 0 || n >= 3 )
274 PCL_PRECONDITION( n == 0 || (n & 1) )
286 return rowFilter.IsEmpty();
320 return phase ? colFilter : rowFilter;
329 return rowFilter.Sum() * colFilter.Sum();
348 for ( s = *i < 0; ++i < rowFilter.End(); )
349 if ( *i != 0 && (*i < 0) != s )
353 for ( s = (s < 0) ? *i++ < 0 : s; i < colFilter.End(); ++i )
354 if ( *i != 0 && (*i < 0) != s )
365 return colFilter == f.colFilter && rowFilter == f.rowFilter;
383 coefficient_vector rowFilter;
384 coefficient_vector colFilter;
396 #endif // __PCL_SeparableFilter_h