高斯模糊是一种两维的卷积模糊操作,在图像完成高斯模糊相对于均值模糊来说,
计算量会增加,但是高斯模糊可以实现一些特殊效果,特别是在图像噪声(非椒盐
噪声)消去方面,更是有着非常好的效果。一维高斯公式如下:
其中x是制定[-n,n]范围的整数,sigma代表标准方差。通常取值为1.
一维高斯函数Java代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
private
float
[] get1DKernalData(
int
n,
float
sigma) {
float
sigma22 =
2
*sigma*sigma;
float
Pi2 =
2
*(
float
)Math.PI;
float
sqrtSigmaPi2 = (
float
)Math.sqrt(Pi2) * sigma ;
int
size =
2
*n +
1
;
int
index =
0
;
float
[] kernalData =
new
float
[size];
for
(
int
i=-n; i<=n; i++) {
float
distance = i*i;
kernalData[index] = (
float
)Math.exp((-distance)/sigma22)/sqrtSigmaPi2;
System.out.println(
"\t"
+ kernalData[index]);
index++;
}
return
kernalData;
}
|
假设输入 n= 1, sigma = 1时,输出的Kernel数据为:
0.24197073, 0.3989423, 0.24197073
两维的高斯分布函数为:
对应的Java实现代码为: