OpenCV学习笔记(六):非线性滤波-中值、双边:medianBlur(),bilateralFilter()

OpenCV学习笔记(六):非线性滤波-中值、双边:medianBlur(),bilateralFilter()

1、中值滤波(Median filter)
是一种典型的非线性滤波技术,基本思想是用像素点邻域灰度值的中值来代替该像素点的灰度值,该方法在去除脉冲噪声、斑点噪声(speckle noise)和椒盐噪声(salt-and-pepper noise)的同时又能保留图像边缘细节。
优点:
中值滤波在一定的条件下可以克服常见线性滤波器带来的图像细节模糊,而且对
滤除脉冲干扰及图像扫描噪声
非常有效,也常用于保护边缘信息, 保存边缘的特性使它在不希望出现边缘模糊的场合也很有用,是非常经典的平滑噪声处理方法。
缺点:
1)中值滤波花费的时间是均值滤波的5倍以上
2)对一些细节多,特别是线、尖顶等细节多的图像不宜采用

2、双边滤波(Bilateral filter)
是结合图像的空间邻近度和像素值相似度的一种折衷处理,同时考虑空域信息和灰度相似性,达到保边去噪的目的。具有简单、非迭代、局部的特点。
优点:
双边滤波器的好处是可以做边缘保存(edge preserving),双边滤波器顾名思义比高斯滤波多了一个高斯方差sigma-d,它是基于空间分布的高斯滤波函数,所以在边缘附近,离的较远的像素不会太多影响到边缘上的像素值,这样就保证了边缘附近像素值的保存。
缺点:
但是由于保存了过多的高频信息,对于彩色图像里的高频噪声,双边滤波器不能够干净的滤掉,只能够对于低频信息进行较好的滤波。
在双边滤波器中,输出像素的值依赖于邻域像素值的加权值组合,而加权系数w(i,j,k,l)取决于定义域核和值域核的乘积。

代码示例:

#include <opencv2/opencv.hpp>Mat g_srcImage,g_dstImage1,g_dstImage2,g_dstImage3;	//存储图片的Mat类型int g_nMedianBlurValue=10;					//中值滤波参数值
int g_nBilateralFilterValue=30;             //双边滤波参数值using namespace cv;
using namespace std;int main(int argc, char *argv[])
{// 载入原图g_srcImage = imread( "F:/C++/2. OPENCV 3.1.0/TEST/7.jpg", 1 );if( !g_srcImage.data ){ printf("Oh,no,读取srcImage错误~! \n"); return false; }//克隆原图到三个Mat类型中g_dstImage1 = g_srcImage.clone( );g_dstImage2 = g_srcImage.clone( );//显示原图imshow("【<0>原图窗口】",g_srcImage);// 1、中值滤波namedWindow("【<4>中值滤波】", 1);createTrackbar("参数值:", "【<4>中值滤波】",&g_nMedianBlurValue, 50,on_MedianBlur );on_MedianBlur(g_nMedianBlurValue,0);// 2、双边滤波namedWindow("【<5>双边滤波】", 1);createTrackbar("参数值:", "【<5>双边滤波】",&g_nBilateralFilterValue, 50,on_BilateralFilter);on_BilateralFilter(g_nBilateralFilterValue,0);//输出一些帮助信息cout<<endl<<"\t运行成功,请调整滚动条观察图像效果~\n\n"<<"\t按下“q”键时,程序退出。\n";//按下“q”键时,程序退出while(char(waitKey(1)) != 'q') {}return 0
}
// 1、中值滤波操作的回调函数
static void on_MedianBlur(int, void *)
{medianBlur ( g_srcImage, g_dstImage1, g_nMedianBlurValue*2+1 );imshow("【<4>中值滤波】", g_dstImage1);
}// 2、双边滤波操作的回调函数
static void on_BilateralFilter(int, void *)
{bilateralFilter ( g_srcImage, g_dstImage2, g_nBilateralFilterValue, g_nBilateralFilterValue*2, g_nBilateralFilterValue/2 );imshow("【<5>双边滤波】", g_dstImage2);
}

结果:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
参考:【OpenCV入门教程之九】 非线性滤波专场:中值滤波、双边滤波

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/491184.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Batch Normalization原理及pytorch的nn.BatchNorm2d函数

下面通过举个例子来说明Batch Normalization的原理&#xff0c;我们假设在网络中间经过某些卷积操作之后的输出的feature map的尺寸为4322&#xff0c;4为batch的大小&#xff0c;3为channel的数目&#xff0c;22为feature map的长宽 整个BN层的运算过程如下图&#xff1a; 上…

JSP简单练习-获取表单数据

在JSP中&#xff0c;server端程序与client交互最经常使用的方法就是採用表单提交数据。表单提交的方法主要有两种&#xff0c;一种是get方法。还有一种是post方法。两者最大的差别&#xff1a;使用get方法提交的数据会显示在浏览器的地址栏中&#xff0c;而post方法则不会显示&…

OpenCV学习笔记(八):形态学morpholgy(2):开/闭运算,形态学梯度、顶帽/黑帽morphologyEx()

OpenCV学习笔记&#xff08;八&#xff09;&#xff1a;形态学morpholgy(2)&#xff1a;开、闭运算&#xff0c;形态学梯度、顶帽、黑帽&#xff1a;morphologyEx() 数学形态学&#xff08;Mathematical morphology&#xff09; 是一门建立在格论和拓扑学基础之上的图像分析学…

PPT将图片变为平行四边形形状

点击图片→ 格式→ 旋转→ 其它旋转选项→ 三维旋转

“人工智能之父”艾伦·图灵登上英国50英镑新钞

图源&#xff1a;BBC来源&#xff1a;海外网海外网7月15日电英国广播公司&#xff08;BBC&#xff09;报道&#xff0c;“计算机科学和人工智能之父”艾伦图灵登上英国50英镑新钞。此前有媒体报道称&#xff0c;英格兰银行计划于2020年推出新版50英镑&#xff0c;用更耐磨的聚合…

PPT将立方体形状变为很薄的长方体

方法是选中立方体&#xff0c;调节箭头所示的黄色节点&#xff0c;即可调节立方体的厚度&#xff1a;

老李谈HTTP1.1的长连接

老李谈HTTP1.1的长连接 poptest是国内唯一一家培养测试开发工程师的培训机构&#xff0c;以学员能胜任自动化测试&#xff0c;性能测试&#xff0c;测试工具开发等工作为目标。如果对课程感兴趣&#xff0c;请大家咨询qq&#xff1a;908821478&#xff0c;咨询电话010-84505200…

OpenCV学习笔记(七):形态学morpholgy(1):腐蚀/膨胀:enrode(),dilate()

OpenCV学习笔记&#xff08;七&#xff09;&#xff1a;形态学(morpholgy)&#xff1a;腐蚀/膨胀&#xff1a;enrode(),dilate() 数学形态学&#xff08;Mathematical morphology&#xff09; 是一门建立在格论和拓扑学基础之上的图像分析学科&#xff0c;是数学形态学图像处理…

【中台】“中台”概念究竟是什么?制造业企业需要拥抱吗?

来源&#xff1a;中国电子报“忽如一夜春风来&#xff0c;千树万树梨花开。” 这首诗形容当前“中台”概念的风靡非常恰当。IT圈里不乏新的概念、新的“网红”&#xff0c;如今&#xff0c;“中台”一词占据了C位&#xff0c;成为软硬件企业尤其是互联网企业在各大演讲中经常挂…

PPT立方体三面同色

我们知道PPT插入的立方体有一面的颜色比其它两面深一点&#xff0c;例如我插入一个立方体&#xff0c;并将其填充为白色&#xff1a; 可以看到有一面并不是白色&#xff0c;而是灰色。但如果我需要的是三面都为白色的立方体呢&#xff1f; 这时可以插入一个平行四边形&#xf…

OpenCV学习笔记(九): 漫水填充:floodFill()

OpenCV学习笔记&#xff08;九&#xff09;&#xff1a; 漫水填充&#xff1a;floodFill() 定义&#xff1a; 漫水填充法是一种用特定的颜色填充联通区域&#xff08;自动选中了和种子点相连的区域&#xff0c;接着将该区域替换成指定的颜色&#xff09;通过设置可连通像素的上…

68页PPT,读懂中、美、德三国智能制造战略!

来源&#xff1a;清华大学深圳研究生院导 读这份来自清华大学深圳研究生院物流与交通学部的研究和报告&#xff0c;分析了工业4.0趋势下德、中、美竞争与合作&#xff0c;共68页&#xff0c;对于ICT领域投资者是难得好文。张亚勤、刘慈欣、周鸿祎、王飞跃、约翰.翰兹联合推荐这…

事件处理

⼀、事件的基本概念事件 是当⽤户⼿指触击屏幕及在屏幕上移动时&#xff0c;系统不断 发送给应⽤程序的 对象。系统将事件按照特定的路径传递给可以对其进⾏处理的对 象。在iOS中&#xff0c;⼀个UITouch对象表⽰⼀个触摸&#xff0c;⼀个UIEvent 对象表⽰⼀个事件。事件对象…

pytorch查看打印网络参数总个数

print("Total number of paramerters in networks is {} ".format(sum(x.numel() for x in net.parameters())))其中net是代码中的网络模型

OpenCV学习笔记(十):图像金字塔Pyramid和图像缩放:pyrDown(),pyrUp(),resize()

OpenCV学习笔记&#xff08;十&#xff09;&#xff1a;图像金字塔Pyramid和图像缩放&#xff1a;pyrDown(),pyrUp(),resize() 一、图像金字塔定义&#xff1a; 图像金字塔是图像中多尺度表达的一种&#xff0c;最主要用于图像的分割&#xff0c;是一种以多分辨率来解释图像的…

php分享二十四:数组

1&#xff1a;isset() 对于数组中为 NULL 的值不会返回 TRUE&#xff0c;而 array_key_exists() 会。 2&#xff1a;利用array_filter和strlen快速过滤数组中等于0的值 $path str_replace(array(/, \\), DIRECTORY_SEPARATOR, $path); $parts array_filter(explode(DIRECTORY…

量子纠缠和宇宙黑洞

2019年7月&#xff0c;量子纠缠&#xff08;两个光子&#xff09;照片首次公布2019年4月&#xff0c;宇宙黑洞&#xff08;质量为太阳的65亿倍&#xff09;照片首次公布来源&#xff1a;吴志刚科学网博客量子纠缠和宇宙黑洞&#xff0c;一个极小&#xff0c;一个极大&#xff0…

pytorch的F.cross_entropy交叉熵函数

F.cross_entropy计算交叉熵损失&#xff0c;代码为&#xff1a; lossF.cross_entropy(out, y) 其中out是网络输出的概率向量&#xff0c;y是真实标签&#xff0c;注意y是标量。使用这个函数时应该特别注意out是没有经过softmax处理过的。因为调用F.cross_entropy函数时会通过…

QT学习笔记(十六):setwindowflags的属性总结

QT学习笔记&#xff08;十六&#xff09;&#xff1a;setwindowflags的属性总结 此枚举类型用于为小部件指定各种窗口系统属性。它们是不常用的&#xff0c;但在一些情况下是必要的。其中一些标志取决于底层窗口管理器是否支持它们。 主要类型有 enum WindowType {Widget 0x…

1143 多少个Fibonacci数

1143 多少个Fibonacci数 时间限制:500MS 内存限制:65536K 提交次数:270 通过次数:16 题型: 编程题 语言: G;GCC Description 给你如下Fibonacci 数的定义&#xff1a; F1 1 F2 2 Fn Fn-1 Fn-2 (n > 3) 给你两个数a与b&#xff0c;现要求你计算在a与b之间&…