8#ifndef VIGRA_APPLYWINDOWFUCTION_HXX
9#define VIGRA_APPLYWINDOWFUCTION_HXX
11#include "basicimage.hxx"
12#include "copyimage.hxx"
13#include "basicgeometry.hxx"
14#include "initimage.hxx"
15#include "bordertreatment.hxx"
167 BorderTreatmentMode
border = BORDER_TREATMENT_REPEAT)
169 vigra_precondition((
border == BORDER_TREATMENT_AVOID ||
171 border == BORDER_TREATMENT_REPEAT ||
172 border == BORDER_TREATMENT_REFLECT ||
173 border == BORDER_TREATMENT_WRAP ||
174 border == BORDER_TREATMENT_ZEROPAD
176 "vigra::applyWindowFunction():\n"
177 " Border treatment must be one of follow treatments:\n"
178 " - BORDER_TREATMENT_AVOID\n"
180 " - BORDER_TREATMENT_REPEAT\n"
181 " - BORDER_TREATMENT_REFLECT\n"
182 " - BORDER_TREATMENT_WRAP\n"
183 " - BORDER_TREATMENT_ZEROPAD\n"
189 vigra_precondition(
win_shape.x % 2 == 1 ,
"vigra::applyWindowFunction(): Filter window width has to be of odd size!");
190 vigra_precondition(
win_shape.y % 2 == 1 ,
"vigra::applyWindowFunction(): Filter window height has to be of odd size!");
214 for( ;
ys.y != end.y;
ys.y++,
yd.y++, y++)
222 for( ;
xs.x != end.x;
xs.x++,
xd.x++)
240 if(
border == BORDER_TREATMENT_AVOID)
265 if(
border == BORDER_TREATMENT_REPEAT)
277 else if(
border == BORDER_TREATMENT_REFLECT)
283 else if(
border == BORDER_TREATMENT_WRAP)
289 else if(
border == BORDER_TREATMENT_ZEROPAD)
321 if(
border == BORDER_TREATMENT_REPEAT)
337 else if(
border == BORDER_TREATMENT_REFLECT)
343 else if(
border == BORDER_TREATMENT_WRAP)
349 else if(
border == BORDER_TREATMENT_ZEROPAD)
391 if(
border == BORDER_TREATMENT_REPEAT)
406 else if(
border == BORDER_TREATMENT_REFLECT)
412 else if(
border == BORDER_TREATMENT_WRAP)
418 else if(
border == BORDER_TREATMENT_ZEROPAD)
452 if(
border == BORDER_TREATMENT_REPEAT)
470 else if(
border == BORDER_TREATMENT_REFLECT)
477 else if(
border == BORDER_TREATMENT_WRAP)
484 else if(
border == BORDER_TREATMENT_ZEROPAD)
526 if(
border == BORDER_TREATMENT_REPEAT)
557 else if(
border == BORDER_TREATMENT_REFLECT)
580 else if(
border == BORDER_TREATMENT_WRAP)
603 else if(
border == BORDER_TREATMENT_ZEROPAD)
641 if(
border == BORDER_TREATMENT_REPEAT)
672 else if(
border == BORDER_TREATMENT_REFLECT)
695 else if(
border == BORDER_TREATMENT_WRAP)
718 else if(
border == BORDER_TREATMENT_ZEROPAD)
755 if(
border == BORDER_TREATMENT_REPEAT)
786 else if(
border == BORDER_TREATMENT_REFLECT)
809 else if(
border == BORDER_TREATMENT_WRAP)
832 else if(
border == BORDER_TREATMENT_ZEROPAD)
869 if(
border == BORDER_TREATMENT_REPEAT)
900 else if(
border == BORDER_TREATMENT_REFLECT)
923 else if(
border == BORDER_TREATMENT_WRAP)
946 else if(
border == BORDER_TREATMENT_ZEROPAD)
976template <
class SrcIterator,
class SrcAccessor,
977 class DestIterator,
class DestAccessor,
978 class ProcessingFunctor>
980 pair<DestIterator, DestAccessor> d,
981 ProcessingFunctor func,
982 BorderTreatmentMode border = BORDER_TREATMENT_REPEAT)
990template <
class T1,
class S1,
992 class ProcessingFunctor>
994 MultiArrayView<2, T2, S2> dest,
995 ProcessingFunctor func,
996 BorderTreatmentMode border = BORDER_TREATMENT_REPEAT)
998 vigra_precondition(src.shape() == dest.shape(),
999 "vigra::applyWindowFunction(): shape mismatch between input and output.");
Two dimensional difference vector.
Definition diff2d.hxx:186
Class for a single RGB value.
Definition rgbvalue.hxx:128
void reflectImage(...)
Reflect image horizontally or vertically.
void initImage(...)
Write a value to every pixel in an image or rectangular ROI.
void applyWindowFunction(...)
Apply a window function to each pixels of a given image.
void copyImage(...)
Copy source image into destination image.