高斯滤波器的模板算子生成
原理:
代码:
//生成高斯滤波函数
QVector<QVector<double>> generateGaussian(int size,double sigma)
{
int i = 0, j = 0;
double sum = 0.0;
int center = size / 2; //中点坐标
//创建高斯核函数
QVector<double> col(size,0);
QVector<QVector<double>> gaussian;
for(i = 0; i<size; i++)
{
gaussian.push_back(col);
}
for(i = 0; i<size; i++)
{
for(j = 0; j<size; j++)
{
gaussian[i][j] = (1.0 / (2*PI*sigma*sigma))*exp(-((pow((i-center),2.0) + pow((j-center),2.0)) / (2*sigma*sigma)));
sum += gaussian[i][j];
}
}
//归一化
for(i = 0; i<size; i++)
{
for(j = 0; j<size; j++)
{
gaussian[i][j] = gaussian[i][j] / sum;
cout<<gaussian[i][j];
cout<<" ";
}
cout<<endl<<endl;
}
return gaussian;
}
generateGaussian(3,1.8);