| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> 36_OpenCV中的平滑操作 -> 正文阅读 |
|
[人工智能]36_OpenCV中的平滑操作 |
通常,平滑图像的目的是为了减少噪声和伪影。OpenCv提供5种不同的平滑操作。 目录 1. 简单模糊cv::blur()和方框型滤波器cv::boxFilter() ?4. 双边滤波器cv::bilateralFilter() 1. 简单模糊cv::blur()和方框型滤波器cv::boxFilter()cv::blur()函数实现了简单模糊,目标图像中的每个值都是源图像中相应位置一个(核)中像素的平均值。函数原型如下:
窗口尺寸由ksize声明,anchor指定计算时核与源图像的对齐方式,默认anchor为cv::Point(-1,-1),表示核相对于滤波器居中。如果源图像是一幅多通道图像,分别对每个通道进行计算。 方框型滤波器是一种矩形的并且滤波器中所有值k[i][j]全部相等的滤波器。通常所有的k[i][j]为1或者1/A,A是滤波器的面积。简单模糊是方框型滤波器的一种特殊形式,也称为归一化方框型滤波器,函数为cv::bocFilter(),函数原型如下:
cv::boxFilter()是一种一般化的形式,cv::blur()是一种特殊化的形式。区别是前者可以非归一化形式调用,并且输出图像深度可以控制。如果ddepth=-1,目标图像的深度与源图像保持一致。 如下分别是原图、简单平滑、方框型滤波的比较: 2. 中值滤波器cv::medianBlur()中值滤波器将每个像素替换为围绕这个像素的矩形邻域内的中值或“中值”像素(相对于平均像素)。 ? 平均的简单模糊对噪声图像,特别是由较大孤立的异常值非常明暗,少量具有较大偏差的点也会影响均值滤波。中值滤波可以采用取中间点的方式消除异常值。 函数原型:
中值滤波器是一种非线性核的实例。cv::medianBlur的参数本质上与简单模糊的基本相同:源数组src、目标数组dst和内核大小ksize。cv::medianBlur()默认核的中心点为锚点。 如下分别是原图和中值滤波后图片的比较: 3. 高斯滤波器cv::GaussianBlur()高斯滤波器对输入数组进行以此规范化的高斯核滤波,然后输出目标数组。 函数原型:
参数ksize指定滤波器窗口的宽度和高度;sigmaX表示高斯核在x方向上的sigma值(最大值的半宽);sigmaY表示y方向上的sigma值,如果只给定了x,同时设置y为0,那么y=x。如果两者都设为0,那么高斯参数将根据下列公式确定: OpenCv实现的高斯平滑为几个常用的内核提供性能上的优化,3x3、5x5以及7x7的标准sigma核(sigmaX=0.0)相对其他核性能更优。高斯模糊支持单通道/三通道的8位/32位浮点型图像。 如下分别是原图和高斯滤波后图片的比较: ?4. 双边滤波器cv::bilateralFilter()双边滤波器是一种比较大的图像分析算子,也就是边缘保持平滑。 高斯模糊的过程是减缓像素在空间上的变化,因此与邻域的关系紧密,而随机噪声在像素间的变化幅度会非常的大(即噪声不是空间相关的)。基于这种前提高斯平滑很好地减弱了噪声并且保留了小信号。但是,这种方式破坏了边缘信息,最终结果是高斯模糊把边缘也模糊了。 双边滤波对每个像素及其领域内的像素进行了加权平均。其权重由两部分组成,第一部分同高斯平滑,第二部分也是高斯权重,不同的是它不是基于空间距离而是色彩强度差计算来的。 多通道图像上图像上强度差由各分量的加权累加代替。 可以把双边滤波当作是高斯平滑,只是相似程度更高的像素权值更高,边缘更明显,对比度更高。双边滤波的效果就是将源图像变成一幅水彩画。这在图像分割领域十分有用。 函数原型:
参数sigmaColor越大,平滑时所包括的强度越大,图像的不连续性会更显著。 参数d对算法的效率影响很大,通常视频处理时不大于5,在非实时应用方面可以为9。如果该值设置-1,函数会自动为图像计算sigmaSpace变量的值。 ?实际情况中,小的sigmaSpace值比如10会带来一个轻微但也明显的效果,而大的sigmaSpace值比如150会对图像产生非常显著的影响,使图像有一种卡通的效果。 使用示例:
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 6:50:48- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |