OpenCV实现的高斯滤波探究_2(《学习OpenCV》练习题第五章第三题cde部分)
这部分基本上练习的是如何用非对称的高斯核做高斯滤波。
如果用户希望采用非对称的高斯核,则引入param4,最后两个参数分别代表水平核以及垂直核维数。
因此,当param3 ≠param4≠0的时候,就采用了非对称的高斯核。
param1 = param2 = 0, param3 = 1, param4 = 9的滤波结果:
根据上篇博文介绍的那样,实际上在这种情况中滤波核的大小为7 * 55,即平行向的核尺寸为7,竖直向的核尺寸为55,因此,结果图像在竖直方向上更模糊一些。
我们可以来看下平行向上的一维高斯变换核:
0.004433
0.054006
0.242036
0.399050
0.242036
0.054006
0.004433
竖直向的一维高斯变换核(总共有55个元素,我就直接截图了):
param1 = param2 = 0, param3 = 9, param4 = 1的滤波结果:
这个恰好和上面那个是反着来的,滤波核的大小为55* 7,结果图像在平行方向上更模糊一些。
综合前面两个滤波过程的结果:
F部分中译版估计是有错,cvSmooth后面的四个参数不能都为零,否则就会错误。
我这里实现的是param1 = param2 = 0, param3 = param4 = 9的滤波结果:
从视觉效果和前面那个做了两次滤波操作的结果来比较,基本上是差不多的,两幅图像的PSNR值为51.638780,可以认为两幅图像基本是相同的,误差很小(小过大部分的有损压缩)。
总结:1. 如果要实现非对称的高斯滤波,引入第四个参数param4,最后两个参数分别代表水平核以及垂直核维数;
2. 要在平行方向上更模糊一点,即将param1或者param3设置地更大一些。反之,则将param2或param4设置地更大一些;
3.二维高斯函数卷积可以分两步来进行,首先将图像与一维高斯函数进行卷积,然后将卷积结果与方向垂直的相同一维高斯函数卷积。