| 经过几个月的努力,小白终于完成了市面上第一本OpenCV 4入门书籍《OpenCV 4开发详解》。为了更让小伙伴更早的了解最新版的OpenCV 4,小白与出版社沟通,提前在公众号上连载部分内容,请持续关注小白。 |
我们在测量数据时,往往会多次测量最后求取所有数据的平均值作为最终结果,均值滤波的思想和测量数据时多次测量求取平均值的思想一致。均值滤波将滤波器内所有的像素值都看作中心像素值的测量,将滤波器内所有的像数值的平均值作为滤波器中心处图像像素值。滤波器内的每个数据表示对应的像素在决定中心像素值的过程中所占的权重,由于滤波器内所有的像素值在决定中心像素值的过程中占有相同的权重,因此滤波器内每个数据都相等。均值滤波的优点是在像素值变换趋势一致的情况下,可以将受噪声影响而突然变化的像素值修正到接近周围像素值变化的一致性下。但是这种滤波方式会缩小像素值之间的差距,使得细节信息变得更加模糊,滤波器范围越大,变模糊的效果越明显。
OpenCV 4中提供了blur()函数用于实现图像的均值滤波,该函数的函数原型在代码清单5-8中给出。
代码清单5-8 blur()函数原型
1. void cv::blur(InputArray src,
2. OutputArray dst,
3. Size ksize,
4. Point anchor = Point(-1,-1),
5. int borderType = BORDER_DEFAULT
6. )
- src:待均值滤波的图像,图像的数据类型必须是CV_8U、CV_16U、CV_16S、CV_32F和CV_64F这五种数据类型之一。
- dst:均值滤波后的图像,与输入图像具有相同的尺寸和数据类型。
- ksize:卷积核尺寸。
- anchor:内核的基准点(锚点),其默认值为(-1,-1)代表内核基准点位于kernel的中心位置。基准点即卷积核中与进行处理的像素点重合的点,其位置必须在卷积核的内部。
- borderType:像素外推法选择标志,取值范围在表3-5中给出,默认参数为BORDER_DEFAULT,表示不包含边界值倒序填充。
该函数的第一个参数为待滤波图像,可以是彩色图像也可以是灰度图像,甚至可以是保存成Mat类型的多维矩阵数据。第二个参数滤波后的图像,保持与输入图像相同的数据类型、尺寸以及通道数。第三个参数是滤波器的尺寸,输入滤波器的尺寸后函数会自动确定滤波器,其形式如式(5.3)所示。
K = 1 k s i z e . w i d t h ∗ k s i z e . h e i g h t [ 1 1 1 . . . 1 1 1 1 1 . . . 1 1 . . .
本文介绍了OpenCV 4中blur()函数用于实现图像均值滤波的原理和应用,阐述了滤波器尺寸、基准点、外推方法对图像处理效果的影响,并通过示例展示了不同噪声情况下均值滤波的处理结果,揭示了滤波器尺寸与图像模糊程度的关系。
最低0.47元/天 解锁文章
1262

被折叠的 条评论
为什么被折叠?



