41 lines
919 B
C++
41 lines
919 B
C++
|
#include "blur_linear.h"
|
||
|
|
||
|
BlurLinear::BlurLinear(PNM* img) :
|
||
|
Convolution(img)
|
||
|
{
|
||
|
}
|
||
|
|
||
|
BlurLinear::BlurLinear(PNM* img, ImageViewer* iv) :
|
||
|
Convolution(img, iv)
|
||
|
{
|
||
|
}
|
||
|
|
||
|
PNM* BlurLinear::transform()
|
||
|
{
|
||
|
int maskSize = getParameter("size").toInt();
|
||
|
QList<QVariant> tmpMask = getParameter("mask").toList();
|
||
|
bool normalize = getParameter("normalize").toBool();
|
||
|
|
||
|
math::matrix<float> mask(maskSize, maskSize);
|
||
|
|
||
|
int maskValCount = 0;
|
||
|
|
||
|
for (int i=0; i < maskSize; i++)
|
||
|
{
|
||
|
for (int j=0; j < maskSize; j++)
|
||
|
{
|
||
|
if (normalize)
|
||
|
{
|
||
|
mask[i][j] = tmpMask.at(maskValCount).toDouble() / Convolution::sum(mask);
|
||
|
maskValCount++;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
mask[i][j] = tmpMask.at(maskValCount).toDouble();
|
||
|
maskValCount++;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
return convolute(mask, RepeatEdge);
|
||
|
}
|