Android Camera Auto Focus详解
相机 Auto Focus (PDAF / LDAF / TOF) 详解1. 自动对焦概述1.1 什么是对焦对焦是调整镜头中透镜组的位置,使目标物体的光线精确汇聚到传感器平面上,形成清晰图像的过程。对焦原理: 无穷远 近距离 │ │ ▼ ▼ ─────→ 透镜组 ←───── ─────→ 透镜组 ←───── │ │ ▼ ▼ ┌────────┐ ┌────────┐ │ Sensor │ │ Sensor │ │ (清晰) │ │ (清晰) │ └────────┘ └────────┘ 透镜位置不同 → 焦平面不同 → 清晰的物体距离不同 自动对焦 (AF) 的任务: 1. 测量目标距离 (或检测清晰度) 2. 计算透镜应移动到的位置 3. 驱动马达移动透镜1.2 对焦方式分类┌─────────────────────────────────────────────────────────────┐ │ 自动对焦方式分类 │ ├─────────────────────────────────────────────────────────────┤ │ │ │ 一、主动对焦 (Active AF) │ │ ├─ 1. LDAF (Laser Detection AF) 激光测距对焦 │ │ ├─ 2. TOF AF (Time of Flight AF) 飞行时间对焦 │ │ └─ 3. IR AF (Infrared AF) 红外测距对焦 │ │ │ │ 二、被动对焦 (Passive AF) │ │ ├─ 4. CDAF (Contrast Detection AF) 反差对焦 │ │ ├─ 5. PDAF (Phase Detection AF) 相位对焦 │ │ └─ 6. DPAF (Dual Pixel AF) 全像素双核对焦 │ │ │ │ 三、混合对焦 (Hybrid AF) │ │ └─ 7. PDAF + CDAF / PDAF + TOF / DPAF + CDAF │ │ │ └─────────────────────────────────────────────────────────────┘2. PDAF (Phase Detection Auto Focus, 相位检测对焦)2.1 基本原理PDAF 利用相位差来判断焦点位置。通过在传感器上设置遮挡像素对(左遮挡/右遮挡),分别接收通过镜头不同区域的光线,计算两路信号的相位差,直接得出失焦方向和距离。PDAF 原理: 入射光 │ ▼ ┌──────────────┐ │ 镜头 │ │ ┌─────┐ │ │ │左半部│右半部│ │ └──┬──┴──┬──┘ │ │ │ └─────┼─────┼────── │ │ ▼ ▼ ┌──────┐ ┌──────┐ │左遮挡│ │右遮挡│ ← 遮挡像素 (Shield Pixel) │像素 L│ │像素 R│ └──┬───┘ └──┬───┘ │ │ ▼ ▼ 信号 L 信号 R 相位差分析: 合焦: L 和 R 信号重合 → 相位差 = 0 前焦: L 信号在前, R 信号在后 → 相位差 0 → 需要后移透镜 后焦: L 信号在后, R 信号在前 → 相位差 0 → 需要前移透镜 相位差大小 ∝ 失焦距离 相位差符号 → 失焦方向 → 一步到位, 无需搜索!2.2 PDAF 像素结构2.2.1 遮挡像素 (Shield Pixel)普通像素 vs PDAF 像素: 普通像素: PDAF 像素 (左遮挡): ┌───────────┐ ┌───────────┐ │ 微透镜 │ │ 微透镜 │ │ ┌───────┐ │ │ ┌───────┐ │ │ │ │ │ │ │████ │ │ ← 左半部遮挡 │ │ PD │ │ │ │████PD │ │ │ │ │ │ │ │████ │ │ │ └───────┘ │ │ └───────┘ │ └───────────┘ └───────────┘ 接收全部光线 仅接收右半部光线 PDAF 像素对: 左遮挡像素 (L): 仅接收通过镜头右半部的光线 右遮挡像素 (R): 仅接收通过镜头左半部的光线 → L 和 R 的信号存在相位差2.2.2 PDAF 像素排列方式方式 1: 独立 PDAF 像素 (Dedicated PDAF Pixel) ┌─┬─┬─┬─┬─┬─┬─┬─┐ │R│G│R│G│R│G│R│G│ ← 普通像素行 ├─┼─┼─┼─┼─┼─┼─┼─┤ │G│B│G│B│G│B│G│B│ ← 普通像素行 ├─┼─┼─┼─┼─┼─┼─┼─┤ │R│G│P│G│R│G│P│G│ ← PDAF 像素 (P) 替换部分像素 ├─┼─┼─┼─┼─┼─┼─┼─┤ │G│B│G│B│G│B│G│B│ ← 普通像素行 └─┴─┴─┴─┴─┴─┴─┴─┘ P = PDAF 像素对 (左遮挡 + 右遮挡) 优点: 不影响普通像素 缺点: PDAF 像素密度低, 低光性能差 方式 2: 全像素双核 (Dual Pixel, DPAF) ┌──┬──┬──┬──┬──┬──┐ │RL│GL│RL│GL│RL│GL│ ← 每个像素都分为左右两个子像素 │RR│GR│RR│GR│RR│GR│ ├──┼──┼──┼──┼──┼──┤ │GL│BL│GL│BL│GL│BL│ │GR│BR│GR│BR│GR│BR│ ├──┼──┼──┼──┼──┼──┤ 每个像素 = 左子像素(L) + 右子像素(R) 正常拍照: L + R 合并 → 全部光线 PDAF: L - R → 相位差 优点: 100% 像素都参与 PDAF → 覆盖全画面, 低光好 缺点: 像素面积减小, 满阱容量降低 方式 3: 2×1 OCL (2×1 On-Chip Lens) ┌──┬──┬──┬──┐ │L │R │L │R │ ← 每 2 个像素共享一个微透镜 ├──┼──┼──┼──┤ L 和 R 各接收一半光线 │L │R │L │R │ ├──┼──┼──┼──┤ 介于独立 PDAF 和 DPAF 之间2.3 PDAF 相位差计算// PDAF 相位差计算structpdaf_result{floatphase_diff;// 相位差 (pixels)floatdefocus_distance;// 失焦距离 (DAC steps)floatconfidence;// 置信度 [0, 1]bool direction;// 失焦方向: true=前焦, false=后焦};// 计算相位差 (简化版)floatcalculate_phase_diff(int16_t*left_signal,int16_t*right_signal,uint32_tlength){// 互相关计算floatmax_corr=0;intbest_shift=0;for(intshift=-MAX_SHIFT;shift=MAX_SHIFT;shift++){floatcorr=0;for(uint32_ti=0;ilength;i++){intj=i+shift;if(j=0jlength){corr+=left_signal[i]*right_signal[j];}}if(corrmax_corr){max_corr=corr;best_shift=shift;}}return(

相关新闻

冯·诺依曼体系结构与Linux系统优化实践

冯·诺依曼体系结构与Linux系统优化实践

1. 计算机体系结构的基石:冯诺依曼体系结构解析在计算机科学领域,冯诺依曼体系结构就像一座建筑的钢筋骨架,支撑着现代计算机的运行。我第一次接触这个概念是在大学计算机组成原理课上,当时教授用"厨房做菜"的比喻让我瞬…

2026/9/22 5:05:16 阅读更多 →
深入解析C++ new与delete:从内存分配到对象生命周期管理

深入解析C++ new与delete:从内存分配到对象生命周期管理

1. 项目概述:从“内存分配”到“对象生命周期管理”在C的世界里,new和delete这对操作符,几乎是每个开发者从入门到精通都无法绕开的核心概念。表面上看,它们的功能简单直接:new负责从堆上分配内存并构造对象&#xff0…

2026/9/22 5:05:18 阅读更多 →
智能写作工具在教育教材编写中的查重优化实践

智能写作工具在教育教材编写中的查重优化实践

1. 工具定位与核心价值解析在教育出版行业摸爬滚打八年,最让我头疼的就是教材编写过程中的查重问题。去年参与某职业教育教材项目时,团队花费了整整三周时间人工调整内容重复率,直到发现了几款智能写作工具才彻底改变工作模式。这类工具的核心…

2026/9/22 3:05:24 阅读更多 →

最新新闻

告别报错:sql增加字段实战速查手册

告别报错:sql增加字段实战速查手册

告别报错:sql增加字段实战速查手册 昨晚十一点,生产库突然炸了。 日志里全是红色的 SQLException ,StackTrace 长得像天书,一眼看过去全是 at com.mysql.cj.jdbc... 。…

2026/9/22 6:31:13 阅读更多 →
5分钟搞懂自由落体运动公式:前端速查手册避坑指南

5分钟搞懂自由落体运动公式:前端速查手册避坑指南

5分钟搞懂自由落体运动公式:前端速查手册避坑指南 配置环境就卡半天,这种痛苦我太懂了。刚接触物理引擎模拟或者做教育类前端项目时,很多人对着牛顿第二定律发呆,连最基本的位移和时间关系都搞混,导致动画逻辑全错。别急,这篇 速查手册…

2026/9/22 6:31:13 阅读更多 →
楼月微信语音播放器性能优化:3个API变更坑与面试通关指南

楼月微信语音播放器性能优化:3个API变更坑与面试通关指南

楼月微信语音播放器性能优化:3个API变更坑与面试通关指南 版本升级后 API 全变了?别慌,这是楼月微信语音播放器重构后的常态,也是性能优化最容易被忽略的盲区。…

2026/9/22 6:31:13 阅读更多 →
别被面试必问的透气鞋原理坑了3个真实案例揭秘

别被面试必问的透气鞋原理坑了3个真实案例揭秘

别被面试必问的透气鞋原理坑了3个真实案例揭秘 刚学完Python循环和类,代码能跑通,一让我搭个“智能透气鞋监控系统”,脑子直接宕机?这种“会写代码不会搭项目”的痛,我见过太多。更扎心的是,面试官最爱拿【透气鞋】做场景题,问的是传感器数据聚…

2026/9/22 6:31:13 阅读更多 →
5年老兵揭秘:小破孩图片入门到精通避坑指南

5年老兵揭秘:小破孩图片入门到精通避坑指南

5年老兵揭秘:小破孩图片入门到精通避坑指南 看了一堆教程还是不会写项目?别慌,这坑我替你踩过了。 很多人以为“小破孩图片”只是表情包,但在前端资源加载、CDN缓存策略以及移动端性能优化中,它其实是一个极佳的测试样本。从入门到精通,核心不在于…

2026/9/22 6:31:12 阅读更多 →
3个坑让系统卡死,心中那自由的世界新手避坑指南

3个坑让系统卡死,心中那自由的世界新手避坑指南

3个坑让系统卡死,心中那自由的世界新手避坑指南 面试被问原理答不上来,这种丢人的事我见得太多了。很多新手觉得代码能跑就行,结果一上生产环境,接口响应慢得像蜗牛,用户投诉不断。这时候你再去看文档,发现连最基础的异步概念都没搞透。这就是典型的【…

2026/9/22 6:30:12 阅读更多 →

日新闻

3台商务办公笔记本实测:手写实现环境配置,告别卡半天

3台商务办公笔记本实测:手写实现环境配置,告别卡半天

3台商务办公笔记本实测:手写实现环境配置,告别卡半天 配置环境就卡半天?别怪机器慢,多半是你没选对工具链。在Java、Go或Python的项目现场, 手写实现…

2026/9/22 0:00:41 阅读更多 →
剑帝加点速查手册:3分钟搞懂核心逻辑

剑帝加点速查手册:3分钟搞懂核心逻辑

剑帝加点速查手册:3分钟搞懂核心逻辑 面试被问原理答不上来,是不是常态?别慌。很多开发者对着 GitHub 开源仓库里的代码发呆,看似简单实则暗藏玄机。今天这份【剑帝加点】速查手册,直接带你拆解核心实现,把面试必考的原理讲透。…

2026/9/22 0:00:41 阅读更多 →
手写实现图片压缩网站核心:搞定WebP转换与质量调优

手写实现图片压缩网站核心:搞定WebP转换与质量调优

手写实现图片压缩网站核心:搞定WebP转换与质量调优 复制来的代码跑不通不知道怎么调?别慌,这种“复制粘贴地狱”在开发圈太常见了。尤其是做 图片压缩网站…

2026/9/22 0:00:41 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/22 4:32:41 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/22 4:38:57 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/21 4:51:05 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/21 15:36:51 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/21 15:36:51 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/22 2:43:42 阅读更多 →