如何做一个图片筛选器——关于图像模糊程度检测

图像处理机器学习算法

picture.image

向AI转型的程序员都关注公众号 机器学习AI算法工程

拉普拉斯算子

拉普拉斯算子是一种常用的边缘检测算子,它可以用于检测图像中的边缘。在图像处理中,边缘通常表示了图像中物体之间的边界或者重要的特征。

算子的原理是基于图像中的边缘通常是像素值的变化较大的区域。拉普拉斯算子通过计算图像的二阶导数来寻找这些变化较大的区域。在图像中,一个像素的二阶导数可以用来衡量该像素附近的像素值变化的快慢程度。在边缘附近,像素值的变化会显著,因此二阶导数会有较大的值。

具体地,拉普拉斯算子可以通过卷积操作来实现。在一维情况下,拉普拉斯算子可以表示为[-1, 2, -1]的卷积核,即当前像素与相邻像素的值的加权和减去当前像素的两倍。在二维情况下,可以将一维的卷积核分别应用于图像的水平和垂直方向,然后将两个方向的结果相加,即可得到图像的拉普拉斯算子响应。

在实际应用中,一般会取拉普拉斯算子的绝对值作为边缘强度的度量,因为边缘可能是明亮到暗或暗到明的过渡。最后,通过计算边缘强度的平均值或其他统计量来评估图像的模糊程度。

用人话解释一遍就是:

想象一下图像是由许多小方块组成的网格,每个方块代表图像中的一个像素点。在一张黑白图像中,每个像素点可以是黑色(值为0)或白色(值为1)。

我们想知道图像中哪些地方的色块变化最大,因为这些地方往往是图像中的边缘。边缘通常是物体之间或物体与背景之间的界限,它们呈现出像素值的快速变化。

拉普拉斯算子是一种边缘检测算法,它通过对图像进行二阶导数操作来寻找像素值变化率最大的地方。这种操作可以捕获图像中边缘的位置,因为边缘是图像中像素值变化快的区域。

虽然在实际实现时,可能会对图像进行降采样或者使用其他技术来加速计算,但拉普拉斯算子本身不会减少计算像素点的数量。

边缘的数量和强度并不总是直接与图像的清晰程度成正比。有时候,图像中的噪音或其他因素也会导致边缘的出现,而这些边缘并不一定代表图像的清晰度。因此,评估图像的清晰度需要综合考虑边缘的数量、强度以及其他因素。

picture.image

在这个例子中,拉普拉斯算子的运算被全部封装在了 cv2.Laplacian这个函数中,实际上,如果你用的方法是c++可以更加清晰地看到卷积的过程。

计算出来的laplacian是一个NumPy数组,其中包含了图像中每个像素的拉普拉斯变换后的值,首先,可以对拉普拉斯变换后的图像应用阈值化操作。阈值化可以将图像中像素值大于某个阈值的部分设置为白色(255),小于等于阈值的部分设置为黑色(0)。这样可以将图像中的边缘区域与其他区域分离开来。接着,可以使用边缘检测算法(如Canny边缘检测)来进一步细化边缘。这样可以检测出图像中更细微的边缘特征,并且对于噪声也有一定的抑制效果。

不用理解那么多,在实际运用的时候,我们可以粗略的将其理解为一个存储了可以用于计算边缘数据的数组。

比如这两张图片

picture.image

picture.image

第一张计算出来的值为16.912433624267578

而第二张仅为1.230936050415039,因此可以根据我们检测对象的不同设定阈值来判定图片是否模糊

Saber算子

值得注意的一点是,Sobel算子主要用于边缘检测,而不是模糊程度的评估。Sobel算子更适合于检测图像中的细微边缘特征,而不是评估图像的整体模糊程度。相比之下,Laplacian算子更适合于评估图像的模糊程度,因为它可以直接检测图像中像素值的变化率,包括模糊导致的像素值变化减缓的情况。

但是Saber算子有个比Laplacian更优的一点是其对噪声有一定的抑制效果,这点在特定情况下对检测很有帮助,因为Laplacian再遇到强噪点的图片时可能会检测不准确。(虽然实际测试saber算子受图像噪声的干扰程度依然很大,只是比Laplacian不敏感一点点)

picture.image

同样上述两张图

清晰图计算出来的值是882.0671758109124,模糊图是412.00405348349574

为了试验的严谨性,我们加入了噪点图

picture.image

本质上还是模糊图,在Laplacian的计算中数值来到了96.45854091644287,比清晰图还要清晰!(其实是因为边缘太多了),而saber计算出来的结果略号但还是异常

,结果是1065.1257280712512,也比清晰图大了百分之25.

优化模糊检测

对于不同的图像,大小、噪点程度都不尽相同,有的图片因为很大,所以其边缘就看起来变化率很快,有的图片因为噪点很多,边缘变化率也很大,因此在实际运用中,我们需要先对图片进行归一化处理并降噪才能得到一个相对准确的结论。

picture.image

picture.image

对于上面三张图,这个代码的兼容性显然更好了

清晰图的检测结果是9.093655555555555

模糊图是4.4706777777777775

噪点图是6.346288888888889

机器学习算法AI大数据技术

搜索公众号添加: datanlp

picture.image

长按图片,识别二维码

阅读过本文的人还看了以下文章:

实时语义分割ENet算法,提取书本/票据边缘

整理开源的中文大语言模型,以规模较小、可私有化部署、训练成本较低的模型为主

《大语言模型》PDF下载

动手学深度学习-(李沐)PyTorch版本

YOLOv9电动车头盔佩戴检测,详细讲解模型训练

TensorFlow 2.0深度学习案例实战

基于40万表格数据集TableBank,用MaskRCNN做表格检测

《基于深度学习的自然语言处理》中/英PDF

Deep Learning 中文版初版-周志华团队

【全套视频课】最全的目标检测算法系列讲解,通俗易懂!

《美团机器学习实践》_美团算法团队.pdf

《深度学习入门:基于Python的理论与实现》高清中文PDF+源码

《深度学习:基于Keras的Python实践》PDF和代码

特征提取与图像处理(第二版).pdf

python就业班学习视频,从入门到实战项目

2019最新《PyTorch自然语言处理》英、中文版PDF+源码

《21个项目玩转深度学习:基于TensorFlow的实践详解》完整版PDF+附书代码

《深度学习之pytorch》pdf+附书源码

PyTorch深度学习快速实战入门《pytorch-handbook》

【下载】豆瓣评分8.1,《机器学习实战:基于Scikit-Learn和TensorFlow》

《Python数据分析与挖掘实战》PDF+完整源码

汽车行业完整知识图谱项目实战视频(全23课)

李沐大神开源《动手学深度学习》,加州伯克利深度学习(2019春)教材

笔记、代码清晰易懂!李航《统计学习方法》最新资源全套!

《神经网络与深度学习》最新2018版中英PDF+源码

将机器学习模型部署为REST API

FashionAI服装属性标签图像识别Top1-5方案分享

重要开源!CNN-RNN-CTC 实现手写汉字识别

yolo3 检测出图像中的不规则汉字

同样是机器学习算法工程师,你的面试为什么过不了?

前海征信大数据算法:风险概率预测

【Keras】完整实现‘交通标志’分类、‘票据’分类两个项目,让你掌握深度学习图像分类

VGG16迁移学习,实现医学图像识别分类工程项目

特征工程(一)

特征工程(二) :文本数据的展开、过滤和分块

特征工程(三):特征缩放,从词袋到 TF-IDF

特征工程(四): 类别特征

特征工程(五): PCA 降维

特征工程(六): 非线性特征提取和模型堆叠

特征工程(七):图像特征提取和深度学习

如何利用全新的决策树集成级联结构gcForest做特征工程并打分?

Machine Learning Yearning 中文翻译稿

蚂蚁金服2018秋招-算法工程师(共四面)通过

全球AI挑战-场景分类的比赛源码(多模型融合)

斯坦福CS230官方指南:CNN、RNN及使用技巧速查(打印收藏)

python+flask搭建CNN在线识别手写中文网站

中科院Kaggle全球文本匹配竞赛华人第1名团队-深度学习与特征工程

不断更新资源

深度学习、机器学习、数据分析、python

搜索公众号添加: datayx

picture.image

0
0
0
0
关于作者

文章

0

获赞

0

收藏

0

相关资源
字节跳动 XR 技术的探索与实践
火山引擎开发者社区技术大讲堂第二期邀请到了火山引擎 XR 技术负责人和火山引擎创作 CV 技术负责人,为大家分享字节跳动积累的前沿视觉技术及内外部的应用实践,揭秘现代炫酷的视觉效果背后的技术实现。
相关产品
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论