27#ifndef _VIGRA_EXT_IMAGETRANSFORMS_H
28#define _VIGRA_EXT_IMAGETRANSFORMS_H
32#include <vigra/basicimage.hxx>
48 return vigra::NumericTraits<T>::zero();
58 if (p.red() < 0) p.setRed(vigra::NumericTraits<T>::zero());
59 if (p.green() < 0) p.setGreen(vigra::NumericTraits<T>::zero());
60 if (p.blue() < 0) p.setBlue(vigra::NumericTraits<T>::zero());
97 vigra::triple<DestImageIterator, DestImageIterator, DestAccessor>
dest,
98 std::pair<AlphaImageIterator, AlphaAccessor> alpha,
118#pragma omp parallel for if(!singleThreaded) schedule(dynamic)
126 typename SrcAccessor::value_type
tempval;
130 if (transform.transformImgCoord(
sx,
sy, x, y)) {
137 alpha.second.set(0,
xdm);
141 alpha.second.set(0,
xdm);
156 std::pair<SrcAlphaIterator, SrcAlphaAccessor>
srcAlpha,
157 vigra::triple<DestImageIterator, DestImageIterator, DestAccessor>
dest,
158 std::pair<AlphaImageIterator, AlphaAccessor> alpha,
179#pragma omp parallel for if(!singleThreaded) schedule(dynamic)
187 typename SrcAccessor::value_type
tempval;
188 typename SrcAlphaAccessor::value_type
alphaval;
192 if (transform.transformImgCoord(
sx,
sy,x,y)) {
199 alpha.second.set(0,
xdist);
202 alpha.second.set(0,
xdist);
238 vigra::triple<DestImageIterator, DestImageIterator, DestAccessor>
dest,
239 std::pair<AlphaImageIterator, AlphaAccessor> alpha,
303 std::pair<SrcAlphaIterator, SrcAlphaAccessor>
srcAlpha,
304 vigra::triple<DestImageIterator, DestImageIterator, DestAccessor>
dest,
305 std::pair<AlphaImageIterator, AlphaAccessor> alpha,
The pano tools interpolators ported to vigra.
"wrapper" for efficient interpolation access to an image
"wrapper" for efficient interpolation access to an image
misc math function & classes used by other parts of the program
void transformImage(vigra::triple< SrcImageIterator, SrcImageIterator, SrcAccessor > src, vigra::triple< DestImageIterator, DestImageIterator, DestAccessor > dest, std::pair< AlphaImageIterator, AlphaAccessor > alpha, vigra::Diff2D destUL, TRANSFORM &transform, PixelTransform &pixelTransform, bool warparound, Interpolator interpol, AppBase::ProgressDisplay *progress, bool singleThreaded=false)
Transform an image into the panorama.
T zeroNegative(T p)
Set negative elements of a pixel to zero.
void transformImageAlpha(vigra::triple< SrcImageIterator, SrcImageIterator, SrcAccessor > src, std::pair< SrcAlphaIterator, SrcAlphaAccessor > srcAlpha, vigra::triple< DestImageIterator, DestImageIterator, DestAccessor > dest, std::pair< AlphaImageIterator, AlphaAccessor > alpha, vigra::Diff2D destUL, TRANSFORM &transform, PixelTransform &pixelTransform, bool warparound, Interpolator interpol, AppBase::ProgressDisplay *progress, bool singleThreaded=false)
Transform image, and respect a possible alpha channel.
void transformImageAlphaIntern(vigra::triple< SrcImageIterator, SrcImageIterator, SrcAccessor > src, std::pair< SrcAlphaIterator, SrcAlphaAccessor > srcAlpha, vigra::triple< DestImageIterator, DestImageIterator, DestAccessor > dest, std::pair< AlphaImageIterator, AlphaAccessor > alpha, TRANSFORM &transform, PixelTransform &pixelTransform, vigra::Diff2D destUL, Interpolator interp, bool warparound, AppBase::ProgressDisplay *progress, bool singleThreaded)
transform input images with alpha channel
Interpolator
enum with all interpolation methods
@ INTERP_NEAREST_NEIGHBOUR
void transformImageIntern(vigra::triple< SrcImageIterator, SrcImageIterator, SrcAccessor > src, vigra::triple< DestImageIterator, DestImageIterator, DestAccessor > dest, std::pair< AlphaImageIterator, AlphaAccessor > alpha, TRANSFORM &transform, PixelTransform &pixelTransform, vigra::Diff2D destUL, Interpolator interp, bool warparound, AppBase::ProgressDisplay *progress, bool singleThreaded)
Transform an image into the panorama.
simple bilinear interpolation
several classes to calculate interpolator weights,
sinc interpolation, with variable width
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.