8#ifndef VIGRA_MEDIANFILTER_HXX
9#define VIGRA_MEDIANFILTER_HXX
14#include "applywindowfunction.hxx"
103template<
class VALUETYPE>
113 template <
class SrcIterator,
class SrcAccessor,
class DestIterator,
class DestAccessor>
119 std::fill(m_buffer.begin(), m_buffer.end(),
VALUETYPE());
124 typename std::vector<VALUETYPE>::iterator iter = m_buffer.
begin(),
139 Diff2D windowShape()
const
141 return m_window_shape;
146 std::vector<VALUETYPE> m_buffer;
150template <
class SrcIterator,
class SrcAccessor,
151 class DestIterator,
class DestAccessor>
152inline void medianFilter(SrcIterator s_ul, SrcIterator s_lr, SrcAccessor s_acc,
153 DestIterator d_ul, DestAccessor d_acc,
155 BorderTreatmentMode border = BORDER_TREATMENT_REPEAT)
157 MedianFunctor<typename SrcIterator::value_type> func(window_shape);
161template <
class SrcIterator,
class SrcAccessor,
162 class DestIterator,
class DestAccessor>
163inline void medianFilter(triple<SrcIterator, SrcIterator, SrcAccessor> s,
164 pair<DestIterator, DestAccessor> d,
166 BorderTreatmentMode border = BORDER_TREATMENT_REPEAT)
174template <
class T1,
class S1,
176inline void medianFilter(MultiArrayView<2, T1, S1>
const & src,
177 MultiArrayView<2, T2, S2> dest,
179 BorderTreatmentMode border = BORDER_TREATMENT_REPEAT)
181 vigra_precondition(src.shape() == dest.shape(),
182 "vigra::medianFilter(): shape mismatch between input and output.");
Two dimensional difference vector.
Definition diff2d.hxx:186
Class for a single RGB value.
Definition rgbvalue.hxx:128
size_type size() const
Definition tinyvector.hxx:913
iterator end()
Definition tinyvector.hxx:864
iterator begin()
Definition tinyvector.hxx:861
void medianFilter(...)
This function calculates the median of a window of given size for the complete image.
void applyWindowFunction(...)
Apply a window function to each pixels of a given image.