转自百度百科
卷积是一种线性运算,图像处理中常见的mask运算都是卷积,广泛应用于图像滤波。castlman的书对卷积讲得很详细。
高斯变换就是用高斯函数对图像进行卷积。高斯算子可以直接从离散高斯函数得到:
for(i=0; i<N; i++)
{
for(j=0; j<N; j++)
{
g[i*N+j]=exp(-((i-(N-1)/2)^2+(j-(N-1)/2)^2))/(2*delta^2));
sum += g[i*N+j];
}
}
再除以 sum 得到归一化算子
N是滤波器的大小,delta自选
0.006000 0.029600 0.066100 0.091400 0.110300 0.133000 0.176400 0.165700 0.078500 0.015000
0.029600 0.151800 0.347600 0.486000 0.587000 0.742900 1.009600 0.947100 0.446000 0.084500
0.063100 0.334300 0.785100 1.112300 1.357400 1.807400 2.483800 2.300100 1.071400 0.201300
0.078100 0.429400 1.037600 1.495400 1.856800 2.579300 3.499400 3.120400 1.413300 0.260100
0.076400 0.433800 1.075500 1.571900 1.950700 2.707300 3.525100 2.942900 1.263900 0.222300
0.051500 0.315800 0.826500 1.226000 1.466800 2.031200 2.593900 2.041600 0.826000 0.136900
0.019300 0.129100 0.356500 0.535100 0.616000 0.858800 1.099400 0.839200 0.326800 0.051900
0.003000 0.022300 0.064800 0.098300 0.109400 0.154900 0.200900 0.151500 0.057900 0.009000
0.785100 1.112300 1.357400 1.807400 2.483800 2.300100
1.037600 1.495400 1.856800 2.579300 3.499400 3.120400
1.075500 1.571900 1.950700 2.707300 3.525100 2.942900
0.826500 1.226000 1.466800 2.031200 2.593900 2.041600
0.785100 1.112300 1.357400 1.807400 2.483800 2.300100
1.037600 1.495400 1.856800 2.579300 3.499400 3.120400
1.075500 1.571900 1.950700 2.707300 3.525100 2.942900
0.826500 1.226000 1.466800 2.031200 2.593900 2.041600
1 1 2
1 2 4
zhh@zhh-desktop:/mnt/hgfs/VMShare/空间可分级程序/高斯计算$ make
make: *** 警告:文件“Makefile”的修改时间在将来4.5e+04
g++ PryDown.cpp -o PryDown
g++ -g -gdwarf-2 -g3 PryDown.cpp -o PryDown
make: 警告:检测到时钟错误。您的创建可能是不完整的。
zhh@zhh-desktop:/mnt/hgfs/VMShare/空间可分级程序/高斯计算$ ./PryDown
0 0 0 0 0 0 0 0 0 0
0 0 0 0 1 1 1 1 0 0
0 0 1 1 1 2 2 2 1 0
0 0 1 1 2 3 3 3 1 0
0 0 1 2 2 3 4 3 1 0
0 0 1 1 1 2 3 2 1 0
0 0 0 1 1 1 1 1 0 0
0 0 0 0 0 0 0 0 0 0
1 1 1 2 2 2
1 1 2 3 3 3
1 2 2 3 4 3
1 1 1 2 3 2
1 1 1 2 2 2
1 1 2 3 3 3
1 2 2 3 4 3
1 1 1 2 3 2
1 1 2
1 2 4