关键字:blur detection

Function:图像的清晰度检测英文表达为 image blue detection; 以此为关键字可以找到很多有关清晰度检测的demo和算法。

图像的清晰度检测方法主要分为两种情况:

一种是根据已有的图像,来判断现在的图像是否模糊;

另一种是在无参考图像的情况下,判断图像是否模糊;

我们目前解决的问题属于 无参考图像的质量评价

根据参考文献[8,9]可以得知在无参考图像下的,比较好的方法有:Brenner梯度函数、Tenengrad梯度函数、Laplacian梯度函数等;相关代码实现在github

实验环境

Python3

OpenCV3.2

Window 10

算法描述

注意:在实际的操作中,还需要对图片进行预处理操作(检测出人脸区域、设置相同大小的图片、图片灰度化等等)

只有这样才不会受到图像大小以及除去人脸以外的因素的影响。

在此假设人脸区域已经识别

本文初步对以上几种方法进行了实现。

(1)拉普拉斯算子

这个方法最简便,根据参考文献[3]可以,opencv中提供了对laplace的封装方法,直接调用即可,得到拉普拉斯算子边缘检测的图片:

deflapulase(dir,name):""":param dir: 操作目录

:param name: 操作的文件名称

:return: 分数"""filePath=dir+name # img =filePath#Laplace梯度法

frame =cv2.imread(img)#cv2.imshow("原始图", frame);

resImg= cv2.resize(frame, (800, 900),interpolation=cv2.INTER_CUBIC)

img2gray= cv2.cvtColor(resImg, cv2.COLOR_BGR2GRAY) #将图片压缩为单通道的灰度图

#img_resize = cv2.resize(img2gray, (112, 112)) # 为方便与其他图片比较可以将图片resize到同一个大小

res =cv2.Laplacian(img2gray, cv2.CV_64F)

score=res.var()

font=cv2.FONT_HERSHEY_SIMPLEX

fontSize=5

#照片 添加的文字 /左上角坐标 字体 字体大小 颜色 字体粗细

cv2.putText(resImg, str(score), (0, 200), font, fontSize, (0, 255, 0),6)

newDir=dir+"/_Laplace_/"

if notos.path.exists(newDir):

os.makedirs(newDir)

newName=newDir+name

cv2.imwrite(newName, resImg)

cv2.imshow('image', resImg)

cv2.waitKey(0)#print("Laplacian score of given image is ", score)

#cv2.imshow(r"gray效果图", img2gray);

#cv2.imshow(r"laplace效果图", resImg);

return score

(2)Brenner 检测

Brenner梯度函数最简单的梯度评价函数指标,他只是简单的计算相邻两个像素灰度差的平方,该函数定义如下:

其中f(x,y)f(x,y)表示图像ff所对应的像素点(x,y)(x,y)的灰度值,D(f)D(f)为图像清晰度计算的结果。

代码实现:

###########################################

defImageToMatrix(dir,name):#读取图片

im = Image.open(dir+name)#显示图片

#im.show()

width,height =im.size

im= im.convert("L")

data=im.getdata()

data= np.matrix(data,dtype='float')/255.0new_data=np.reshape(data,(height,width))returnnew_datadefBrenner(img):

x, y=img.shape

D=0for i in range(x-2):for j in range(y-2):

D+= (img[i+2, j] - img[i, j])**2

returnDdefTestBrener():

dir= "D:/document/ZKBH/bug/face/"imgList=getAllImg(dir)for i inrange(len(imgList)):

frame=ImageToMatrix(dir , imgList[i])

score=Brenner(frame)print(str(imgList[i]) + "is" +str(score))###########################################

defImageToMatrix(dir,name):#读取图片

im = Image.open(dir+name)#显示图片

#im.show()

width,height =im.size

im= im.convert("L")

data=im.getdata()

data= np.matrix(data,dtype='float')/255.0new_data=np.reshape(data,(height,width))returnnew_datadefBrenner(img):

x, y=img.shape

D=0for i in range(x-2):for j in range(y-2):

D+= (img[i+2, j] - img[i, j])**2

returnDdefTestBrener():

dir= "D:/document/ZKBH/bug/face/"imgList=getAllImg(dir)for i inrange(len(imgList)):

frame=ImageToMatrix(dir , imgList[i])

score=Brenner(frame)print(str(imgList[i]) + "is" +str(score))################################

(3)Tenengrad梯度函数

Tenengrad梯度函数采用Sobel算子分别提取水平和垂直方向的梯度,基于Tenengrad的图像清晰度定义如下:

G(x,y)的形式如下:

其中,T是给定的边缘检测阈值,Gx和Gy分别是像素点(x,y)处Sobel水平和垂直方向边缘检测算子的卷积。(参见参考文档[12,17])其余的方式都是一个这种类似的方式计算的额,

还有很多其他的模糊检测方法,再此不再一一赘述,详情参见GitHub。

参考文献

===========以下还没有仔细看===========

python图像清晰度_图像的模糊检测方法相关推荐

  1. python 图像清晰度_图像清晰度评价指标(Python)

    最近在毕业设计中涉及了有关增强图像清晰度的实验,需要一些指标来进行实验结果的评估.刚好网上有个总结的非常好的博客(见参考文献[1]),但没有实现方法.因此,我将在我的博客中用Python实现. 评估方 ...

  2. OpenCV快速傅里叶变换(FFT)用于图像和视讯流的模糊检测

    OpenCV快速傅里叶变换(FFT)用于图像和视频流的模糊检测 翻译自[OpenCV Fast Fourier Transform (FFT) for blur detection in images ...

  3. python图像清晰度_python 图像判断,清晰度(明暗),彩色与黑白实例

    1,判断图像清晰度,明暗, 原理,Laplacian算法.偏暗的图片,二阶导数小,区域变化小:偏亮的图片,二阶导数大,区域变化快. import cv2 def getImageVar(imgPath ...

  4. python插值算法实现_图像插值算法Opencv+python实现

    1.最近邻插值算法 在待求像素(小数)的四邻像素(整数,上下左右)中,将距离待求像素最近的邻接像素灰度值赋予待求像素.html 2.双线性插值算法 感受这个博客讲的挺详细,能够参考. 博客 双线性就是 ...

  5. java 图像傅里叶变换_图像频域滤波与傅里叶变换

    1.频率滤波 图像的空间域滤波:用各种模板直接与图像进行卷积运算,实现对图像的处理,这种方法直接对图像空间操作,操作简单.图像处理不仅可以在空间域进行还可以在频率域进行,把空间域的图像开窗卷积形式,变 ...

  6. VTK修炼之道25:图像基本操作_图像子块提取(特征区域提取)

    1.提取感兴趣区域 感兴趣区域(Volum of Interest,VOI)是指图像内部的一个子区域.在VTK中vtkExtractVOI类实现由用户指定的区域范围提取图像的子图像.该Filter的输 ...

  7. VTK修炼之道19:图像基本操作_图像像素值的访问与修改

    1.直接访问图像像素(索引法) #include <vtkAutoInit.h> VTK_MODULE_INIT(vtkRenderingOpenGL);#include <vtkS ...

  8. matlab图像降噪_图像超分:RealSR

    点击上方"AIWalker",选择加"星标"或"置顶"    重磅干货,第一时间送达 paper: https://csjcai.githu ...

  9. 人脸方向学习(一):人脸质量评价-模糊检测方法总结一

    此处为人脸检测之后进行人脸质量筛选的方案评估结果,主要是为了筛选不合格人脸,做了基本传统图像处理方法的分类,效果不是很好,后期尝试卷积神经网络做分类. 一.图像的模糊检测 1.基本方案 图像的清晰度检 ...

最新文章

  1. 某网友认为程序员来钱太快!动不动就百万年薪!国内多数人工作一辈子也拿不到百万年薪!程序员:别总盯着行业头部少数人!...
  2. c语言自动转化,C语言编程之自动类型转化
  3. java svn安装地址_SVN的安装和配置
  4. 最优传输理论和生成模型的几何观点
  5. u盘无法复制文件进去_U盘无法复制超过4GB的大文件怎么办?
  6. 做音视频开发,你读对书了吗?(内有福利)
  7. SQL求一个表中非重复数据及其出现的次数
  8. DelphiBCB一线程序员开发经验
  9. Go语言入门编程学习结束
  10. Xcode 4.2 中的Automatic Reference Counting (ARC)
  11. html条纹填充色,HTML5/Canvas 上传图片的彩色斑马条纹遮罩效果
  12. 如何在Eclipse配置PyDev插件
  13. 淘淘商城19_在taotoa-portal工程中调用taotao-rest工程
  14. 如何通过C#开发调用Skyline软件中提供的小工具
  15. 歌谷服务套件gms_谷歌gms框架安装器下载-安卓9谷歌服务框架app安装-游戏大玩家...
  16. 持NPDP和PMP证书,可以享受深圳、北京等多项福利!
  17. Outlook连接Gmail不成功可以试试以下方法
  18. 前端异步解决方案大全(2021版)
  19. 去除浏览器自动填充密码功能
  20. [Alpha] Scrum Meeting 5 - TEAM LESS ERROR

热门文章

  1. 电动汽车模型的各模块的Simulink模型,包括驾驶员模块,整车控制器模块,电机模块,变速器模块
  2. Airtest Project入门
  3. 校招真题练习035 最少立方数之和(小米)
  4. 福建晋华回应始美国制裁,称不存在窃取其他公司技术的行为
  5. 《华尔街日报》遭黑客攻击 读者数据库被盗
  6. 小技巧:微信聊天背景怎么设置?
  7. Java并发编程(多线程) -- 第四部分(JUC - 1)
  8. android 渠道索取,Android多渠道打包时获取当前渠道的方法
  9. 雷神 ZERO 2023 大黄蜂游戏本 评测
  10. 基于SpringBoot家庭理财系统(Java项目)