24#ifndef VIGRA_EXT_PYRAMID_H
25#define VIGRA_EXT_PYRAMID_H
27#include <vigra/separableconvolution.hxx>
38template <
class ImageIn,
class Image>
41 typedef typename Image::value_type
vt;
42 typedef typename vigra::NumericTraits<vt>::RealPromote
SKIPSMType;
48 size_t w = in.width();
49 size_t h = in.height();
79template <
class Image,
class ImageMask>
82 typedef typename Image::value_type
vt;
83 typedef typename vigra::NumericTraits<vt>::RealPromote
SKIPSMType;
92 size_t w = in.width();
93 size_t h = in.height();
119 for( ;
n > 0 ; --
n) {
135template <
class ImageIn,
class ImageOut>
138 typedef typename ImageOut::value_type
vt;
139 typedef typename vigra::NumericTraits<vt>::RealPromote
SKIPSMType;
141 size_t w = in.width();
142 size_t h = in.height();
150template <
class ImageIn,
class ImageInMask,
class ImageOut,
class ImageOutMask>
153 typedef typename ImageOut::value_type
vt;
154 typedef typename vigra::NumericTraits<vt>::RealPromote
SKIPSMType;
158 size_t w = in.width();
159 size_t h = in.height();
170static const double AA = 0.4;
171static const double W[] = {0.25 -
AA / 2.0, 0.25,
AA, 0.25, 0.25 -
AA / 2.0};
177template <
class Image>
182 int width = in.width();
183 int height = in.height();
194 vigra::Kernel1D<double> filter;
195 filter.initExplicitly(-2, 2) =
W[0],
W[1],
W[2],
W[3],
W[4];
197 vigra::BasicImage<typename Image::value_type>
tmpimage1(width, height);
198 vigra::BasicImage<typename Image::value_type>
tmpimage2(width, height);
void reduceToNextLevel(ImageIn &in, ImageOut &out)
void reduceNTimes(ImageIn &in, Image &out, int n)
vigra::pair< typename ROIImage< Image, Alpha >::image_traverser, typename ROIImage< Image, Alpha >::ImageAccessor > destImage(ROIImage< Image, Alpha > &img)
vigra::pair< typename ROIImage< Image, Mask >::image_const_traverser, typename ROIImage< Image, Mask >::ImageConstAccessor > srcImage(const ROIImage< Image, Mask > &img)
vigra::triple< typename ROIImage< Image, Mask >::image_const_traverser, typename ROIImage< Image, Mask >::image_const_traverser, typename ROIImage< Image, Mask >::ImageConstAccessor > srcImageRange(const ROIImage< Image, Mask > &img)
helper function for ROIImages
void reduceToNextLevelOld(Image &in, Image &out)
Gaussian reduction to next pyramid level.
vigra::triple< typename ROIImage< Image, Alpha >::image_traverser, typename ROIImage< Image, Alpha >::image_traverser, typename ROIImage< Image, Alpha >::ImageAccessor > destImageRange(ROIImage< Image, Alpha > &img)
std::vector< deghosting::BImagePtr > threshold(const std::vector< deghosting::FImagePtr > &inputImages, const double threshold, const uint16_t flags)
Threshold function used for creating alpha masks for images.