当我用谷歌搜索时,我在c中遇到了一个5x5高斯掩码。 但我需要15x15高斯蒙版,所以我只是修改了这样。
void createFilter(double gKernel[][15])
{
// set standard deviation to 1.0
double sigma = 7.0;
double r, s = 2.0 * sigma * sigma;
// sum is for normalization
double sum = 0.0;
// generate 5x5 kernel
//for (int x = -2; x <= 2; x++)
for (int x = -7; x <= 7; x++)
{
//for (int y = -2; y <= 2; y++)
for (int y = -7; y <= 7; y++)
{
r = sqrt(x*x + y*y);
gKernel[x + 7][y + 7] = (exp(-(r*r) / s)) / (M_PI * s);
sum += gKernel[x + 7][y + 7];
}
}
// normalize the Kernel
for (int i = 0; i < 15; ++i)
for (int j = 0; j < 15; ++j)
gKernel[i][j] /= sum;
}
但是正确数量的15x15高斯掩模之间的输出是不同的。 我应该做些什么来获得正确的15x15掩模系数?