对MTK的pdaf对焦方式的分析

       上周五分析了下mt6752的pdaf对焦规律,以前一直认为pdaf对焦不可能准到一步到位,应该是走到清晰点附近后再用CAF(反差式)对焦到最清晰点. 但通过log查看,感觉应该是分几种情况,如果pdaf的可信度高,比如色彩分明,环境亮度高,则可以一步到位,但到位后,pdaf会在清晰问题再次进行pdaf确认,如果确认是清晰的则就停在此位置,反之则继续移动(每次停留两帧,猜测应该是一帧无法获取准确的pdaf数据);再如果pdaf可信度一般,则会利用pdaf先走到一个预估的位置,然后再次搜集pdaf数据(2帧),判断是否要移动和向哪个方向移动以及移动多少code,每移动一次都会停留两帧,估计是pdaf数据搜集需要两帧才能确定,不然就会如反差式对焦,一帧一个位置.再如果pdaf可信度很低,比较比较暗的环境下,对焦方式就会直接切换到CAF方式来对焦,此时每次移动的code都是不同的,最终停留在清晰位置.需要说明的是,无论哪种情况,AfAlgo算法在同一个位置都会获取到CAF和PDAF数据来权衡镜头的位置该在什么位置.








  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
以下是一个简单的MATLAB示例代码,用于计算MTK PDAF相位差和像素偏移量: ```matlab % 读取10个不同lens position的raw图像 for i = 1:10 filename = sprintf('raw_%d', i); raw{i} = imread(filename); end % 设定PDAF区域位置和大小 pdaf_region = [100, 100, 50, 50]; % 计算每个raw图像的PDAF相位差和像素偏移量 for i = 1:9 % 提取PDAF区域的像素值 pdaf1 = raw{i}(pdaf_region(1):pdaf_region(1)+pdaf_region(3), pdaf_region(2):pdaf_region(2)+pdaf_region(4)); pdaf2 = raw{i+1}(pdaf_region(1):pdaf_region(1)+pdaf_region(3), pdaf_region(2):pdaf_region(2)+pdaf_region(4)); % 计算PDAF相位差 pdaf_phase_diff = angle(pdaf2) - angle(pdaf1); % 计算像素偏移量 [~, max_idx] = max(abs(pdaf_phase_diff(:))); [max_row, max_col] = ind2sub(size(pdaf_phase_diff), max_idx); pixel_offset = [max_row, max_col] - [pdaf_region(3)/2, pdaf_region(4)/2]; % 存储结果 pdaf_phase_diff_array(i) = pdaf_phase_diff(max_row, max_col); pixel_offset_array(i,:) = pixel_offset; end % 输出结果 disp(pdaf_phase_diff_array); disp(pixel_offset_array); ``` 在上述示例代码中,我们首先通过循环读取10个不同lens position的raw图像。然后,我们设定PDAF区域位置和大小,并使用这个区域提取两个相邻raw图像的PDAF像素值。我们通过计算这两个像素值的相位差来计算PDAF相位差,并找到相位差最大的像素位置来计算像素偏移量。最后,我们将所有结果存储到数组中,并输出结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值