1.清晰度检测:

  • 利用拉普拉斯算子计算图片的二阶导数,反映图片的边缘信息,同样事物的图片,清晰度高的,相对应的经过拉普拉斯算子滤波后的图片的方差也就越大。
import cv2
#利用拉普拉斯
def getImageVar(imgPath):image = cv2.imread(imgPath)img2gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)imageVar = cv2.Laplacian(img2gray, cv2.CV_64F).var()return imageVar
imageVar = getImageVar("tooth/15.jpg")
print(imageVar)

2.亮度检测:

  • 计算图片在灰度图上的均值和方差,当存在亮度异常时,均值会偏离均值点(可以假设为128),方差也会偏小;通过计算灰度图的均值和方差,就可评估图像是否存在过曝光或曝光不足。
import cv2
import numpy as np
img = cv2.imread('1.jpg')
# 把图片转换为单通道的灰度图
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 获取形状以及长宽
img_shape = gray_img.shape
height, width = img_shape[0], img_shape[1]
size = gray_img.size
# 灰度图的直方图
hist = cv2.calcHist([gray_img], [0], None, [256], [0, 256])
# 计算灰度图像素点偏离均值(128)程序
a = 0
ma = 0
#np.full 构造一个数组,用指定值填充其元素
reduce_matrix = np.full((height, width), 128)
shift_value = gray_img - reduce_matrix
shift_sum = np.sum(shift_value)
da = shift_sum / size
# 计算偏离128的平均偏差
for i in range(256):ma += (abs(i-128-da) * hist[i])
m = abs(ma / size)
# 亮度系数
k = abs(da) / m
print(k)
if k[0] > 1:# 过亮if da > 0:print("过亮")else:print("过暗")
else:print("亮度正常")

3.色偏检测:

  • 将RGB图像转变到CIE Lab空间,其中L表示图像亮度,a表示图像红/绿分量,b表示图像黄/蓝分量。通常存在色偏的图像,在a和b分量上的均值会偏离原点很远,方差也会偏小;通过计算图像在a和b分量上的均值和方差,就可评估图像是否存在色偏。
import cv2
img = cv2.imread('tooth/10.jpg')
img = cv2.cvtColor(img, cv2.COLOR_BGR2LAB)
l_channel, a_channel, b_channel = cv2.split(img)
h,w,_ = img.shape
da = a_channel.sum()/(h*w)-128
db = b_channel.sum()/(h*w)-128
histA = [0]*256
histB = [0]*256
for i in range(h):for j in range(w):ta = a_channel[i][j]tb = b_channel[i][j]histA[ta] += 1histB[tb] += 1
msqA = 0
msqB = 0
for y in range(256):msqA += float(abs(y-128-da))*histA[y]/(w*h)msqB += float(abs(y - 128 - db)) * histB[y] / (w * h)
import math
result = math.sqrt(da*da+db*db)/math.sqrt(msqA*msqA+msqB*msqB)
print("d/m = %s"%result)

参考链接:清晰度检测:https://blog.csdn.net/qq_42238397/article/details/81745600
亮度检测:https://blog.csdn.net/qq_40790959/article/details/106107574
色偏检测:
https://blog.csdn.net/sparrowwf/article/details/86595162
https://blog.csdn.net/fightingforcv/article/details/52724848

基于python+opencv的图片质量检测(清晰度+亮度+色偏)相关推荐

  1. 基于Python+OpenCV车道线检测(直道和弯道)

    基于Python+OpenCV车道线检测(直道和弯道) 基于Python+OpenCV车道线检测(直道和弯道)

  2. 基于python+opencv的人脸检测+

    人脸检测分为两种:一种是基于知识的,一种是基于深度学习的.深度不会学习 人脸识别属于目标检测,主要涉及两个方面: ①先对检测的物体进行概率统计,从而知道待检测对象的一些特征,建立其目标的检测模型 ②用 ...

  3. 毕业设计 - 题目:基于机器视觉opencv的手势检测 手势识别 算法 - 深度学习 卷积神经网络 opencv python

    文章目录 1 简介 2 传统机器视觉的手势检测 2.1 轮廓检测法 2.2 算法结果 2.3 整体代码实现 2.3.1 算法流程 3 深度学习方法做手势识别 3.1 经典的卷积神经网络 3.2 YOL ...

  4. 基于python+OpenCV的车牌号码识别

    基于python+OpenCV的车牌号码识别 车牌识别行业已具备一定的市场规模,在电子警察.公路卡口.停车场.商业管理.汽修服务等领域已取得了部分应用.一个典型的车辆牌照识别系统一般包括以下4个部分: ...

  5. 基于python opencv人脸识别的签到系统

    基于python opencv人脸识别的签到系统 前言 先看下效果 实现的功能 开始准备 页面的构建 功能实现 代码部分 总结 前言 一个基于opencv人脸识别和TensorFlow进行模型训练的人 ...

  6. python+opencv车道线检测(简易实现)

    python+opencv车道线检测(简易实现) 技术栈:python+opencv 实现思路: canny边缘检测获取图中的边缘信息: 霍夫变换寻找图中直线: 绘制梯形感兴趣区域获得车前范围: 得到 ...

  7. 管道无损检测python_基于PYTHON的多通道漏磁检测系统设计

    基于 PYTHON 的多通道漏磁检测系统设计 * 李广凯 , 周庆祥 , 肖君武 [摘 要] 针对钢管漏磁检测中存在单通道探头检测效率低,缺陷定量困难,仪 器不便携带等难题,根据漏磁检测原理设计了一套 ...

  8. 【开源分享】基于Python+OpenCV+PyQt5车牌识别(GUI界面)

    亲测无错:基于Python+OpenCV+PyQt5车牌识别(GUI界面)绝对可以用的!!!!! 基于Python+OpenCV+PyQt5车牌识别(GUI界面) 参考文档

  9. OpenCV基于Python霍夫圆检测—基于梯度的霍夫圆检测

    基于梯度的霍夫圆检测 1. 回顾与目标 2. 基于梯度的霍夫圆检测 2.1 问题分析 2.2 基于梯度的霍夫圆检测步骤 3. 基于梯度的霍夫圆检测函数HoughCircles 3.1 函数HoughC ...

最新文章

  1. Unet实现图像分割(二)
  2. 使用Toast进行用户提醒(转)
  3. 【分布式计算】MapReduce的替代者-Parameter Server
  4. 普中51控制火焰传感器_热电偶在煤气灶天然气保护控制中的应用原理
  5. json处理最外层引号
  6. 《移动App测试的22条军规》—App测试综合案例分析23.4节测试微信App的手势操作...
  7. 性能测试的几个参数概念
  8. EIGRP单边邻居——认证
  9. 热榜第一!GitHub 标星 5.6w,用 Python 实现所有算法!
  10. 使用entityframework操作sqlite数据库
  11. PCA原理及代码实现
  12. 设计模式-头脑风暴-速记
  13. mysql命令行闪退解决办法。
  14. 为什么找不到使用rem的网站
  15. 软件工程专业学python_笨办法学Python(0)
  16. 手把手教你win10下lex与yacc的安装
  17. mysql odbc 64位 驱动_MySQL ODBC驱动程序下载
  18. 2022_天勤数据结构高分笔记_第二章_算法
  19. android 开源gis,开源GIS之--移动GIS
  20. 饮茶而思其源,中国茶叶之起源

热门文章

  1. 送你一张AI生成的火星船票 | Mixlab设计黑客
  2. 我的世界java怎么玩起床战争_我的世界hypixel起床战争怎么玩 起床战争出装攻略...
  3. 口袋妖怪c语言代码大全,口袋妖怪_《口袋妖怪黑白》全金手指列表 - 口袋妖怪中文网...
  4. 口袋妖怪letsgo服务器几点维护,口袋妖怪letsgo新手怎么玩 新手玩法攻略分享
  5. 类的默认成员函数、赋值运算符重载
  6. 天数怎么换算成月_工资中的月计薪天数怎么计算
  7. 编写代码java_求大神帮忙!编写java代码!
  8. 《婚姻之礼》 ---心密二祖王骧陆
  9. linux如何下载安装sqoop
  10. 金融社保卡发展之路探讨