opencv mat release thrown_【2】OpenCV核心模块(3)矩阵的Mask操作(滤波)

62425a30c39395e36c6a1137f89d8b8f.png

矩阵的mask运算相当简单,就是通过一个mask矩阵(也称为核kernel)在图像中移动,并重新计算图像中的每个像素值。Mask矩阵决定着当前计算的像素点周围像素对其值的影响程度。从数学的角度来看,新的像素值是指定的数值进行了加权平均。通常所说的图像滤波、卷积、相关等运算都用到了该计算方法。下面是示例。

  • 原文网址Mask operations on matrices
  • 本地目录D:opencvsourcesdoctutorialscoremat-mask-operations
  • 代码目录D:opencvsourcessamplescpptutorial_codecoremat_mask_operations
  • GitHub 有相应文档和OpenCV源代码
  • 版本OpenCV4.1.2(版本兼容性见英文原文,部分文档适用于OpenCV2.0和3.0)
  • 环境Windows、C++、VS2019 Community

测试案例

这里是一个图像对比度增强的方法。用下面方法重新计算图像的像素值。

上面两个公式是等价的,后者更直观。公式表示,一个点的新像素值,是以该点为中心的3*3区域与为3*3的mask矩阵对应元素相乘,然后相加得到的。

代码

//---//自定义Sharpen()函数与filter2d()函数运行时间对比,实现同样的mask运算(锐化、滤波)---//

filter2D函数

filter2D有七个参数,上面例子用到了前面四个,分别是输入图像、输出图像、输出图像位深。第五个参数是指定核(mask)的中心位置,默认是中心。第六个是将计算结果加一个值(处理结果变亮或暗),第七个是填充边界的方法。

处理结果

原文提出filter2D函数快于自定义的sharpen函数,应该是在release模式下。在debug模式下却是filter2D函数较慢。原文给出的处理结果的图与代码中导入的图不一致,这里给出新测试出的结果。debug模式下,自定义函数运行时间仅为filter2D的1/3,而release下,变为1.4倍左右。filter2D的性能则是提升了70倍。

fe272a196d9ef5c76fc9644b71830476.png
debug结果

181303cd9bdade87f5018f749e53c3ad.png
release结果

1e331e98795483269c51929cb03c7536.png
原图

7812ad8486c34c65d016303d6bf04954.png
结果
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值