开局更正一点问题,首先有关pdaf的文件一共有六个,分别是pdaf_cpu的c和h,用来进行pdaf需要的计算和拟合,afalgo的c和h,存储pdaf个cdaf的逻辑和算法及raw图的抓取,同时还有cvi_af的对外接口封装
待测相机处理芯片为OV48B2Q.基于微透镜进行相位检测,跟刚开始考虑的遮蔽根本不一样 他是22 ml_pdaf:
2×2:指的是该相位检测的最小单元是2 行 ×2 列的像素组:这 4 个相邻的同色像素(适配 OV48B 的 4-cell Quad Bayer 滤色片架构)共享一个大尺寸的微透镜,光线通过这个微透镜后,会在 4 个子像素上形成不同的入射角度分布。
同时0.8微米且支持全方向相位检测 Quad Bayer(也叫四拜尔 / 4-cell)把这个单元放大了 4 倍,它的最小单元是4×4 像素块,里面每 2×2 的区域是同一种颜色,结构如下:
其中pdaf_cpu负责给出亚像素的值,afalgo则是状态机,决定什么时候进入各种不同状态
gainmap的获取: 投射式灯箱给出平行光源,摄像头贴近拍照,获取gainmap
dcc的获取:D50光源照射,相位差理论上标定的时候是左边大到左右相等到右边大,完整出来应该是个线性
2026.3.16完整记录
根据舜宇光学的参考文档,重新设置环境进行标定
gainmap标定: 背照光源,色温5000K,亮度750-900lx,镜头距离光源1cm,拍摄图像,获取标定结果为:
dcc标定:光源d50,亮度拉到最大,镜头与标定面平行,距离一张a4纸,拍摄170-230距离的值,间隔5
通过SAD计算相位差, 此时生成dcc同时生成可视的dac-pd图
以及dcc_slope图
单就这两张图来看,计算结果还算合理,同时通过他的广泛范围推测,应当把范围限定在中间190-210的范围,这一段具有比较明显的线性,斜率变化不大
采图的时候电机位置记得先放置0,不然会乱跑
在端侧计算相位差是时,出来的结果还是不对,就像定死了一样卡在了-0.529
问题在于目前的在线相位计算与离线相位计算的方法不一致,我需要先把他们的计算相位逻辑改成完全一致,然后再进行相位计算尝试
在修正中认识到一个问题:理论上来说,在相同显示距离的时候,不同的物体在不同的镜头变焦计算出的像素位移计算结果应当是相同的,同时同一个物体在不同位置计算的像素位移,应当在准确对焦的附近得到的值趋近0,而非在所有的距离算出来的相位差是固定的
D50光源下相位差测试结果(gainmap始终保持不变,dcc也用的是相同的)
这是距离30公分的标定板计算出来的dac及相位差的关系
10cm的相位差计算完全乱了,不过这个是真实物体的
尝试使用dcc标定图在10cm重新计算一次
考虑为什么在相同的gainmap下,当物体不同的时候,检测结果也不一样
在保持gainmap和dcc标定的内容,对不同距离的不同物体进行了像素位移与dac关系的计算,得到的结果如下:
正常光源下相位差测试结果(gainmap始终保持不变,dcc也用的是相同的)
有意思的来了,gainmap标定目前来看完全没毛病.就算在自然光照射条件下,相位差计算也是合理的数值
我同时应该试试10cm距离,重新尝试下
在距离非常近的情况下,计算的结果不同,就目前测试,就算使用dcc标定,出来的相位差也不对
在距离较远,获取到的图像内容更丰富的情况下,算出来的结果也是非常完美的线性,在210位置确实也是比较好的对焦程度
此处注意到一个问题,虽然说具有比较好的线性,但是应当在计算相同距离的同时出来的相位差是一致的,因此接下来尝试做一组实验,在相同距离下,固定相机位置不懂,分别使用dcc标定线条,对焦测试卡及随机实际物体(饮料瓶,金毛雕像)进行测试,查看计算出的相位结果是否合理,理论上应该是完全相同的
测试间距为35mm,测试板使用了亚克力板进行了安装,可能存在反光的问题
line_35mm
首先,计算结果还算能认可
其次,明显-1.1的亚像素计算在170-210
范围内有点超过限制,后续扩大相位计算,
明显要往大放
human_35mm
相位差明显不对,计算出来的结果
应当在中间的时候不会有这么多趋近0
的地方,但是现在所有的数据都存在boundary_hit
比例较高的情况
dog_35mm
面对毛发的测量直接就寄,根本没法用
KP就变成了:能否通过算法解决sad计算不准确的问题? 目前来看在像素位移为0的区域, 出现的结果计算都是不正确的, 更不用说毛发这类难对焦的结果了
更新,目前最大的问题是根本没有办法解决计算相位差不准的问题,他也不让我修改任何关于有关相位获取的代码,那我就直接设置强调节出个demo就行,反正他也没需求,就目前来看也没有让我开发需求的必要,
对齐后发现我刚开始想做的就是他后面要做的多段对焦,所以结果出不来,主要是因为他也不支持多端对焦的功能,目前就是两段对焦,对焦结果如下:
首先解决置信度问题,可靠场景下,confidence 由 SAD可靠度 + 边缘 + 方差加权得到,随后再做 ISO补偿,非可靠场景下,走衰减模型:confidence = 0.5 * decay_factor * iso_factor
尝试了限定阈值,然后给联想之前的回滞操作.给出了一份三段的代码,效果还可以
之后尝试五段LUT,效果一般,暂时不太知道怎么改