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; 上…

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;

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领域投资者是难得好文。张亚勤、刘慈欣、周鸿祎、王飞跃、约翰.翰兹联合推荐这…

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

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

量子纠缠和宇宙黑洞

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

这些重大科技领域问题,听听专家怎么说

来源&#xff1a;科技日报从前不久结束的全英华人教授协会年会上了解到&#xff0c;目前人类面临的许多问题都可以通过扎实的科研创新和精准的技术应用予以解决&#xff1b;新的技术领域的出现&#xff0c;不代表传统技术方法都要丢弃&#xff1b;尽管摆在广大科技从业者面前的…

plt.fill_between用法

plt.fill_between用颜色填充两条曲线之间的区域plt.fill_between(x, y1, y2)&#xff0c;其中x是横坐标&#xff0c;y1和y2是两条曲线&#xff0c;这个函数的作用是用颜色填充y1和y2这两条曲线之间的区域。 该函数最常用的用法是已知均值曲线和标准差&#xff0c;画出标准差覆…

QT+OpenCV综合示例:载入、读取图片

QTOpenCV综合示例&#xff1a;载入、读取图片1、代码&#xff1a;2、运行结果&#xff1a;下载1 GitHub: 下载2 1、代码&#xff1a; 1&#xff09;opencv_imwrite_Q.pro 添加&#xff1a; INCLUDEPATH D:\opencv-3.1.0\opencv\build\includewin32:CONFIG(release, debug|re…

“算法战:DARPA下一代人工智能计划初见成效” 背景分析与初步研判

2018年9月&#xff0c;美国国防高级研究计划局&#xff08;DARPA&#xff09;宣布将出资20亿美元,用于开发新的人工智能技术。近日&#xff0c;DARPA副局长彼得海纳姆在华盛顿接受记者采访时说&#xff0c;DARPA的“下一代人工智能”&#xff08;AI Next&#xff09;计划在实施…

OpenCV学习笔记(十一):阈值化:threshold(),adaptivethreshold()

OpenCV学习笔记&#xff08;十一&#xff09;&#xff1a;阈值化&#xff1a;threshold(),adaptivethreshold() 一、定义&#xff1a; 1&#xff09;固定阈值操作 double threshold( InputArray src, // 输入图像&#xff0c;单通道 OutputArray dst, // 输出图像 double…

北京邮电大学刘伟教授:人机融合与混合智能的新应用场景

前言&#xff1a;本文是北京邮电大学人机交互与认知工程实验室主任、科技委人机融合智能组首席科学家刘伟教授就混合智能的产生、起源和新应用场景所做的深度阐述。第一部分是刘伟老师从新书《崛起的超级智能&#xff1a;互联网大脑如何影响科技未来》延伸的关于人机融合的思考…

VC++6.0怎么打开工程

点击文件→打开&#xff0c;选择工程所在文件夹&#xff0c;选择后缀名为dsp的文件打开即可。 若直接选择cpp后缀名打开&#xff0c;打开的只是cpp文件&#xff0c;而不是工程&#xff0c;此时VC右侧不会显示工程信息。

问题解决:QtCreator屏蔽指定警告:如C4819等

QT creator 频繁报出 &#xff0c;不好解决的错误如&#xff1a; warning: C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失 方法一&#xff1a;&#xff08;屏蔽此警告&#xff09; 在工程文件.pro里面添加 # disable C…