// Copyright (C) 2006 Davis E. King (davis@dlib.net)
// License: Boost Software License See LICENSE.txt for the full license.
#undef DLIB_SPATIAL_FILTERINg_ABSTRACT_
#ifdef DLIB_SPATIAL_FILTERINg_ABSTRACT_
#include "../pixel.h"
namespace dlib
{
template <
typename in_image_type,
typename out_image_type,
typename filter_type,
long M,
long N
>
void spatially_filter_image (
const in_image_type& in_img,
out_image_type& out_img,
const filter_type (&filter)[M][N],
unsigned long scale = 1,
bool use_abs = false
);
/*!
requires
- in_image_type == is an implementation of array2d/array2d_kernel_abstract.h
- out_image_type == is an implementation of array2d/array2d_kernel_abstract.h
- pixel_traits<typename in_image_type::type>::has_alpha == false
- pixel_traits<typename out_image_type::type>::has_alpha == false
- is_same_object(in_img, out_img) == false
- scale > 0
- M % 2 == 1 (i.e. M must be odd)
- N % 2 == 1 (i.e. N must be odd)
ensures
- Applies the given spatial filter to in_img and stores the result in out_img. Also
divides each resulting pixel by scale.
- pixel values after filtering that are > pixel_traits<out_image_type>::max() are
set to pixel_traits<out_image_type>::max()
- if (pixel_traits<typename in_image_type::type>::grayscale == false) then
- the pixel values are converted to the HSI color space and the filtering
is done on the intensity channel only.
- if (use_abs == true) then
- pixel values after filtering that are < 0 are converted to their absolute values
- else
- pixel values after filtering that are < 0 are assigned the value of 0
- Pixels close enough to the edge of in_img to not have the filter still fit
inside the image are not modified. i.e. Whatever value the border of out_img
had to begin with is what it will have after this function returns.
- #out_img.nc() == in_img.nc()
- #out_img.nr() == in_img.nr()
!*/
}
#endif // DLIB_SPATIAL_FILTERINg_ABSTRACT_