C++ OpenCV模糊图像

模糊图像

图像模糊是图像处理中最常用的也是比较简单的操作,使用该操作的原因之一就是为了给图像预处理时隆低嗓声.

卷积

就是叠加.卷积的重要的物理意义是:一个函数(如:单位响应)在另一个函数(如:输入信号)上的加权叠加。

通俗的说: 在输入信号的每个位置,叠加一个单位响应,就得到了输出信号。 这正是单位响应是如此重要的原因。

卷积的应用

用一个模板和一幅图像进行卷积,对于图像上的一个点,让模板的原点和该点重合,然后模板上的点和图像上对应的点相乘,然后各点的积相加,就得到了该点的卷积值。对图像上的每个点都这样处理。由于大多数模板都是对称的,所以模板不旋转。卷积是一种积分运算,用来求两个曲线重叠区域面积。可以看作加权求和,可以用来消除噪声、特征增强。 把一个点的像素值用它周围的点的像素值的加权平均代替。 卷积是一种线性运算,图像处理中常见的mask运算都是卷积,广泛应用于图像滤波。 卷积关系最重要的一种情况,就是在信号与线性系统或数字信号处理中的卷积定理。利用该定理,可以将时间域或空间域中的卷积运算等价为频率域的相乘运算,从而利用FFT等快速算法,实现有效的计算,节省运算代价

用图片来说明

OpenCV中自带了4种模糊算法:

  • blur(均值模糊)
  • GaussianBlur(高斯模糊)
  • medianBlur(中值模糊)
  • bilateralFilter(双边滤波)

新建项目

新建一个项目opencv-0009,配置属性(VS2017配置OpenCV通用属性),然后在源文件写入#include和main方法.并加载我们常用的那个图片显示出来


均值模糊

增加一个函数blur()

然后运行效果


高斯模糊

我们增加一个方法GaussianBlur()

我们把原来的均值模糊size改为9*9, 高斯模糊也用9*9,然后都显示出来的效果

最后边的是高斯模糊,图片上看不是非常清楚,其实如果仔细看对看出对比来,右边的高斯模糊轮廓能明显一些.


中值模糊

  • 中值是统计排序的滤波嚣
  • 中值对椒盐噪声有很好的抑制作用

中值模糊API

medianBlur(Mat src,Mat dst,ksize)

ksize大小必须是大于1而且必须是奇数

我们增加一个方法medianBlur()

我们把ksize设为9,然后看显示出来效果

可以看出来最右边是我们的中值模糊,整体模糊的比较平均.


双边模糊

双边模糊的特点:

  • 均值模糊无法克服边缘像素信息丢失缺陷,原因是均值滤波是基于平均权重.
  • 高斯模糊部分克服了该缺陷,但是无法完全避免,因为没有考虑像素值的不同.
  • 高斯双边模糊,是边缘保留的滤波方法,避免了边缘信息丢失,保留了图像轮廓不变.

双边模糊的API

bilateralFilter(src,dst,d=15,150,3);

  • 15--计算的半径,半径之内的像数都会被纳入计算,如果提供-1,则根据sigma space的参数取值.
  • 150--sigma color,决定多少差值之内的像素会被计算
  • 3--sigma space,如果d的值大于0则声明无效,否则根据它来计算d值

我们增加一个方法bilateralFilter()

因为我们的原图色差不大,所以我们把值调的大了一点,然后我们看看效果

可以看到基本样子没变,只是把标红框的地方模糊了一下,轮廓还是非常明显的

放大一点看一下

-END-

本文分享自微信公众号 - 微卡智享(VaccaeShare)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-04-26

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏全栈修炼

分享高效使用 Chrome 浏览器调试前端代码的技巧

相信大部分前端同学都是用 Chrome 浏览器进行开发,这篇博客要分享的基本上是除了我们常用 console.log之外的,Chrome 开发者工具控制面板提供...

16730
来自专栏极乐技术社区

精读《Vue3.0 Function API》

Vue 3.0 的发布引起了轩然大波,让我们解读下它的 function api RFC 详细了解一下 Vue 团队是怎么想的吧!

18420
来自专栏菩提树下的杨过

webrtc笔记(2): 1对1实时视频/语音通讯原理概述

开始正文之前,先思考1个问题:2个处于不同网络环境的(具备摄像头/麦克风多媒体设备的)浏览器,要实现点对点的实时视频/语音通讯,难点在哪?

24530
来自专栏Java研发军团

Java 框架之Redis 分布式缓存

在提高应用程序速度和性能上,每一毫秒都很重要。根据谷歌的一项研究,假如一个网站在3秒钟或更短时间内没有加载成功,会有 53% 的手机用户会离开。

32650
来自专栏A周立SpringCloud

跟我学Spring Cloud(Finchley版)-04-服务注册与服务发现-原理剖析

地址硬编码问题——电影微服务中将用户微服务的地址写死,如果用户微服务地址发生变化,难道要重新上线电影微服务吗?

12330
来自专栏A周立SpringCloud

JDK 12即将发布!你还学得动吗?

由此可知,目前JDK 12已处于Rampdown Phase One阶段,所有的新特性已经冻结,不会再针对其他JEP(JDK Enhancement Propo...

9820
来自专栏CreateAMind

通过Docker安装谷歌足球游戏环境

足球环境github链接:https://github.com/google-research/football

11020
来自专栏全栈修炼

ES6 系列之异步处理实战

为了实现这个功能,我们需要用到几个 Nodejs 的 API,所以我们来简单介绍一下。

6520
来自专栏A周立SpringCloud

跟我学Spring Cloud(Finchley版)-17-Zuul路由配置详解

默认的路由规则是:访问 $ZUUL_URL/指定为服务/** 会被转发到 指定微服务 的 /** 。

11540
来自专栏Young Dreamer

前端页面性能指标与采集方式

目前业界常用的指标就是:白屏、首屏、domready和pageloaded四个指标,在usual-index.html中, 我们通过performance A...

24720

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励