去除图像周期性线状噪声

本文主要讲述的是如何去除图像中周期性的线性噪声,尝试过的方法从空域开关中值滤波频域陷波滤波等,在此做个总结,其中陷波滤波的尝试失败,效果并不理想,而开关中止滤波的效果很好。

在这里插入图片描述
图1:带周期性线条噪声的图片

1.实验过程

首先我是想用openCV自带的cv2.medianBlur()来去除噪声,但是在测试过几组kernel过后发现:随着线条的消除,图片也会越来越模糊,小的kernel并不能很好的消除噪声,而大的kernel会让图片失真。然后我并没有很聪明的想到我最终的解决方案:开关中值滤波,而是转变了另一个方向:陷波滤波。

2.陷波滤波

先来说说陷波滤波吧。

陷波滤波是一种频域滤波,频域滤波的过程是先对图像进行正交变换(常用的是傅里叶变换),再对正交变换得到的正交变换域系数阵列进行滤波处理,然后逆变换到空域,得到处理结果图像。

傅里叶变换是把图像从空域变换到频域,图像的背景区域和缓慢变化部分对应频谱中的低频部分,而边
缘、细节、跳跃部分以及噪声则对应高频部分。线状和网格状噪声具有准周期性,噪声频谱与图像的频谱是可分离的,因此对于带有此类噪声的图像,可以通过频域滤波的方法来去除噪声。

理想陷波滤波器的传递函数:
H ( u , v ) = { 0 D 1 ( u , v ) < = D 0 0 D 2 ( u , v ) < = D 0 1 e l s e H(u,v)= \begin {cases} 0&D_1(u,v)<=D_0 \\0&D_2(u,v)<=D_0\\1&else \end {cases} H(u,v)=001D1(u,v)<=D0D2(u,v)<=D0else

采用陷波滤波器去除线状和网格状噪声的关键在于如何准确地定位噪声对应的亮点确定陷波滤波器参数

对图1所示的叠加了水平线状噪声的图像进行傅里叶变换后,得到如图2所示的傅立叶频谱。

在这里插入图片描述
图2:傅里叶频谱

以其纵轴上各点的位置为横坐标(自上而下),以各点的频谱值为纵坐标,绘制的频谱曲线如图3所示。

在这里插入图片描述
图3: 纵轴频谱值

图5中的中心点及其附近点均是亮点,但不是噪声所对应的。这是因为中心点表示图像的平均亮度。因此,将检测范围限制在不包含中心点附近部分的区域。

寻找各点(不包含中心点及其附近)频谱值的最小值和最大值,分别记为 k m i n k_{min} kmin k m a x k_{max} kmax,令 T = T m i n + 3 ∗ ( T m a x − T m i n / 4 ) T=T_{min}+3*(T_{max}-T_{min}/4) T=Tmin+3(TmaxTmin/4), 如果某点的频谱值是局部最大值(即大于与它相邻点 的频谱值)且其值大于等于 T T T,那么该点的位置就是亮
点中心。计算每个亮点中心与其左侧第一个谷底(局部最小值所对应的点)之间的距离,记为 D 1 D_1 D1;与其右侧第一个谷底(局部最小值所对应的点)之间的距离,记为: D 2 D_2 D2 D 1 D_1 D1 D 2 D_2 D2:中的最大值作为陷波滤波器的带宽半径,这就是所需要的陷波滤波器参数。

但遗憾的是不知道后续步骤哪里出现了问题导致最终结果并不理想,可能是filter写的比较奇怪吧。。还在检查中。放出来给大家看一下结果:

在这里插入图片描述
奇怪的结果

3.开关中值滤波

开关中值滤波器是先检测噪声像素。然后只对检测到的噪声像素进行中值滤波。而被判断为非噪声的像素则不再参与中值滤波。

效果那是非常好,话不多说上代码:

def detec(img):(w,h) = img.shapeflt = np.ones((w,h),dtype = int)bright = []for y in range(h):bright.append(np.sum(img[:][y]))x=np.arange(512)plt.plot(x,bright,c='b')plt.ylabel('Brightness')plt.savefig('Brightness.jpg')for i in range(h):if bright[i]>100000:flt[:][i]=0return fltdef medianBlur(img):#只支持3*3的BlockSize(w,h) = img.shapefor i in range(2,w-1):for j in range(2,h-1):n = 0s = 0if img[i][j] == 0:for ii in range(i-1,i+1):for jj in range(j-1,j+1):if img[ii][jj] != 0:n = n + 1s = s + img[ii][jj]if n != 0:img[i][j] = int(s/n)return img
if __name__ == '__main__':fileName = 'line.jpg'gray = loadData(fileName)flt = detec(gray)grayWithoutNoise = gray*fltrow = np.zeros(512)col = np.zeros(514)grayWithoutNoise = np.row_stack((grayWithoutNoise,row))grayWithoutNoise = np.row_stack((row,grayWithoutNoise))grayWithoutNoise = np.column_stack((grayWithoutNoise,col))grayWithoutNoise = np.column_stack((col,grayWithoutNoise))mb = medianBlur(grayWithoutNoise)mb = mb[1:512,1:512]   mb = np.array(mb,dtype=np.uint8)cv2.imshow('medianBlurWithDetection',mb)cv2.imwrite('medianBlurWithDetection.jpg',mb)cv2.waitKey(0)cv2.destroyAllWindows()
在这里插入图片描述
成功的结果

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

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

相关文章

echarts_线状图.html

<!DOCTYPE html> <html> <head><meta charset"utf-8"><title>线状图</title><script src"echarts.js"></script> </head><body><div id"main" style"width: 600px;height:…

echarts线状图

<div id"mycharts" ref"chartBox"> <span v-html"loading"></span></div> //引入线状图import echarts/lib/chart/line //echarts配置&#xff08;挂载时导入图&#xff09;creatChartFun(){ this.myChart echar…

python线状图

import numpy as np import matplotlib.pyplot as plt xnp.linspace(0,2*np.pi,10) y1,y2np.sin(x),np.cos(x) plt.plot(x,y1,markero,mecr,mfcw)//mec设置折点处图形轮廓的颜色&#xff0c;mfc设置实心的颜色 plt.plot(x,y2,marker*,ms10) plt.show()

功能很全的图书馆管理系统

个人资源与分享网站&#xff1a;http://xiaocaoshare.com/ 1.需求 1.1 bootstrapspringspringmvcmybatis&#xff0c;用maven构建 1.2分管理员和用户两个角色。用户可以查询&#xff0c;借阅归还&#xff0c;修改个人信息&#xff0c;查看借阅信息。 管理员有图书管理&…

基于QT实现的图书室管理系统

基于QT实现的图书室管理系统 图书室管理系统 该系统需创建和管理以下信息: 1、书籍信息:书名、书目编号、作者名、出版日期、出版社、库存册数、登记号数据集; 2、每册书的登记信息:登记号、是否借出、借阅日期、借书证号。 系统功能要求如下: 1.创建和管理描述每本书籍的对…

基于微信公众号的图书借阅管理系统设计与实现

目录 1 引言 2 1.1项目研究背景 4 1.2 项目研究内容 6 1.3 项目研究意义 7 2 技术选型与开发环境 9 2.1 技术选型 9 2.1.1Node.js介绍 9 2.1.2 异步编程介绍 10 2.1.3 阻塞和非阻塞介绍 11 2.1.4 MySQL数据库介绍 12 2.1.5 Nginx服务器介绍 14 2.1.6StrongLoop进程管理器介绍 1…

微信小程序图书馆管理系统

开发工具&#xff1a;IDEA、微信小程序 服务器&#xff1a;Tomcat9.0&#xff0c; jdk1.8 项目构建&#xff1a;maven 数据库&#xff1a;mysql5.7 前端技术&#xff1a;vue、uniapp 服务端技术&#xff1a;springbootmybatis-plus 本系统分微信小程序和管理后台两部分&#xf…

图书馆管理系统——借书操作

在写借书操作之前我们先来理清一下借书操作的一个思路 假如你借了“红楼梦”这本书&#xff0c;你就不能再借“红楼梦”这本书了。你就得把“红楼梦”这本书归还了之后才可以借“红楼梦”。但是其他的书籍你可以借阅。意思就是一个账号一本书只能借一次&#xff0c;只有你归还…

网上图书馆系统

网上图书馆系统 题目 设计一个网上图书馆系统&#xff0c;实现图书网上检索、预约和续借功能。具体要求如下&#xff1a; 1)系统管理&#xff1a;定义读者类别并设置参数&#xff0c;添加、修改和删除读者信息。 2)图书续借和预约&#xff1a;实现图书的续借、预约等功能。 3)…

图书馆管理系统(数据库版)

图书馆管理系统&#xff08;数据库版&#xff09; 目录&#xff1a; 图书馆管理系统&#xff08;数据库版&#xff09;项目框架项目分包数据库列表代码分析工具包所用到的接口&#xff1a; 分享一波&#xff1a;总结&#xff1a; 项目框架 项目分包 上面为本次项目的分包建包示…

图书馆管理系统的开发

课程设计的目的与要求 课程设计目的软件工程课程设计是学习软件工程课程后所进行的实践环节,目的是培养学生用工程化的思想和标准文档化的思想进行软件开发。本次课程设计通过开发一个小型实用的软件系统,亲身体验软件生命周期中的各个环节,以加深对软件工程课程的深入理解、…

基于微信小程序图书馆管理系统

开发工具&#xff1a;IDEA、微信小程序 服务器&#xff1a;Tomcat9.0&#xff0c; jdk1.8 项目构建&#xff1a;maven 数据库&#xff1a;mysql5.7 前端技术&#xff1a;vue、uniapp 服务端技术&#xff1a;springbootmybatis-plus 本系统分微信小程序和管理后台两部分&#xf…

智慧图书馆中一般有哪些设备

图书馆在很多人心目中都是一个神圣的场所&#xff0c;但现实中去过图书馆的人们都知道&#xff0c;由于管理上的原因很多图书馆都会非常的嘈杂和混乱。而智慧图书馆的建设就是让图书馆重新变回宁静祥和的知识海洋&#xff0c;通过RFID技术打造智慧化设备为读者提供更好的学习阅…

自助借还系统——智慧图书馆的新体验

自助借还系统主要用于智慧图书馆图书自助借还、查询、续借等&#xff0c;具有多本书同时识别处理&#xff0c;多卡识别功能&#xff0c;红外线感应技术&#xff0c;内置人脸识别模块和协议标准&#xff0c;系统具有ISO1800-3、ISO15693物流网工作协议&#xff0c;可无缝对接智慧…

基于微信的图书馆服务系统的设计与实现

随着时代的快速进步&#xff0c;“互联网”一词概念逐渐深入人心&#xff0c;新兴产业蓬勃发展&#xff0c;传统产业深刻重塑。传统行业与互联网的结合成为了必然的趋势。在时代的大背景下&#xff0c;高校图书馆如何突破原有服务壁垒、精准把握需求&#xff0c;人性化服务&…

图书馆管理系统(一)

图书馆管理系统 项目说明项目内容&#xff08;1&#xff09;读者信息管理&#xff1a;&#xff08;2&#xff09;图书信息管理&#xff1a;&#xff08;3&#xff09;图书借阅管理&#xff1a;&#xff08;4&#xff09;基础信息维护&#xff1a;&#xff08;5&#xff09;用户…

馆员工作站,智慧图书馆自助借还系统

RFID馆员工作站是以计算机为基础&#xff0c;集成RFID读写装置&#xff0c;对RFID标签进行识别和流通状态处理&#xff0c;辅助以其他装置用于流通部门对粘贴有RFID标签及条形码的流通资料进行快速的借还操作&#xff0c;以此提高工作人员的借还工作效率。同时能够通过扫描图书…

24小时智慧图书馆解决方案,校园智能微型图书馆

校园24小时智慧图书馆的建设&#xff0c;与学校图书馆总馆之间实现信息实时交互并提供24小时自助服务&#xff0c;24小时智能微型图书馆让学生就近借书、就近阅读&#xff0c;创造良好便利的阅读环境&#xff0c;激发学生阅读需求&#xff0c;营造浓厚的校园阅读文化氛围。 24小…

图书借阅管理系统

1、系统概述 图书借阅管理系统由管理员系统和用户系统两个子系统构成。用户运行程序后可按程序说明进入子系统&#xff0c;输入“1”进入管理员系统&#xff0c;输入“2”进入用户系统。图书信息和读者信息均用文件存储。 管理员系统&#xff1a; 新增图书&#xff1a;管理…

图书馆管理系统UML各种图

1用例图 主要用来描述“用户、需求、系统功能单元”之间的关系。它展示了一个外部用户能够观察到的系统功能模型图。 【用途】&#xff1a;帮助开发团队以一种可视化的方式理解系统的功能需求。 用例图所包含的元素如下&#xff1a;actor、usecase、子系统、四中关系&#xff…