ISP-AF相关-聚焦区域选择-清晰度评价
1、镜头相关
镜头类型
变焦类型:
定焦、手动变焦、自动变焦
光圈:
固定光圈、手动光圈、自动光圈
视场角:
鱼眼镜头、超广角镜头、广角镜头、标准镜头、长焦镜头、超长焦镜头(由大至小)
光圈:
超星光镜头、星光镜头、通用镜头
接口类型:
M12、\Phi14、C、CS、尼康F口、索尼A口、佳能E口等
外形功能:
球面镜头、非球面镜头、针孔镜头、鱼眼镜头
自动聚焦是指通过电机控制载物台或镜头的运动使物体的成像由模糊变得清晰的过程。
变焦
变焦通常指通过移动镜头内的透镜镜片位置来拉长或缩短焦距,也叫ZOOM。变焦目前可以分为光学变焦和数字变焦两种类型,光学变焦不会牺牲清晰度,数字变焦显著牺牲清晰度
光学变焦:
光学变焦是通过移动镜头内部镜片的相对位置来改变焦点的位置,改变镜头焦距的长短,并改变镜头的视角大小,从而实现影像的放大与缩小。如果被拍摄的物体位置保持不变,镜头的焦距与物体的放大倍率会呈现正比例的关系,如果要用一个词来形容光学变焦的话,那就是“望远镜”。(成像面水平方向移动)
数字变焦:
数字变焦是通过可拍照手机处理器,把图片内的每个像素面积增大,从而达到放大的目的,就像我们在ACDSEE等图像处理软件中,强行拉大图像的像素一样,只不过这个过程在手机中进行,把原来SENSOR上的一部分像素使用插值手段进行放大。与光学变焦不同的是,数码变焦是在SENSOR垂直方向上的变化,而给人以变焦效果的。由于整个过程焦距没有任何变化,所以图像质量是会随着放大比例的增加,逐渐下降。(成像面垂直方向缩放)
数字变焦也可以分为插值算法变焦和伪数字变焦两种:
插值算法变焦:对图像进行插值运算,将图像的尺寸扩大到所需的规格,这种算法就其效果而言,并不理想,尤其是当使用在手机上的时候,手机上的摄像头本身得到的数据就有较大的噪声,再插值的话,得到的图像几乎没法使用。
伪数字变焦:当摄像头不处在最大分辨率格式的情况下,比如130万像素的 sensor 使用 640x480的规格拍照时,仍旧设置 sersor 工作在 1280x960 的分辨率下,而后通过采集中央部分的图像来获取 640x480 的照片,使得在手机上看来所拍物体尺寸被放大了一倍。这种办法几乎不需要额外的算法支持,对图像质量也没有影响,缺点是只有小尺寸情况下可以采用。
对焦(调焦)
对焦概念
用凸透镜做照像机的镜头时,最清晰的像一般不会正好落在焦点上,或者说,最清晰的像到光心的距离(像距)一般不等于焦距,而是略大于焦距。具体的距离与被照的物体与镜头的距离(物距)有关,物距越大,像距越小,(但实际上总是大于焦距)。
对焦实际上是调整整个镜头的位置(而不是镜头内的镜片)的位置,来控制像距,从而使成像最清晰。被照的物体与相机(镜头)的距离不总是相同的,比如给人照像,有时,想照全身的,离得就远,照半身的,离得就近。要想照得到清晰的像,就必须随着物距的不同而改变感光面到镜头光心的距离。
由于人眼分辨能力的限制,一定范围内的模糊量不会对观察到的成像效果产生影响。对于清晰的成像,人眼视网膜对模糊感知的最大程度就是允许模糊量s,s的值在O.03.0.04mm之间。
对焦分类
对焦可以分为手动对焦,自动对焦,多点对焦:
手动对焦,它是通过手工转动对焦环来调节相机镜头从而使拍摄出来的照片清晰的一种对焦方式。
自动对焦,由照相机根据被摄体距离的远近,自动地调节镜头的对焦距离。
多点对焦,也叫区域对焦,当对焦中心不设置在图片中心的时候,可以使用多点对焦。常见的多点对焦为5点,7点和9点对焦。
2、聚焦区域选择
窗口过小容易丢失图像的重要细节;窗口过大会加重背景区域的干扰,同时也带来更大的计算量
聚焦窗口应该位于图像的主体目标区域,常用的窗口选择方法主要分为静态和动态两类。静态取窗方法有:中心区域取窗法、黄金分割十字区域取窗法和倒T型取窗法等;动态取窗方法有:高斯非均匀采样取窗法、一阶矩取窗法和人眼视觉显著机制取窗法等。前者通常是根据某个特征选定固定区域作为聚焦窗口,聚焦窗口大小由实际目标图像确定;后者是对图像的信息分布进行统计分析,给出一个最优的主体景物估计区域,然后取单个或多个窗口作为聚焦区域。
1、中心取窗法
中心取窗法认为人眼感兴趣目标总是位于图像的中心位置,故把中心部分作为聚焦区域。计算聚焦区域内的图像清晰度值,根据自动聚焦调节方法使聚焦区域内的物体达到最清晰即完成自动聚焦。这种聚焦区域选择方法适用于大多数情况,但若感兴趣目标偏离图像中心位置,摄像机将无法聚焦到感兴趣目标,聚焦质量会严重下降)
中心取窗方法的假设前提是主体目标位于图像中心,当图像中心是纯色背景时,会导致聚焦失败,窗口矩形框的长、宽分别为图像长、宽的1/4,中心区域的大小一般为图像的1/1 6,计算量减少了93.75%。
2、倒T型区域取窗
观察一幅图像时,人眼的注意力第一时间通常会放在图像的中下部分。在摄影构图时,人们也通常会将被摄物体放于整个场景的中下部分。因此可选择图像中下部的区域作为聚焦区域,如图 2.5 所示。该方法提高了感兴趣区域覆盖成功率,但同时会引入更多背景信息,导致图像清晰度值的计算量相应增加。
3、黄金多点取窗选择法
在实际场景中,往往包含多个不同的物体,物体的纹理以及距离摄像机的远近不尽相同。多点取窗法是将图像按照一定的规则划分为几个区域,选择与感兴趣目标较接近的区域作为图像的聚焦区域。聚焦区域选择灵活多变,使用场景更丰富。
光学成像系统中,只存在一个正确的焦平面,只有在焦平面位置才可以得到清晰的物体成像,并且在其他位置时目标点的成像会出现斑点。考虑到人眼的最小角度分辨率,当斑点直径小于一定值时,可以将其识别为清晰的图像点。
图像存在边缘,一幅图像聚焦与否与图像边缘信息的高频成分有关,当完全聚焦时,图像清晰,边缘信息的多,聚焦评价函数值最大;当图像离焦时,图像模糊,边缘信息较少,聚焦评价函数值小。
图像聚焦评价函数:
特性
1)无偏性:
清晰度评价函数曲线的峰值应该对应最清晰的聚焦的位置,不同离焦程度的评价值也对应着不同的离焦图像采集位置。
2)单峰性:
从远离准焦面到正焦面再到远离准焦面的过程中,聚焦评价函数曲线对应地先递增再递减,准确聚焦位置时取值最大,应该满足单峰性要求。
3)灵敏度:
评价函数曲线的陡峭程度反映了自动聚焦过程中的灵敏度,若曲线越平缓,则灵敏度越低。自动聚焦过程中希望有较高的灵敏度,曲线应该有一定的陡峭度。
4)抗噪性:
在噪声干扰下,曲线是否依旧能保持较好的形状特性。
5)实时性:
我们希望自动聚焦的过程是一个较为短暂的时间,为满足自动聚焦系统实时性的要求,设计的算法不能过于复杂,计算量不能太大。
评价函数
1)SMD函数
SMD函数称为灰度差分和函数。它依据某一像素点的相邻的左像素点和上像素点与这一点的差值之和,来计算图像聚焦极值点
F_{SMD}=\sum_{i,j}(\lvert f(i,j)-f(i,j-1) \rvert +\lvert f(i,j)-f(i-1,j) \rvert )
SMD函数算法简单、速度快、抗干扰能力较强,但精度不高。
2)Brenner函数
计算相邻k个单位像素点间的灰度差,然后得到差的平方
F_{Brenner}=\sum_{i,j}\lvert f(i+k,j)-f(i,j) \rvert ^2
Brenner函数复杂度低,计算过程简单,
3)Tenengrad函数
F_{Tenengrad}=\sum_{i,j}(\lvert G_{i}^{2}(i,j)+G_{j}^{2}(i,j) \rvert )
其中,G_{i}(i,j)和G_{j}(i,j)是i,j方向的一阶sobel算子差分
4)EOG函数 平方梯度
F_{EOG}=\sum_{i,j}(\lvert f(i,j)-f(i,j-1) \rvert ^2 +\lvert f(i,j)-f(i-1,j) \rvert ^2)
5)Robert算子梯度函数
F_{Robert}=\sum_{i,j}(\lvert f(i,j)-f(i+1,j+1) \rvert +\lvert f(i+1,j)-f(i,j+1) \rvert )
Roberts梯度函数根据聚焦区域内所有交叉像素点间像素差值之和计算得出,以计算图像的聚焦清晰点,改进SMD函数,抗干扰性能比SMD函数的强
6)sobel算子梯度函数
F_{Sobel}=\sum_{i,j}\lvert G_{i}(i,j)+G_{j}(i,j) \rvert
其中,G_{i}(i,j)和G_{j}(i,j)是i,j方向的一阶sobel算子差分
7)Laplace算子函数
F_{Laplace}=\sum_{i,j}\lvert f(i-1,j)-f(i+1,j) + f(i,j-1)-f(i,j+1) - 4f(i,j) \rvert ^2
参考文章:<基于梯度计算的自动聚焦图像清晰度评价函数仿真分析> <自动聚焦 系统研究>
结合之前清晰度的计算,补充一些AF的内容
觉得本文对您有一点帮助,欢迎讨论、点赞、收藏,您的支持激励我多多创作。
我的个人博客主页,欢迎访问
我的CSDN主页,欢迎访问
我的GitHub主页,欢迎访问
我的知乎主页,欢迎访问
ISP-AF相关-聚焦区域选择-清晰度评价的更多相关文章
- QTableView表格控件区域选择-自绘选择区域
目录 一.开心一刻 二.概述 三.效果展示 四.实现思路 1.绘制区域 2.绘制边框 3.绘制 五.相关文章 原文链接:QTableView表格控件区域选择-自绘选择区域 一.开心一刻 陪完客户回到家 ...
- ajax 城市区域选择三级联动
<body onLoad="sheng()"><div class="xqbody"> <form action=" ...
- Vim的使用 区域选择
1.Visual Block 区域选择,这里的Visual表示视觉,图像,可视化. 2. 小写v:字符选择 shift+v(大写V):行选择 ctrl+v:矩 ...
- 【opencv学习笔记六】图像的ROI区域选择与复制
图像的数据量还是比较大的,对整张图片进行处理会影响我们的处理效率,因此常常只对图像中我们需要的部分进行处理,也就是感兴趣区域ROI.今天我们来看一下如何设置图像的感兴趣区域ROI.以及对ROI区域图像 ...
- OpenCV 图像清晰度评价(相机自动对焦)
相机的自动对焦要求相机根据拍摄环境和场景的变化,通过相机内部的微型驱动马达,自动调节相机镜头和CCD之间的距离,保证像平面正好投影到CCD的成像表面上.这时候物体的成像比较清晰,图像细节信息丰富. 相 ...
- 使用Qt5+CMake实现图片的区域选择(附源码)
近期研发涉及到了图片的区域选择,找来一些资料一直不能很满意,所以自己实现了一个. 实现步骤如下.源码可以点击ImageAOI获取. 如下资料来自源码的README. ImageAOI (XLabel) ...
- 图像的ROI区域选择与复制
[opencv学习笔记六]图像的ROI区域选择与复制 孜然 7 人赞同了该文章 图像的数据量还是比较大的,对整张图片进行处理会影响我们的处理效率,因此常常只对图像中我们需要的部分进行处理,也就是感 ...
- slickgrid ( nsunleo-slickgrid ) 4 解决区域选择和列选择冲突
slickgrid ( nsunleo-slickgrid ) 3 解决区域选择和列选择冲突 之前启用区域选择的时候,又启用了列选择(CheckboxSelectColumn),此时发现选择状态与区域 ...
- slickgrid ( nsunleo-slickgrid ) 3 修正区域选择不能跨冻结列的问题
slickgrid ( nsunleo-slickgrid ) 3 修正区域选择不能跨冻结列的问题 上次解决区域选择不能跨冻结列问题的时候,剩了个尾巴,从右往左选择的时候,会出现选择不正常的情况,后 ...
- slickgrid ( nsunleo-slickgrid ) 2 修正区域选择不能跨冻结列的问题
slickgrid( nsunleo-slickgrid ) 2 修正区域选择不能跨冻结列的问题 周六的时候,留了个小小的尾巴,区域选择的问题进做到了定位: 问题原因,在slickgrid启动冻结之 ...
随机推荐
- Python程序笔记20230302
Alice.Bob 和他们的朋友们 问题主体 密码学家 Rivest.Shamir.Adleman 于1977年4月撰写了一篇论文<数字签名与公钥密码学>(On Digital Signa ...
- 安装MinGW,使用vscode进行C++编译
1.下载 https://osdn.net/projects/mingw/downloads/68260/mingw-get-setup.exe/ 2.安装 直接默认所有选项安装即可,可以更换安装位置 ...
- Solon2 常用注解之 @ProxyComponent 用法说明
在 Solon 提倡"克制"的原则下,托管组件分为: 普通组件 代理组件(即 @ProxyComponent 注解的类).代理的细节可以看下<动态代理的本质> . 之所 ...
- 飞腾CPU FT-2000/4 uboot下PHY调试记录
飞腾爱好者技术交流群码公众号"乌拉大喵喵" 一.环境说明 板子是FT-2000/4的开发板: 固件版本: ft-2004c_u-boot-v2-Ver0.3_20211223100 ...
- Django框架——静态文件配置、form表单、request对象、连接数据库、ORM简介、ORM基本操作和语句
配置文件介绍 SECRET_KEY = '0yge9t5m9&%=of**qk2m9z^7-gp2db)g!*5dzb136ys0#)*%*a' # 盐 DEBUG = True # 调试模式 ...
- C# 组合键判断
e.KeyboardDevice.Modifiers 同时按下了Ctrl + H键(H要最后按,因为判断了此次事件的e.Key)修饰键只能按下Ctrl,如果还同时按下了其他修饰键,则不会进入 1 pr ...
- 2020-11-16:手写代码:leetcode第406题。假设有打乱顺序的一群人站成一个队列。 每个人由一个整数对(h, k)表示,其中h是这个人的身高,k是排在这个人前面且身高大于或等于h的人数。 编写一个算法来重建这个队列。
福哥答案2020-11-16: ①排序.按照[身高]降序排列.如果[身高]一样,按照[人数]升序排列.②插入.遍历这个队列,按照[人数]插入相应位置. 采用leetcode里的代码,golang代码如 ...
- 2020-11-06:go中,谈一下调度器。
福哥答案2020-11-06:·MPG模型:goroutine的并发模型可以归纳为MPG模型:·MPG概念:线程(machine,系统线程,物理线程)-内核(processor)-协程(gorouti ...
- ModuleNotFoundError: No module named 'flask_login'
ModuleNotFoundError: No module named 'flask_login' 解决: pip install flask_login
- HINT: Add or change a related_name argument to the definition for 'usersApp.
错误原因是你的项目使用的不是Django自带的用户表,采用的自定义的用户表,这个时候需要在settings.py里面进行指定. AUTH_USER_MODEL = 'usersApp.UserProf ...