关于 Camera 产品的功能分析

news2024/12/31 5:23:19

1、问题背景

通过最近做的一些项目,发现 Tuning 一款 Camera 产品前,要考虑到的事情有很多,不是简单的点亮,按要求调完效果就结束了。

从目前的经验来看,准备工作做的越充分,后期遇到的问题也就越少。本文主要内容是对 Camera 产品的相关功能做一些分析及整理。

2、问题分析

对于 Camera 的功能具体要看是什么产品,目前在做的多是基于安卓平台带 Camera 的设备,其功能还是有点复杂的,比如。

a. AF,是否支持PDAF

b. 是否烧录OTP

c. 关于模组,是否分一供、二供模组

d. 是否要做畸变校正

e. 关于拍照、预览、录像有哪些尺寸要求

f. 是否支持第三方 Camera app

g. 预览是否要做镜像

h. 确定镜头的规格

i. 是否支持HDR

j. 人脸检测、人脸AE、人脸/人像居中等等

如上是列的 Camera 开发过程遇到的一些相机功能需求,大部分功能是和画质调试强相关的,前期开始 Tuning 时就必须要考虑到。

a、AF,是否支持PDAF

也就是自动对焦功能,通过移动相机的镜头位置,来调整焦距,可以实现远景近景的画面清晰,相较于固定焦距的镜头有更大的一个景深范围。

AF分为相位对焦和反差式对焦,支持相位对焦的 sensor 都会有PD点,如下图所示。

当是 type2/type3 的 pdaf sensor 时,关于pdaf sensor 的描述具体可看这篇文章:关于 Camera 开始 Tuning 时的一些注意事项

则需要平台端去做pd点的补偿,若平台不支持pdaf,那就只能依靠去坏点的模块抹掉,但这就会导致画面清晰度的损失。

所以当接入支持 pdaf 的sensor时,而平台又不支持pdaf时,就需确认sensor 是否有pd补偿功能,否则靠后面ISP dpc模块去处理的话,对清晰度影响会很大。

b、是否烧录OTP

是否烧录OTP也是项目开始前就要确认好的,是为了保证模组一致性才去做的,当产品出货量不大时就没必要去做这个事情了。

具体怎么烧录,烧录哪些内容,之前有总结过一篇文章:关于摄像头模组OTP配置的概述

c、关于模组,是否分一供、二供模组

当产品出货量比较大时,有些厂家会因为供货及成本的一些问题,会选择二供、三供的模组。

可能是相同的镜头、相同的sensor,也有可能是不同的sensor,对于不同的sensor 那就相当于重新调一个项目了,这没什么可说的。

而当用的是同样的镜头及sensor时,就要考虑是否软件上就要做区分,做两套效果参数,否则因为模组生产的差异导致的效果问题,就没办法处理了,

那具体怎么区分呢?如果是带OTP的话,可以在OTP里烧录不同的模组厂的id去做区分,模组也可以做不同的I2C地址去做区分等等。

d、是否要做畸变校正

对于大fov的镜头,一般都会存在畸变。这时就需要后端有畸变校正的模块去做畸变的处理,畸变处理的越小,则fov损失就会越大。

但有些厂家对畸变及fov都会有要求,这时就要考虑这之间的平衡了。关于镜头畸变相关概念具体可查看这篇文章:关于镜头畸变问题的总结

e、关于拍照、预览、录像有哪些尺寸要求

关于拍照、预览、录像这是 Camera 产品最基本的功能,具体尺寸怎么配置这是有要求的,我们所做的项目中,一般拍照是用全尺寸的,

比如13M的 sensor ,拍照的最大尺寸就是13M,也有拍照的小尺寸可供用户选择,这一般都是从全尺寸 crop 出来的,常见的一般有4:3和16:9两种尺寸。

关于4:3、16:9 尺寸的 crop,需注意的是,从4:3到16:9会保证左右的 fov, 而去 crop 上下的部分,因为平常人们会更关注的是水平方向的 fov。

预览的尺寸我们做的一般是 1080P,录像也可以是 1080P 和预览走同一路,也可有更高的分辨率,比如 4K,这个具体要看项目需求和所接平台的性能限制来决定。

另外有些要求高的项目,对于预览、拍照和录像要分别对应一套效果参数,调试出不同的效果出来。

要注意的是,如果要烧录 OTP 的话,就要提前确认好尺寸的问题,关于小尺寸的分辨率建议一般是后端的模块去做 crop 的处理,而不是通过 sensor 来处理,

否则若 OTP 中烧录的 shading 数据是用全尺寸来标定的,而后面的拍照/预览是用 sensor crop 出的尺寸来做的话,那就会导致 shading 补偿的效果不正确了。

f. 是否支持第三方 Camera app

有些客户会使用自己开发的 camera app,可能有接入一些美颜算法之类的,我们则需要对应其实际使用的 camera app 去做画质调优,确认效果。

g. 预览是否要做镜像

带有自拍功能的相机,一般拍照预览都是左右镜像的,这样貌似更符合自拍的习惯。关于镜像的配置,sensor、isp、及后端的应用都可以去做设置,但建议是不要用 sensor 去做,

因为修改 sensor 寄存器去做镜像,会改变bayer pattern,而ISP算法中的一些图像处理模块是要获取 bayer pattern 信息去做处理的,

所以如果使用 sensor 去做镜像,再用原来的效果参数,可能会导致图像效果有问题。

h. 确定镜头的规格

镜头的规格也是项目开始时就要确定下来的,一般包含镜头的清晰度、fov、景深、点胶距离、CRA、畸变、镀膜等等。

镜头的规格要根据产品的具体使用场景,及搭配的 sensor 去做相应确认的,关于产品的具体使用场景,那就要考虑到 fov、景深、畸变等参数。

上篇文章有写到最近有做一个化妆镜的项目,它定义的点胶距离是30cm,景深范围则只有10cm,

所以当人头稍微前后动一下就非常容易超出景深范围,导致人脸模糊,所以这个规格的定义就不是太合理了。

关于sensor 和镜头的匹配,就要考虑清晰度、CRA、镀膜等参数,之前有整理过一篇镜头和sensor CRA的文章:什么是 CRA ?

另外拿到镜头后要确认下是否有镜头质量问题,有遇到过几次成像出来,图像一半模糊一半清晰的问题,具体可查看这篇文章:相机出图画面一半清晰,一半模糊的原因是什么?

i. 是否支持HDR

关于真实的hdr是指 sensor 支持出多帧,后端ISP负责做长短帧的融合,来实现高动态范围。

但据说MTK、高通的平台也支持 isp 做多帧hdr的效果,但可能是指针对照片来做处理,而非视频。  

j. 人脸检测、人脸AE、人脸/人像居中

首先人脸检测是基础,基于人脸检测才能去做人脸AE、人脸/人像居中的功能。

一般是需要 NN 来支持人脸检测,当检测到人脸后,也要结合AE的算法,当某些场景下人脸过暗/过曝时,可自动调整AE的参数来提亮/压暗人脸,实现人脸清晰可见。

或者检测到人脸/人像后,实现实时的 crop 图像,将人像显示在图像中间区域。

3、问题总结

对于 camera 调试,看起来似乎没什么,但实际做起来要考虑的东西就多了,就复杂了,所以项目开始前就必须把该确认的事情都确认下来,后续才好进行下去。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/710910.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MQTT(三)MQTTX工具使用

MQTTX工具使用 MQTTX是一种开源的MQTT客户端工具,用于帮助开发人员测试和调试MQTT(Message Queuing Telemetry Transport)协议。MQTT是一种轻量级的消息传输协议,通常用于物联网设备和应用程序之间的通信。 MQTTX提供了一个用户…

MySQL中常用查看锁和事务的SQL语句

MySQL中常用查看锁和事务的SQL语句 当我们在使用MySQL数据库时,了解如何查看锁和事务的状态是非常重要的。这些信息可以帮助我们调试和优化数据库性能,以及解决并发访问的问题。在本博客中,我将介绍一些常用的MySQL查询语句,用于查…

文心一言 VS 讯飞星火 VS chatgpt (53)-- 算法导论6.2 5题

五、MAX-HEAPIFY的代码效率较高,但第 10 行中的递归调用可能例外,它可能使某些编译器产生低效的代码。请用循环控制结构取代递归,重写 MAX-HEAPIFY代码。 文心一言: 以下是使用循环控制结构取代递归调用的 MAX-HEAPIFY 代码&…

搜索引擎——倒排索引

搜索引擎——倒排索引 什么是倒排索引 倒排索引(Inverted Index)是一种用于快速查找文档的数据结构,常用于搜索引擎中。与正向索引(Forward Index)相反,倒排索引是基于单词或术语来组织文档的索引。 倒排…

【Andv】Andv图片上传组件:

文章目录 一、效果图:二、实现思路:三、实现代码:【1】components/AndvImageUpload/index.vue【2】main.js【3】使用: 一、效果图: 二、实现思路: 把andv的上传组件封装起来,并全局注册,这样别的页面不用引入就可以直接使用 三、实现代码: 【…

【复习《剑指Offer》13-17题】【每天40分钟,我们一起用50天刷完 (剑指Offer)】第十三天 13/50

专注 效率 记忆 预习 笔记 复习 做题 欢迎观看我的博客,如有问题交流,欢迎评论区留言,一定尽快回复!(大家可以去看我的专栏,是所有文章的目录)   文章字体风格: 红色文字表示&#…

k8s中 分布式存储器longhorn的安装

条件: [rootk8s-master longhorn]# kubectl get nodes -o wide #K8S集群一个 NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME k8s-master …

ABP recall:ABP modularization

为什么recall,因为之前有个task涉及到项目的配置问题,完全不知道配置文件到底在干什么,重新结合 ABP的模块化理解一下。 之前对模块化的理解:结合ABP VNext来理解DDD_abp.vnext和abp哪个生产ddd_董厂长的博客-CSDN博客 再深入一…

Jmeter之Bean shell使用详解

目录 一、什么是Bean Shell 二、Jmeter有哪些Bean Shell 三、BeanShell的用法 四、Bean Shell常用内置变量 总结: 一、什么是Bean Shell BeanShell是一种完全符合Java语法规范的脚本语言,并且又拥有自己的一些语法和方法;BeanShell是一种松散类型的脚本语言(这…

react环境

目录 一、React环境安装 1. vite集成 2. 官方脚手架 二、React特点 三、基础语法 1. JSX语法 2. 组件的写法——类组件/方法 3. 循环渲染 4. 条件渲染 5. css样式 6. 响应式状态——useState 一、React环境安装 1. vite集成 npm init vitelatest> 创建项目名>…

数分面试题-AB测试

目录标题 1、ABtest实验目的2、A/Btest是什么?意义/目的/作用3、A/Btest工作原理4、A/B test流程(面试喜欢问)5、一个实际的ABtest案例6、AB实验的注意事项6.1 网络效应:一个用户影响另一个用户6.2 学习效应:新奇效应6…

前端开发:JS中堆和栈的区别

前言 在前端实际开发中,有关JS原生的堆和栈也是很重要的点,关于底层和原理的掌握使用,尤其是在性能优化方面甚为重要。众所周知,JS的变量都是存放在内存中的,而且内存给变量开辟了两块区域,即堆区域和栈区域…

头条_signature

文章目录 0x0目标url0x1接口分析0x2定位0x3调试分析0x4扣代码,补环境0x5运行测试0x6相关代码 0x0目标url aHR0cHM6Ly93d3cudG91dGlhby5jb20 0x1接口分析 打开开发者工具,在xhr下可以找到相关接口 _signature由js算法生成 0x2定位 这里通过全局搜索的…

lesson 12 Zigbee绑定通信

目录 Zigbee绑定通信 通信原理 实验过程 实现步骤 实验现象 实验分析 Zigbee绑定通信 通信原理 1、Zigbee一共有五种通信方式:单播、广播、组播、MAC、广播 2、绑定是Zigbee的一种基本通信方式,具体绑定通信又分为三种模式,模式大同…

C++之std::move用法(一百四十三)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生…

最长回文串

Manacher 问题 寻找字符串中的最长回文串 传统做法 字符串首字符前加一个特殊字符 ‘#’ 末尾字符加一个特殊字符 ‘#’ 相邻字符间也加上特殊字符 ‘#’ 遍历字符串,除特殊字符外,以每个字符作为回文字符串的中心向外扩张 思考 很明显这种做法的…

吴恩达ChatGPT《LangChain for LLM Application Development》笔记

基于 LangChain 的 LLM 应用开发 1. 介绍 现在,使用 Prompt 可以快速开发一个应用程序,但是一个应用程序可能需要多次写Prompt,并对 LLM 的输出结果进行解析。因此,需要编写很多胶水代码。 Harrison Chase 创建的 LangChain 框…

基于Mybatis的数据权限拦截器实现

目录 一、背景二、动机三、实现思路3.1 权限类型、操作类型3.2 统一用户及数据权限集合模型3.3 定义数据权限拦截注解3.4 提取配置属性3.5 数据权限拦截器实现 四、集成方式五、关于D3S 一、背景 最近一直在做RBAC相关的架构设计与实现,传统的RBAC的权限控制只是控…

2023CCF CAT- 全国算法精英大赛

目录 A Flower B Tree C Best Travel Plans D Hearthstone E Hotpot F Mystery Sailing Challenge G Card H The diameter of a rectangle I Tourist J Mysterious Rune String A Flower B Tree C Best Travel Plans D Hearthstone E Hotpot F Mystery Sailing Challe…

Git标签管理

目录 标签介绍 创建标签 删除标签 推送标签到远程仓库 标签介绍 标签tag,可以理解为是对某次commit 的一个标识,相当于起了一个别名。 比如说有些重要的commit id 难以记住,这时候就可以利用tag给这个commit id 起一个有意义的名字&…