FPGA实现自动对焦
一、调节准备部分
1.FPGA逻辑实现水平梯度的计算
2.FPGA逻辑实现垂直梯度的计算
3.FPGA逻辑实现对角线梯度的计算
4.像素的水平梯度,垂直梯度,对角线梯度的绝对值之后作为当前像素的梯度
5.将ROI区域内的所有像素的梯度进行累计求和
6.将ROI梯度和传递给MCU;
7.在MCU中将af_tidu_sum/(roi_w*roi_h)作为ROI的平均梯度
8.将ROI的平均梯度通过串口发送给伺服-这个串口反馈梯度需要按照图像的帧周期反馈
9.伺服电机通过串口接收到的这个平均梯度作为评价指标
10.利用爬坡算法来进行自动调焦
11.梯度值越大,说明图像越清晰,梯度值的最大值就是图像的最清晰的情况
二、调焦算法
如果新值 > 旧值,说明正在靠近焦点,继续同方向移动。
如果新值 < 旧值,说明已经越过了峰值点,此时改变方向,并缩小移动步长。
实际中也会采用全程扫描再回到最大值点的方式,电机直接从头走到尾记录每步的梯度和,然后快速回到全局最大值位置。
三、调焦爬山算法-图像清晰度评价的搜索算法
hill-climbing爬山搜索法
1.基本爬山算法
固定步长,直到越过峰值后反向,减小步长,反复进行。
2.改进的爬山算法
2.1.变步长爬山算法
依据梯度的大小动态调整步长
2.2.曲线拟合
在接近峰值时使用抛物线或高斯拟合,直接预测峰值位置。
2.3.Fibonacci搜索或黄金分割搜索:这是一种快速搜索单峰函数极值的方法,不是严格爬坡,但用于快速对焦
2.4.三点法或抛物线插值法:采样三个点拟合抛物线,预测最大值。
2.5.自适应步长爬山(Adaptive Hill-Climbing):根据评价值的增加速率调整步长。
2.6.大步长粗扫+小步长精扫:先大步快速定位大致峰值,再小步精确寻找。
2.7.基于预测的爬山:如利用之前帧的运动信息预测焦点位置。
