当前位置: 首页 > news >正文

使用 OpenCV 进行图像模糊度检测(拉普拉斯方差方法)

写在前面


  • 工作中遇到,简单整理
  • 人脸识别中,对于模糊程度较高的图像数据,识别率低,错误率高。
  • 虽然使用 AdaFace 模型,对低质量人脸表现尤为突出。
  • 但是还是需要对 模糊程度高的图像进行丢弃处理
  • 当前通过阈值分类,符合要求的进行特性提取
  • 实际应用中,可以维护一个质量分数
  • 比如由 模糊程度图片字节大小人脸姿态评估(欧拉角)等 算出一个综合质量分,用于人脸归类/聚类
  • 理解不足小伙伴帮忙指正

对每个人而言,真正的职责只有一个:找到自我。然后在心中坚守其一生,全心全意,永不停息。所有其它的路都是不完整的,是人的逃避方式,是对大众理想的懦弱回归,是随波逐流,是对内心的恐惧 ——赫尔曼·黑塞《德米安》


模糊度检测算法来自 :https://pyimagesearch.com/2015/09/07/blur-detection-with-opencv/

具体实现方式小伙伴可直接看原文

这种方法起作用的原因是由于拉普拉斯算子本身的定义,它用于测量图像的二阶导数。拉普拉斯突出显示包含快速强度变化的图像区域,与 Sobel 和 Scharr 算子非常相似。而且,就像这些运算符一样,拉普拉斯通常用于边缘检测。这里的假设是,如果图像包含高方差,则存在广泛的响应,包括边缘类和非边缘类,代表正常的焦点图像。但是,如果方差非常低,则响应的分布很小,表明图像中的边缘非常小。众所周知,图像越模糊,边缘就越少

下面为原文的 Demo

#!/usr/bin/env python
# -*- encoding: utf-8 -*-
"""
@File    :   detect_blur.py
@Time    :   2023/07/24 22:57:51
@Author  :   Li Ruilong
@Version :   1.0
@Contact :   liruilonger@gmail.com
@Desc    :   图片模糊度检测
"""# here put the import lib# import the necessary packages
from imutils import paths
import cv2
import osdef variance_of_laplacian(image):gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)# compute the Laplacian of the image and then return the focus# measure, which is simply the variance of the Laplacianreturn cv2.Laplacian(gray, cv2.CV_64F).var()# loop over the input images
for imagePath in paths.list_images("./res/mh"):# load the image, convert it to grayscale, and compute the# focus measure of the image using the Variance of Laplacian# methodimage = cv2.imread(imagePath)fm = variance_of_laplacian(image)text = "Not Blurry"print(fm)# if the focus measure is less than the supplied threshold,# then the image should be considered "blurry"if fm < 100:text = "Blurry"# show the imagefile_name = os.path.basename(imagePath)cv2.imwrite(str(fm)+'__' + file_name , image)

核心代码:

cv2.Laplacian(gray, cv2.CV_64F).var()

如果为 Image.image ,可以使用下的方式

def variance_of_laplacian(image):"""@Time    :   2023/07/25 01:57:44@Author  :   liruilonger@gmail.com@Version :   1.0@Desc    :   模糊度检测Args:Returns:void"""numpy_image = np.array(image)cv2_image = cv2.cvtColor(numpy_image, cv2.COLOR_RGB2BGR)gray = cv2.cvtColor(cv2_image, cv2.COLOR_BGR2GRAY)# compute the Laplacian of the image and then return the focus# measure, which is simply the variance of the Laplacianreturn cv2.Laplacian(gray, cv2.CV_64F).var()

实际测试中发现,阈值设置为 100 相对来说比较合适,当然如何数据集很大,可以考虑 提高阈值,当模糊度大于 1000 时,一般为较清晰图片,低于 100 时,图片模糊严重

下面为对一组较模糊数据进行检测

在这里插入图片描述

最后一个图像,模糊度为 667 ,其他为 200 以内

(AdaFace) C:\Users\liruilong\Documents\GitHub\AdaFace_demo>python detect_blur.py
130.99918569797578
97.54477372302556
70.30346984100659
95.56028915335366
77.70006004883219
107.2065965492792
93.43007114319839
75.44132565995248
127.50238903320515
98.11810838476116
69.49917570127641
132.46578324273048
99.2095025510204
92.97255942246558
93.33812691062155
667.4883318795927

博文部分内容参考

© 文中涉及参考链接内容版权归原作者所有,如有侵权请告知 😃


https://pyimagesearch.com/2015/09/07/blur-detection-with-opencv/


© 2018-2023 liruilonger@gmail.com, All rights reserved. 保持署名-非商用-相同方式共享(CC BY-NC-SA 4.0)

相关文章:

使用 OpenCV 进行图像模糊度检测(拉普拉斯方差方法)

写在前面 工作中遇到&#xff0c;简单整理人脸识别中&#xff0c;对于模糊程度较高的图像数据&#xff0c;识别率低&#xff0c;错误率高。虽然使用 AdaFace 模型&#xff0c;对低质量人脸表现尤为突出。但是还是需要对 模糊程度高的图像进行丢弃处理当前通过阈值分类&#xff…...

神经网络简单介绍

人工神经网络(artififial neural network) 简称神经网络&#xff0c;它是一种模仿生物神经网络结构和功能的非线性数学模型。 神经网络通过输入层接受原始特征信息&#xff0c;再通过隐藏层进行特征信息的加工和提取&#xff0c;最后通过输出层输出结果。 根据需要神经网络可以…...

16位S912ZVML32F3MKH、S912ZVML31F1WKF、S912ZVML31F1MKH混合信号MCU,适用于汽车和工业电机控制应用。

S12 MagniV微控制器是易于使用且高度集成的混合信号MCU&#xff0c;非常适合用于汽车和工业应用。S12 MagniV MCU提供单芯片解决方案&#xff0c;是基于成熟的S12技术的完整系统级封装 (SiP) 解决方案&#xff0c;在整个产品组合内软件和工具都兼容。 S12 MagniV系统级封装 (S…...

力扣 509. 斐波那契数

题目来源&#xff1a;https://leetcode.cn/problems/fibonacci-number/description/ C题解1&#xff1a;根据题意&#xff0c;直接用递归函数。 class Solution { public:int fib(int n) {if(n 0) return 0;else if(n 1) return 1;else return(fib(n-1) fib(n-2));} }; C题…...

使用 DolphinDB TopN 函数探索高效的Alpha因子

DolphinDB 已经有非常多的窗口计算函数&#xff0c;例如 m 系列的滑动窗口计算&#xff0c;cum 系列累计窗口计算&#xff0c;tm 系列的的时间窗口滑动计算。但是所有这类函数都是对窗口内的所有记录进行指标计算&#xff0c;难免包含很多噪音。 DolphinDB 的金融领域用户反馈…...

超聚变和厦门大学助力兴业银行构建智慧金融隐私计算平台,助力信用卡业务精准营销...

兴业银行与超聚变数字技术有限公司、厦门大学携手&#xff0c;发挥产学研用一体化整体优势联合建设&#xff0c;厦门大学提供先进的算法模型及科研能力&#xff0c;超聚变提供产品解决方案及工程能力&#xff0c;兴业银行提供金融实践能力&#xff0c;三方发挥各自领域优势&…...

docker 的compose安装

1. Docker Compose 环境安装 Docker Compose 是 Docker 的独立产品&#xff0c;因此需要安装 Docker 之后在单独安装 Docker Compose docker compose 实现单机容器集群编排管理&#xff08;使用一个模板文件定义多个应用容器的启动参数和依赖关系&#xff0c;并使用docker co…...

JavaScript---事件对象event

获取事件对象&#xff1a; 事件对象&#xff1a;是个对象&#xff0c;这个对象里有事件触发时的相关信息&#xff0c;在事件绑定的回调函数的第一个参数就是事件对象&#xff0c;一般命名为event、ev、e eg: 元素.addEventListener(click,function (e){}) 部分常用属性&…...

Day 15 C++对象模型和this指针

目录 C对象模型 类内的成员变量和成员函数分开存储 总结 this指针 概念 示例 用途 当形参和成员变量同名时 在非静态成员函数中&#xff0c;如果希望返回对象本身 例子 空指针访问成员函数 示例 const修饰成员函数 常函数&#xff08;const member function&…...

HarmonyOS/OpenHarmony元服务开发-卡片生命周期管理

创建ArkTS卡片&#xff0c;需实现FormExtensionAbility生命周期接口。 1.在EntryFormAbility.ts中&#xff0c;导入相关模块。 import formInfo from ohos.app.form.formInfo; import formBindingData from ohos.app.form.formBindingData; import FormExtensionAbility from …...

软件工程01

软件工程原则&#xff1a; 开闭原则&#xff1a; open closed principle &#xff1a; 对扩展开放&#xff0c;对修改关闭&#xff0c;&#xff0c;&#xff0c;只让扩展&#xff0c;不让修改&#xff0c;用新增的类去替代修改的类 扩展之后&#xff0c;代码不用改变&#xff…...

UML/SysML建模工具更新(2023.7)(1-5)有国产工具

DDD领域驱动设计批评文集 欢迎加入“软件方法建模师”群 《软件方法》各章合集 最近一段时间更新的工具有&#xff1a; 工具最新版本&#xff1a;Visual Paradigm 17.1 更新时间&#xff1a;2023年7月11日 工具简介 很用心的建模工具。支持编写用例规约。支持文本分析和C…...

Mac plist文件

macOS、iOS、iPadOS的应用程序都可能会有plist配置文件&#xff0c;他是苹果系列操作系统特有的配置文件。 plist的本质是个xml格式的文本文件&#xff0c;英文全称是property list&#xff0c;文件后缀使用.plist。 对于普通用户来说&#xff0c;基本不用管plist文件是什么&…...

基于Java+SpringBoot+vue前后端分离校园周边美食探索分享平台设计实现

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…...

【openwrt】package介绍

openwrt package介绍 OpenWrt 构建系统主要围绕package的概念展开。不管是什么软件&#xff0c;几乎都对应一个package。 这几乎适用于系统中的所有内容&#xff1a;HOST工具、交叉编译工具链、Linux 内核、内核mod、根文件系统和上层的应用软件。 一个 OpenWrt package本质上…...

vue 封装一个鼠标拖动选择时间段功能

<template><div class"timeRange"><div class"calendar"><table><thead><tr><th rowspan"6" class"weekRow"><b>周/时间</b></th><th colspan"24"><…...

ubuntu22.0安装Barrier局域网共享鼠标键盘

ubuntu22.0安装Barrier局域网共享鼠标键盘 参考网站安装步骤客户端一直开启中解决 参考网站 https://idroot.us/install-barrier-ubuntu-22-04/ 安装步骤 sudo apt update sudo apt upgrade sudo apt install wget apt-transport-https gnupg2 software-properties-common s…...

ffmpeg常用功能博客导航

FFmpeg 是一个处理视频和音频内容的开源工具库&#xff0c;可以实现编码、解码、转码、流媒体和后处理等服务。 推荐博客&#xff1a; 常见命令和使用案例 用ffmpeg转mov为mp4格式 FFmpeg 常用命令 FFmpeg 常用命令编辑音/视频&#xff08;转换格式、压缩、裁剪、截图、切分合…...

shopee,lazada,etsy店群如何高效安全的管理

对于电商卖家来说&#xff0c;要经营多个店铺&#xff0c;管理多个账号是非常常见的操作。为了避免账号关联被平台识别出来&#xff0c;需要使用防关联的浏览器来进行操作 ​1、支持多平台 支持同时管理多个电商平台店铺&#xff0c;Shopee、Lazada、etsy、poshmark、vinted等&…...

【计算复杂性理论】证明复杂性(八):命题鸽巢原理(Propositional Pigeonhole Principle)的指数级归结下界

往期文章&#xff1a; 【计算复杂性理论】证明复杂性&#xff08;Proof Complexity&#xff09;&#xff08;一&#xff09;&#xff1a;简介 【计算复杂性理论】证明复杂性&#xff08;二&#xff09;&#xff1a;归结&#xff08;Resolution&#xff09;与扩展归结&#xff…...

三步掌握HiGHS线性优化求解器:从入门到实战

三步掌握HiGHS线性优化求解器&#xff1a;从入门到实战 【免费下载链接】HiGHS Linear optimization software 项目地址: https://gitcode.com/GitHub_Trending/hi/HiGHS 在数据分析与决策优化领域&#xff0c;如何高效解决资源分配、生产计划等线性规划问题一直是核心挑…...

Nomic-Embed-Text-V2-MoE实战:构建智能文档检索系统与MySQL集成

Nomic-Embed-Text-V2-MoE实战&#xff1a;构建智能文档检索系统与MySQL集成 1. 引言 想象一下&#xff0c;你所在的公司有成千上万份产品手册、技术文档和合同文件&#xff0c;它们散落在各个文件夹里&#xff0c;格式五花八门。当你想找一份关于“如何解决产品X在低温环境下…...

2026年6月PMP考试:70天冲刺,这5个“备考误区”正在偷偷浪费你的时间

大家好&#xff0c;我是老陈。 今天这篇&#xff0c;我不想再写什么“每天学几小时、刷多少题”了。 前面写了好几篇&#xff0c;该说的都说了。今天咱们换个角度&#xff0c;聊聊那些看似正确、实则坑人的备考误区。 为什么聊这个&#xff1f;因为我发现一个规律&#xff1…...

AI开发者必备:PyTorch 2.8镜像在视频生成场景下的完整应用教程

AI开发者必备&#xff1a;PyTorch 2.8镜像在视频生成场景下的完整应用教程 1. 环境准备与快速部署 1.1 镜像基础信息 PyTorch 2.8深度学习镜像是一个专为高性能AI任务设计的预配置环境&#xff0c;特别针对RTX 4090D显卡和视频生成任务进行了优化。主要特点包括&#xff1a;…...

全网最全!网络安全全岗位解析(2026版)

全网最全&#xff01;网络安全全岗位解析&#xff08;2026版&#xff09; 摘要&#xff1a;随着数字化转型加速&#xff0c;网络安全已成为企业、政务、互联网大厂的核心刚需&#xff0c;人才缺口持续扩大&#xff0c;2026年国内网络安全人才缺口已突破327万&#xff0c;全球缺…...

从零到上线:手把手教你用LLaMA-Factory + Python脚本自动化微调Qwen2.5模型

从零到上线&#xff1a;手把手教你用LLaMA-Factory Python脚本自动化微调Qwen2.5模型 在AI模型开发领域&#xff0c;微调预训练模型已成为快速适配特定任务的主流方法。然而&#xff0c;传统微调流程往往需要开发者反复手动调整配置文件、执行训练命令、监控训练过程&#xff…...

Qwen3-VL-8B-Instruct-GGUF效果展示:上传图片秒出中文描述,实测高清准确

Qwen3-VL-8B-Instruct-GGUF效果展示&#xff1a;上传图片秒出中文描述&#xff0c;实测高清准确 想象一下&#xff0c;你随手拍了一张照片&#xff0c;上传到一个工具里&#xff0c;几秒钟后&#xff0c;一段详细、准确、甚至带点文采的中文描述就自动生成了。这听起来像是科幻…...

细胞转染优化方向(二):PEI体系关键参数进阶优化指南【曼博生物】

摘要&#xff1a;在PEI转染体系中&#xff0c;除基础培养条件外&#xff0c;质粒比例、DNA与PEI比率、孵育条件及病毒收获时间等参数同样显著影响转染效率与病毒产量。本文结合实验数据&#xff0c;对关键参数进行系统分析&#xff0c;为AAV及慢病毒生产提供优化思路。 关键词…...

Google Test进阶玩法:用测试夹具重构你的C++项目(CLion实战篇)

Google Test进阶实战&#xff1a;用测试夹具重构复杂C项目的工程化实践 当你的C项目从几百行扩展到几万行代码时&#xff0c;那些曾经简单的单元测试开始变得力不从心。测试用例之间出现隐蔽的状态依赖&#xff0c;setup代码重复率飙升&#xff0c;而每次运行测试套件的时间越来…...

AI净界开箱即用:无需配置,上传图片秒出透明背景,亲测好用

AI净界开箱即用&#xff1a;无需配置&#xff0c;上传图片秒出透明背景&#xff0c;亲测好用 1. 产品核心价值 在电商设计、内容创作和数字营销领域&#xff0c;背景移除是最频繁却又最耗时的图像处理需求之一。传统方法要么需要专业软件技能&#xff0c;要么效果难以令人满意…...