点击上方“3D视觉工坊”,选择“星标”
干货第一时间送达
来源 | 天眼观视界
编辑丨OpenCV与AI深度学习
图像清晰度是衡量图像质量的一个重要指标,对于相机来说,其一般工作在无参考图像的模式下,所以在拍照时需要进行对焦的控制。对焦不准确,图像就会变得比较模糊不清晰。相机对焦时通过一些清晰度评判指标,控制镜头与CCD的距离,使图像成像清晰。一般对焦时有一个调整的过程,图像从模糊到清晰,再到模糊,确定清晰度峰值,再最终到达最清晰的位置。
常见的图像清晰度评价一般都是基于梯度的方法,本文将介绍五种简单的评价指标,分别是Brenner梯度法、Tenegrad梯度法、laplace梯度法、方差法、能量梯度法。
Brenner梯度法:
计算相差两个单元的两个像素点的灰度差:
FBrenner=∑M∑N(f(x+2,y)−f(x,y))2
式中 (f(x+2,y)−f(x,y))2>Threshold算法准确性取决于阈值的选取。
Tenegrad梯度法:
采用sobel算子分别提取水平和竖直方向的梯度:
FTenegrad=∑M∑N|G(x,y)|
G(x,y)>Threshold
G(x,y)=Gx(x,y)2+Gy(x,y)2
sobel算子模板如下:
Gx=14⎡⎣⎢−1−2−1000121⎤⎦⎥∗I
Gy=14⎡⎣⎢−101−202−101⎤⎦⎥∗I
Laplace梯度法:
laplace梯度函数与Tenegrad基本一致,只需要用Laplace算子替代sobel算子即可:L=16⎡⎣⎢1414204141⎤⎦⎥∗I
方差法:
聚焦清晰的图像比模糊图像有更大的灰度差异,可用方差函数作为评价:Fvariance=∑M∑N(f(x,y)−E2)
式中E为整幅图像的平均灰度值,该函数对噪声敏感。
能量梯度法:
能量梯度函数适合实时评价图像清晰度:
FBrenner=∑M∑N((f(x+1,y)−f(x,y))2+(f(x,y+1)−f(x,y))2)
实例代码:
//方差法 region_to_mean(ImageReduced, Image, ImageMean) convert_image_type(ImageMean, ImageMean, 'real') convert_image_type(Image, Image, 'real') sub_image(Image, ImageMean, ImageSub, 1, 0) mult_image(ImageSub, ImageSub, ImageResult, 1, 0) intensity(ImageResult, ImageResult, Value, Deviation) //拉普拉斯梯度函数 laplace(Image, ImageLaplace4, 'signed', 3, 'n_4') laplace(Image, ImageLaplace8, 'signed', 3, 'n_8') add_image(ImageLaplace4, ImageLaplace4, ImageResult1, 1, 0) add_image(ImageLaplace4, ImageResult1, ImageResult1, 1, 0) add_image(ImageLaplace8, ImageResult1, ImageResult1, 1, 0) mult_image(ImageResult1, ImageResult1, ImageResult, 1, 0) intensity(ImageResult, ImageResult, Value, Deviation) //能量梯度函数 crop_part(Image, ImagePart00, 0, 0, Width-1, Height-1) crop_part(Image, ImagePart01, 0, 1, Width-1, Height-1) crop_part(Image, ImagePart10, 1, 0, Width-1, Height-1) convert_image_type(ImagePart00, ImagePart00, 'real') convert_image_type(ImagePart10, ImagePart10, 'real') convert_image_type(ImagePart01, ImagePart01, 'real') sub_image(ImagePart10, ImagePart00, ImageSub1, 1, 0) mult_image(ImageSub1, ImageSub1, ImageResult1, 1, 0) sub_image(ImagePart01, ImagePart00, ImageSub2, 1, 0) mult_image(ImageSub2, ImageSub2, ImageResult2, 1, 0) add_image(ImageResult1, ImageResult2, ImageResult, 1, 0) intensity(ImageResult, ImageResult, Value, Deviation) //Brenner梯度法 crop_part(Image, ImagePart00, 0, 0, Width, Height-2) convert_image_type(ImagePart00, ImagePart00, 'real') crop_part(Image, ImagePart20, 2, 0, Width, Height-2) convert_image_type(ImagePart20, ImagePart20, 'real') sub_image(ImagePart20, ImagePart00, ImageSub, 1, 0) mult_image(ImageSub, ImageSub, ImageResult, 1, 0) intensity(ImageResult, ImageResult, Value, Deviation) //Tenegrad梯度法 sobel_amp(Image, EdgeAmplitude, 'sum_sqrt', 3) min_max_gray(EdgeAmplitude, EdgeAmplitude, 0, Min, Max, Range) threshold(EdgeAmplitude, Region1, 20, 255) region_to_bin(Region1, BinImage, 1, 0, Width, Height) mult_image(EdgeAmplitude, BinImage, ImageResult4, 1, 0) mult_image(ImageResult4, ImageResult4, ImageResult, 1, 0) intensity(ImageResult, ImageResult, Value, Deviation)
结果分析:
处理图像为一组对焦从模糊到清晰再到模糊的标定板图像,如下为其中三幅图像:
中间为最清晰的图像。
采用五种评价函数,对一百多幅图像进行计算,并将结果进行归一化,得到如图所示结果:
一个好的评价函数需要具有单峰性,无偏性,灵敏性,在本实例中,采用Laplace、能量梯度和Brenner梯度法较好,而方差法效果较差,Tenegrad梯度法反向了。
本文仅做学术分享,如有侵权,请联系删文。
干货下载与学习
后台回复:巴塞罗那自治大学课件,即可下载国外大学沉淀数年3D Vison精品课件
后台回复:计算机视觉书籍,即可下载3D视觉领域经典书籍pdf
后台回复:3D视觉课程,即可学习3D视觉领域精品课程
3D视觉工坊精品课程官网:3dcver.com
1.面向自动驾驶领域的多传感器数据融合技术
2.面向自动驾驶领域的3D点云目标检测全栈学习路线!(单模态+多模态/数据+代码) 3.彻底搞透视觉三维重建:原理剖析、代码讲解、及优化改进 4.国内首个面向工业级实战的点云处理课程 5.激光-视觉-IMU-GPS融合SLAM算法梳理和代码讲解 6.彻底搞懂视觉-惯性SLAM:基于VINS-Fusion正式开课啦 7.彻底搞懂基于LOAM框架的3D激光SLAM: 源码剖析到算法优化 8.彻底剖析室内、室外激光SLAM关键算法原理、代码和实战(cartographer+LOAM +LIO-SAM)
9.从零搭建一套结构光3D重建系统[理论+源码+实践]
10.单目深度估计方法:算法梳理与代码实现
11.自动驾驶中的深度学习模型部署实战
12.相机模型与标定(单目+双目+鱼眼)
13.重磅!四旋翼飞行器:算法与实战
14.ROS2从入门到精通:理论与实战
15.国内首个3D缺陷检测教程:理论、源码与实战
16.基于Open3D的点云处理入门与实战教程
重磅!3DCVer-学术论文写作投稿 交流群已成立
扫码添加小助手微信,可申请加入3D视觉工坊-学术论文写作与投稿 微信交流群,旨在交流顶会、顶刊、SCI、EI等写作与投稿事宜。
同时也可申请加入我们的细分方向交流群,目前主要有3D视觉、CV&深度学习、SLAM、三维重建、点云后处理、自动驾驶、多传感器融合、CV入门、三维测量、VR/AR、3D人脸识别、医疗影像、缺陷检测、行人重识别、目标跟踪、视觉产品落地、视觉竞赛、车牌识别、硬件选型、学术交流、求职交流、ORB-SLAM系列源码交流、深度估计等微信群。
一定要备注:研究方向+学校/公司+昵称,例如:”3D视觉 + 上海交大 + 静静“。请按照格式备注,可快速被通过且邀请进群。原创投稿也请联系。
▲长按加微信群或投稿,加微信:dddvision
▲长按关注公众号
3D视觉从入门到精通知识星球:针对3D视觉领域的视频课程(三维重建系列、三维点云系列、结构光系列、手眼标定、相机标定、激光/视觉SLAM、自动驾驶等)、知识点汇总、入门进阶学习路线、最新paper分享、疑问解答五个方面进行深耕,更有各类大厂的算法工程人员进行技术指导。与此同时,星球将联合知名企业发布3D视觉相关算法开发岗位以及项目对接信息,打造成集技术与就业为一体的铁杆粉丝聚集区,近6000星球成员为创造更好的AI世界共同进步,知识星球入口:
学习3D视觉核心技术,扫描查看介绍,3天内无条件退款
圈里有高质量教程资料、答疑解惑、助你高效解决问题
觉得有用,麻烦给个赞和在看~