• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C语言 > OpenCV 2.4.3 C++ 平滑处理分析

OpenCV 2.4.3 C++ 平滑处理分析

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了opencv2.4.3下载,opencv2.4.3,opencv2.4.3配置,opencv 2.4.3.exe,opencv 2.4.3.tar.bz2等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

原理

平滑也称模糊, 是一项简单且使用频率很高的图像处理方法。

平滑处理时需要用到一个滤波器。 最常用的滤波器是线性滤波器,线性滤波处理的输出像素值(例如:g(i,j))是输入像素值(例如:f(i+k,j+l))的加权平均:

    g(i,j) = \sum_{k,l} f(i+k, j+l) h(k,l)

h(k,l)称为核, 它仅仅是一个加权系数。

均值平滑

下面是一个使用blur函数的均值平滑:
blur函数API资料:

使用归一化块滤波器进行模糊图片操作。

C++: void blur(InputArray src, OutputArray dst, Size ksize, Point anchor=Point(-1,-1), int borderType=BORDER_DEFAULT ) 参数src – 输入图片,可以使是任意通道数,该函数对通道是独立处理的,但是深度只能是CV_8U, CV_16U, CV_16S, CV_32F or CV_64F。dst – 输出图片,和输入图片相同大小和深度。ksize – 模糊内核大小。anchor – 锚点,默认值是(-1,-1),也就是锚点在内核的中心。borderType – 用于判断图像边界的模式。

该函数对图片进行平滑处理利用了下面的内核:

\texttt{K} = \frac{1}{\texttt{ksize.width*ksize.height}} \begin{bmatrix} 1 & 1 & 1 & \cdots & 1 & 1 \\ 1 & 1 & 1 & \cdots & 1 & 1 \\ \hdotsfor{6} \\ 1 & 1 & 1 & \cdots & 1 & 1 \\ \end{bmatrix}

调用blur(src, dst, ksize, anchor, borderType)相当于调用boxFilter(src, dst, src.type(), anchor, true, borderType)。

blur使用的是归一化块滤波器,输出像素值是核窗口内像素值的均值( 所有像素加权系数相等)。

高斯平滑

下面代码使用了GaussianBlur来实现平滑:

GaussianBlur函数API资料:

使用高斯滤波器进行模糊操作

C++: void GaussianBlur(InputArray src, OutputArray dst, Size ksize, double sigmaX, double sigmaY=0, int borderType=BORDER_DEFAULT) 参数 src – 输入图片,可以使是任意通道数,该函数对通道是独立处理的,但是深度只能是CV_8U, CV_16U, CV_16S, CV_32F or CV_64F.dst – 输出图片,和输入图片相同大小和深度。ksize – 高斯内核大小。ksize.width和ksize.height允许不相同但他们必须是正奇数。或者等于0,由参数sigma的乘机决定。sigmaX – 高斯内核在X方向的标准偏差。sigmaY – 高斯内核在Y方向的标准偏差。如果sigmaY为0,他将和sigmaX的值相同,如果他们都为0,那么他们由ksize.width和ksize.height计算得出。borderType – 用于判断图像边界的模式。

最有用的滤波器 (尽管不是最快的)。 高斯滤波是将输入数组的每一个像素点与高斯内核卷积将卷积和当作输出像素值。

http://www.cnblogs.com/http://www.cnblogs.com/_images/Smoothing_Tutorial_theory_gaussian_0.jpg

参考一维高斯函数,我们可以看见,他是个中间大两边小的函数。

所以高斯滤波器其加权数是中间大,四周小的。

其二维高斯函数为:

    G_{0}(x, y) = A e^{ \dfrac{ -(x - \mu_{x})^{2} }{ 2\sigma^{2}_{x} } + \dfrac{ -(y - \mu_{y})^{2} }{ 2\sigma^{2}_{y} } } 

其中 \mu 为均值 (峰值对应位置),\sigma 代表标准差 (变量x 和 变量y 各有一个均值,也各有一个标准差)。

中值平滑

使用medianBlur执行中值平滑:

medianBlur函数API资料:

使用中值滤波器进行模糊操作

C++: void medianBlur(InputArray src, OutputArray dst, int ksize)
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • OpenCV 2.4.3 C++ 平滑处理分析

相关文章

  • 2017-12-31数据结构 最小生成树
  • 2017-05-28解析C++编程中的#include和条件编译
  • 2017-05-28C++实现打印两个有序链表公共部分的方法
  • 2017-05-28C++ 字符串去重排序实例代码
  • 2017-05-28C++直接初始化与复制初始化的区别深入解析
  • 2017-05-28C++编程中变量的声明和定义以及预处理命令解析
  • 2017-05-28C++的字符串分割函数的使用详解
  • 2017-05-28C语言与JAVA的区别是什么(推荐)
  • 2017-05-28c语言 字符串转大写的简单实例
  • 2017-05-28解析C++编程中如何使用设计模式中的状态模式结构

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 关于移位操作的一点重要说明
    • linux下基于C语言的信号编程实例
    • C语言实现修改文本文件中特定行的实现代码
    • C++中Overload,Override,Hide之间的区别
    • Mac OS上搭建Apache+PHP+MySQL开发环境的详细教程
    • C++重载运算符的规则详解
    • linux之sed命令的用法
    • 详解C++编程中类模板的相关使用知识
    • 可读可执行的C语言简历源文件
    • 从汇编看c++中的多态详解

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有