目录

上期回顾

采用Laplace算子的原因

实现的效果

图片素材

代码的展示与讲解

效果展示

项目资源


上期回顾

上一次的图像清晰度评价没有成功,主要的原因是那几张图像清晰度评价函数都实际都采用了梯度求解,不同的场景灰度的明暗不同,梯度可能会很大,无法得到一个界定值来判定图像的清晰度,所以这次我打算只对动态模糊的图像进行判断,是否是动态模糊图像。

图像处理:图像清晰度评价

采用Laplace算子的原因

根据我之前的一个调研,在清晰度评价函数当中,我决定采用Laplace算子,因为它所得到的梯度值较小,容易获得一个模糊判断区间,而其他的几种所获得的梯度值较大,相应的误差范围也将更高,而且在opencv当中就集成了Laplace算子,很轻松就能调用,并得到一个很好的结果。

实现的效果

本次将会使用一组模糊图像和一组标准图像获得模糊判定区间(a,b),我们知道梯度值越大,图像越清晰,所以当我们进行测试一张图像时,它所返回的梯度值小于a,则可以说明它是一个模糊的图像,当返回的梯度值大于b时,则可以说明它是一个清晰的图像,而当返回的梯度值落在了a与b之间,我们也将其放在模糊图像当中。

图片素材

我自己采用的是手机拍摄的照片,分辨率都是1280*960,请注意图像的尺寸与场景会影响返回的梯度值,但我们通常采集的数据都是由相机拍摄,尺寸相同,工业上采用道路裂缝检测的场景基本类似,所以有研究的意义。

代码的展示与讲解

import cv2
import osdef getPhotopath(paths):imgfile = []file_list=os.listdir(paths)for i in file_list:newph=os.path.join(paths,i)imgfile.append(newph)return imgfiledef getImgVar(image):imggray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)imageVar = cv2.Laplacian(imggray, cv2.CV_64F).var()return imageVardef getTest(imgfile):c = []for i in imgfile:# print(i)img=cv2.imread(i)image=getImgVar(img)# print(image)c.append(float(f"{image:.3f}"))if 'test' in imgfile[0]:   #对测试集数据进行反转c.sort(reverse=True)else:c.sort()return cdef getThr():a=getTest(imgfile1)b=getTest(imgfile2)thr=(a[0],b[0])# print(thr)return thrpath1="./test"     #测试的数据集文件夹位置
path2="./Standards"  #标准图的数据文件夹位置
#获取文件下的名称
imgfile1=getPhotopath(path1)
imgfile2=getPhotopath(path2)#获得阈值
minThr,maxThr=getThr()
print(minThr,maxThr)def vagueJudge(image):img = cv2.imread(image)imgVar = getImgVar(img)if imgVar>maxThr:cv2.putText(img, f"Not Vague{imgVar:.2f}", (12, 70), cv2.FONT_HERSHEY_PLAIN, 3,(255, 0, 0), 3)else:cv2.putText(img, f"Vague{imgVar:.2f}", (12, 70), cv2.FONT_HERSHEY_PLAIN, 3,(255, 0, 0), 3)cv2.imshow("img",img)k=cv2.waitKey(0) & 0xFF
image="./Standards/001.jpg"   #需要进行测试的图片
vagueJudge(image)
  • getPhotopath函数:获得文件夹下各个图片路径,输入模糊图片的文件夹,输入标准图像的文件夹,存入列表当中。
  • getImgVar函数:返回图像梯度值。
  • getTest函数:对每个图像进行了梯度值计算后,存入列表当中,对模糊图像的进行列表序列翻转。
  • def getThr函数:获得模糊判定区间(a,b)。
  • vagueJudge函数:对新输入的图像进行模糊判定,只要小于b,就判定为模糊。

效果展示

由于我不想在拍摄新的图片,这里就采用./test文件和./Standards文件的图片。

控制台打印的模糊判定区间:

4.327 65.401

image="./Standards/001.jpg" 

image="./test/01.jpg"

项目资源

GitHub:img-processing-techniques/Sharpness_evaluation/Image processing:fuzzy image judgment at main · Auorui/img-processing-techniques (github.com)

所有资源上传在了GitHub上。

图像处理:模糊图像判断相关推荐

  1. python模糊图像判断

    参考博客: python模糊图片过滤的方法 cv2.Laplacian 模糊判断 利用Laplacian变换进行图像模糊检测 核心代码: def blurryImgs(files,clear_img_ ...

  2. Opencv图像处理:判断图片里某个颜色值占的比例

    一.功能 这里的需求是,判断摄像头有没有被物体遮挡.这里只考虑用手遮挡---->判断黑色颜色的范围. 二.使用OpenCV的Mat格式图片遍历图片 下面代码里,传入的图片的尺寸是640*480, ...

  3. 一种清淤机器人分拣识别系统的C/Python语言实现

    Part 1.项目背景 许多城市历史悠久,排水系统老旧.结构复杂,在暴雨频发的时期,因破损或淤积不畅,造成城市道路内涝频发,不仅对交通造成严重阻塞,还大大增加了发生安全事故的风险.人工清淤工作环境恶劣 ...

  4. 判断图像局部过暗_数字图像处理(第五章)

    图像复原技术可以很好的应用于图像去噪领域,系统的学习图像复原原理将有助于修复一些被噪声污染的图像,我曾经遇到过被摩尔纹污染的图像,当时不知道如何进行去噪,希望这一章的学习能够给我带来解决问题的新思路. ...

  5. 数字图像恢复matlab结论,matlab模糊图像恢复数字图像处理

    matlab模糊图像恢复数字图像处理 实验六 模糊图像恢复一.实验目的本实验是一个综合性实验,要求学生巩固学习多个知识点和内容,主要有:1.理解掌握运动图像的退化模型:2.掌握维纳滤波法的原理和实现方 ...

  6. 最初制造计算机的目的,31最早研究图像处理技术的目的是为了改善人类分析判断图像信息的能力随着计算机与人工智能技术的发展以及生产制造方面...

    题目 题型:单选题 难度:★★★★★ 31最早研究图像处理技术的目的是为了改善人类分析判断图像信息的能力随着计算机与人工智能技术的发展以及生产制造方面 31.最早研究图像处理技术的目的是为了改善人类分 ...

  7. 如何判断模糊图像_图像翻译三部曲:pix2pix, pix2pixHD, vid2vid

    所谓图像翻译,指从一副图像到另一副图像的转换.可以类比机器翻译,一种语言转换为另一种语言.下图就是一些典型的图像翻译任务:比如语义分割图转换为真实街景图,灰色图转换为彩色图,白天转换为黑夜...... ...

  8. OpenCV图像处理——判断图像是否失焦模糊

    前言 在图像处理中,避免不了会碰到一些失焦模糊的图像,特别在读取和初始化摄像头的时候,对失焦模糊判断是避免不了的一步,那么如何使用opencv去判断一张图像是否模糊呢? 判断是否失焦 失焦的图片和对焦 ...

  9. python opencv 如何检测模糊图像?自动判断模糊程度 cv2.Laplacian().var()

    参考文章1:python判断图片模糊 参考文章2:3行代码Python搞定图片清晰度识别,原来我们看到的不一定是这样的 示例代码 # -*- encoding: utf-8 -*- "&qu ...

最新文章

  1. 键盘输入语句||课后练习题
  2. 实例54:python
  3. rtt面向对象oopc——4.IO设备管理之父类调用子类方法
  4. 13种常用按钮、文本框、表单等CSS样式
  5. 等价划分测试c语言测试三角形,三角形等价划分法测试用例
  6. CISA,CISM,CISSP证书区别及cisp,oscp,osce,che简介
  7. PDF转图片 Ghostscript.NET
  8. 千万级数据表如何索引快速查找
  9. 【模型选择】从0到1的数据价值实现需要数据分析师做些什么?
  10. java的测试岗位_JAVA测试岗位职责
  11. 网络安全-终端安全检测和防御技术
  12. 图片制作、LOGO制作、ICO文件
  13. DNS的更新和ddns(动态域名解析)
  14. C语言黑与白问题代码及解析(内附视频)
  15. SIM卡中ICCID标识与IMSI的区别
  16. java开发MVC 前端
  17. 推荐 130 个令你眼前一亮的网站,总有一个用得着
  18. RK3399驱动开发 | 08 - RK3399显示系统详解(基于RK SDK Linux 4.4.194内核)
  19. html 中的push方法,push方法怎么使用
  20. 早期中国文明内生性演进的内在逻辑阐释

热门文章

  1. 计算机组成每日一题 2020 July
  2. 增值税发票管理解决方案
  3. 文字转换片假字_平假名与片假名
  4. 左耳听风ARTS第1周
  5. 以评促建,推动高效惠民数字政府建设——2018数字政府建设论坛暨第十七届中国政府网站绩效评估结果发布会在京召开...
  6. QT5 VS2010安装与配置
  7. 七年级计算机信息技术 教案,七年级信息技术上学期 第九课计算机操作系统 教案...
  8. 如何制作9.png图片
  9. 什么是网站权重及怎么提高网站权重
  10. 查看串口波特率、停止位数、奇偶校验位信息,更改COM