1 #ifndef __KUWAHARA_FILTER_T_HPP__
2 #define __KUWAHARA_FILTER_T_HPP__
12 ASSERT_ALLOCATED(&imIn, &imOut);
13 ASSERT_SAME_SIZE(&imIn, &imOut);
30 typename ImDtTypes<T>::lineType bufferIn = imIn.
getPixels();
31 typename ImDtTypes<T>::lineType bufferOut = imOut.getPixels();
33 int diameter = radius * 2 + 1;
34 int size2 = (diameter + 1) / 2;
35 int offset = (diameter - 1) / 2;
37 int width2 = W + offset;
38 int height2 = H + offset;
40 double *
mean =
new double[width2 * height2];
41 double *variance =
new double[width2 * height2];
47 for (
int y1 = -offset; y1 < H; y1++) {
48 for (
int x1 = -offset; x1 < W; x1++) {
52 for (
int x2 = x1; x2 < x1 + size2; x2++)
53 if (x2 >= 0 && x2 < W)
54 for (
int y2 = y1; y2 < y1 + size2; y2++)
55 if (y2 >= 0 && y2 < H) {
56 v = bufferIn[x2 + y2 * W];
61 mean[x1 + offset + (y1 + offset) * width2] =
62 (
double) (sum / (double) n);
63 variance[x1 + offset + (y1 + offset) * width2] =
64 (
double) ((sum2 / (double) n) -
65 mean[x1 + offset + (y1 + offset) * width2] *
66 mean[x1 + offset + (y1 + offset) * width2]);
70 int xbase2 = 0, ybase2 = 0;
72 for (
int y1 = 0; y1 < H; y1++)
73 for (
int x1 = 0; x1 < W; x1++) {
77 var = variance[xbase + ybase * width2];
84 var = variance[xbase + ybase * width2];
91 var = variance[xbase + ybase * width2];
98 var = variance[xbase + ybase * width2];
104 bufferOut[x1 + y1 * W] = (T)(
mean[xbase2 + ybase2 * width2]);
113 template <
class T1,
class T2>
void getSize(size_t *w, size_t *h, size_t *d) const
Get image size.
Definition: DBaseImage.h:118
Definition: DBaseImage.h:386
Main Image class.
Definition: DImage.hpp:57
lineType getPixels() const
Get the pixels as a 1D array.
Definition: DImage.hpp:105
RES_T kuwaharaFilter(const Image< T > &imIn, const int radius, Image< T > &imOut)
kuwaharaFilter Kuwahara Filter
Definition: filterKuwahara.hpp:7
RES_T kuwaharaFilterRGB(const Image< T > &imIn, const int radius, Image< T > &imOut)
kuwaharaFilterRGB Kuwahara Filter (color images)
RES_T mean(const Image< T > &imIn, Image< T > &imOut, const StrElt &se=DEFAULT_SE)
Mean filter.
Definition: DMorphoFilter.hpp:258