前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基于OpenCV无参考图像的质量评价

基于OpenCV无参考图像的质量评价

原创
作者头像
用户2249745
修改2019-02-27 10:46:07
8K0
修改2019-02-27 10:46:07
举报

环境信息:

Python 2.7.5

opencv 3.4.4 安装:pip install opencv-python

算法贴:

http://www.cnblogs.com/greentomlee/p/9379471.html

源码地址:

https://github.com/Leechen2014/python--/blob/master/BlurDetection.py

由于环境下不支持界面可视化,把源代码中的cv2.imshow(), cv2.moveWindow()等窗口可视化操作去掉。

参考:

http://python.jobbole.com/83702/

https://blog.csdn.net/charlene_bo/article/details/72673490

算法基本原理:

将图片压缩为单通道的灰度图cv2.cvtColor(reImg, cv2.COLOR_BGR2GRAY)后,通过评估图像的清晰度衡量图像质量优劣。源代码中提供了下面几种方法:

1. Brenner梯度函数(TestBrener):计算相邻两个像素灰度差的平方,函数返回值越大,图片质量越好,处理一张450*600的图片大概需要2秒。

2. Tenengrad梯度函数(Test_Tenengrad):采用Sobel算子分别提取水平和垂直方向的梯度值,函数返回值越大,图片质量越好,处理一张450*600的图片大概需要0.08秒。

3. Laplacian 梯度函数(TestLapulase):用Laplacian算子分别提取水平和垂直方向的梯度值,函数返回值越大,图片质量越好,处理一张450*600的图片大概需要0.062秒。

4. SMD(灰度方差)函数(TestSMD):将灰度变化作为聚焦评价的依据,函数返回值越大,图片质量越好,处理一张450*600的图片大概需要5.581秒。

5. SMD2 (灰度方差乘积)函数(TestSMD2):对每一个像素领域两个灰度差相乘后再逐个像素累加,函数返回值越大,图片质量越好,处理一张450*600的图片大概需要5.613秒。

6. 方差函数(TestVariance):清晰聚焦的图像有着比模糊图像更大的灰度差异,函数返回值越大,图片质量越好,处理一张450*600的图片大概需要0.05秒。

7. Vollath函数(Test_Vollath):函数返回值越大,图片质量越好,处理一张450*600的图片大概需要0.05秒。

测试效果(使用Laplacian 梯度函数的结果):

图1
图1
图2
图2

对于这种是由于拍摄时抖动引起整体画面模糊的效果比较好。对于下面场景下,人做各种动作引起画面局部(人脸、手等部位)的模糊效果则没那么好:

图3
图3
图4
图4
图5
图5
图6
图6

从上面几张图来看,图5的手部比其他3张图更加模糊,但算法给出的评分都很接近,并不能很好区分出来。

总结:

上述几个无参考图像质量评价的常用算法对于区分整体模糊图片和局部模糊图片效果很好。但是,由于图3-图6中的模糊基本上是由于手部在做动作时产生局部模糊,无参考图像质量评价的几个常用算法对这种场景效果不好。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
图片处理
图片处理(Image Processing,IP)是由腾讯云数据万象提供的丰富的图片处理服务,广泛应用于腾讯内部各产品。支持对腾讯云对象存储 COS 或第三方源的图片进行处理,提供基础处理能力(图片裁剪、转格式、缩放、打水印等)、图片瘦身能力(Guetzli 压缩、AVIF 转码压缩)、盲水印版权保护能力,同时支持先进的图像 AI 功能(图像增强、图像标签、图像评分、图像修复、商品抠图等),满足多种业务场景下的图片处理需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档