相机面试问题总结

1,Camera基本工作原理

答案: 光线通过镜头Lens进入摄像头内部,然后经过IR Filter过滤红外光,最后到达sensor(传感器),senor分为按照材质可以分为CMOS和CCD两种,可以将光学信号转换为电信号,再通过内部的ADC电路转换为数字信号,然后传输给DSP(如果有的话,如果没有则以DVP的方式传送数据到基带芯片baseband,此时的数据格式Raw Data,后面有讲进行加工)加工处理,转换成RGB、YUV等格式输出。

数据流是如何从sensor到APP的?

上述描述结束后,在ISP处理后面的阶段,数据会进行分流,分为capture,preview,video等以供后续动作使用。例如zsl拍照,就是通过下发request,并获取capture stream的数据流,进行编码压缩,进而上报APP,完成拍照动作

2,OTP是干什么的?platform otp和sensor otp的区别?

OTP用于存储Lens shading参数、AWB参数、AF position等数据的校准数据,用于校准

平台端 otp:没有otp的自校正功能,需要我们BB端(服务器)进行校校准,从存储空间(外挂eeprom或者sensor内部存储空间)中read出数据,然后将数据送给BB(BBinder)进行校准。

sensor otp:sensor有otp的自校准功能,从存储空间(外挂eeprom或者sensor内部存储空间)中read出数据,然后写回sensor寄存器,送给BB端的RawData是已经校正过的数据

3,Qcom CPP功能/MTK 数据流程

QCOM:高通CPP主要功能包括Denoise,Scale,Sharpen,Rotate

MTK:Pass1, Pass2; Pass1主要是加入tuning参数以及其他处理,Pass2主要是完成Crop,Resize、数据分流等操作

双摄同步FrameSync,AEsync
双摄verification原理?如果有问题,如何分析?(中心点,光轴,AE不同步)
是否遇到过花屏/变绿的情况,如何解决?都有哪些原因会导致该问题?尺寸不能被16整除;

4,高通平台,如何做sensor兼容?,

平台已经做好兼容,只要在camera_config.xml中配置上sensor_name即可区分不同sensor。

5,打开相机预览界面卡顿,对比正常log和卡顿log,发现在人脸识别环节处理速度较慢,导致帧率下降。

解决办法:1.更新人脸识别算法库。2.是人脸识别时跳帧处理,减少耗时。

6,简述HDR或者美颜算法的移植过程

以HDR算法为例,首先,需要在Android.mk中添加需要编译的源文件,需要加载的头文件,指定编译生成的so库.在parameters中增加hdr模式key值,在takepicture函数中从HDR算法中获取需要拍照的张数及EV值,在parameters中增加hdr模式,encodedata函数中增加进入HDR算法的入口函数m_QCameraArcHDR.init和m_QCameraArcHDR.process,将拍的三张图片帧以EV值分别为-6,0,6去处理.

7,开发过程中遇到的问题:闪光灯状态设为auto,暗环境下拍照,点击缩略图查看图片,返回相机界面迅速再拍照,闪光灯有时会不闪.

分析:查看log拍照过程中flashmode设置正确,takepicture之前和之后分别加log打印mFlashNeeded值,显示拍照之前该值为0,拍照过程中该值变成1,查看相关代码,mFlashNeeded是在metadata callback中从AE中获取的,而获取值和拍照在两个不同的线程中完成的,两个线程会出现同步不上的情况,所以会引起这个问题.

解决办法:在拍照之前,判断flashmode为auto, mFlashNeeded为0时,等待100毫秒左右的时间,让另外一个线程有时间获取mFlashNeeded值的状态.,

8,遇到的问题: 图像中有不断变化的细密的水平条纹(与荧光灯的频闪造成的大面积的滚动水平条纹不同,表现出来的是一个像素高的水平条纹状躁点,位置不固定,数量比较多,而且随光线强弱有一定的变化)

解决办法: 因为设置某些sensor寄存器的时候,会影响到这些水平条纹的颜色,所以基本上排除是在数据传输过程中板子对数据造成的干扰,也排除接触不良的可能性,应该是数据在sensor内部已经存在这些水平条纹。此外相同的初始化序列,相同的sensor,在厂商的demo版上也没有发生这种情况,所以也基本排除软件的问题。最后,发现原先为了节省硬件成本,将sensor的两个电压相同的模拟电和数字电由同一芯片输出供给,导致两者之间互相干扰,影响了sensor的正常工作

9,切某些模式后预览亮度变暗怎么分析.

排查:直接从驱动搜索sensor_fill_exposure_array接口下发的参数中的gain值和fl_line值,从实际设入sensor的参数来判断是由于iso的设定还是帧率的设定导致变暗的问题.

10,HAL3 cts (获取到的sensitivity的值和实际设定的值始终有略微的差值)

分析过程:首先看代码先确定HAL3中getsensitivity和setsensitivity对应操作到的参数具体是ISO值(也就是驱动中对应的gain值),发现每次都有略微的差值,怀疑是哪边的某种转换丢失了部分值,确定最终下到驱动的值是多少(发现和get到的值一致,也是丢了某些精度).代码从下往上排查传入sensor_fill_exposure_array的gain参数在传入前有没有什么转换(同时邮件咨询FAE驱动中有无对应转换动作),代码上看到gain在传入sensor_fill_exposure_array前(set_exposure时)经过了驱动接口的sensor_calculate_exposure函数的操作,使的gain值失去了一定的精度.咨询FAE得知是由于sensor本身并不是无级的可设置gian值,需要根据下发的gain切到对应的实际能支持的最接近的gain值上.所以和下发的gain值有了略微区别.

解决方法:针对对应sensor型号,把转换前的gain值赋值给获取sensitivity会读取的参数上.

11,sensor图像数据转换流程

sensor内部的感光芯片是按顺序排列的,光线进来通过bayer pattern后中间已经经过光信号到电信号到数字信号的转换了,然后数据开始通过MIPI从sensor传给平台,MIPI打包后(主控最前端)就得到了RAW Data。高通平台的是RAW Data经过ob,shading之后再经过Demosaic转换成了RGB,其实Demosaic就是一个插值出每个像素点R,G,B值的一个过程,之后再由ACE从RGB转换成YUV,hal层那边在通过jpegencodeconfig进行encode成jpeg数据通过回调上传给app。

12,相机专业模式倒计时开启状态下,快门时间调到3s以上,快门计时还没有结束就发出声音

在相机进行专业拍照的时候,状态机进行了改变,走的是非zsl模式,点击拍照会停止预览,然后进行非zsl拍照,可是在停止预览操作到彻底关闭通道和流数据之前查看log发现还会有帧数据进行了上传,这时候状态机是为4的状态下,callback函数那边的playshutter会进行判断,这时候状态机已经为非zsl模式,又有了帧数据,就会进行playshutter。根本原因是stoppreview关闭流和通道需要一些时间,会有一些帧数据依然回调,虽然不会进行处理,可是playshutter那边依然会发出声音。解决办法:自己新添加了一个标志位,当执行stoppreview时候将其置为1,再playshutter那边新增判断条件,不让其发出声音。

13,手动设置ISO&S连拍后,查看照片信息,发现信息显示的ISO&S数值错误

问题分析:手动设置ISO&S后,单拍发现照片信息显示正常,但是连拍照片信息显示错误,将连拍的相片散开发现,只有第一张照片显示正常,其他均错误;进一步抓log分析发现,单拍时,camera处于ZSL模式,而连拍时,camera处于非ZSL模式。

 ZSL模式:sensor通过MIPI接口将数据流传送到ISP中并分成多个相同(size不同)的流(preview流、thumbnail流、capture流),在拍照时,takepicture会从capture流中取到数据传输给APP,此时也就是说,预览和拍照处于相同全尺寸流状态,即拍照只是从流里取一张而已

  非ZSL模式:拍照时,stream off,会停止preview,takepicture从sensor获取一张图片数据传给APP,APP接收到图片后,发送一个命令给sensor,sensor会通过(preview setting、capture setting、video setting等)重新使stream on,重新preview,sensor通过MIPI接口将数据流传送到ISP中并分成多个相同(size不同)的流(preview流、thumbnail流、capture流),takepicture从capture 流获取图片数据传送给APP(故此时的图片信息与第一张图片信息会有所差异),预览是小尺寸,拍照需切换设置到全尺寸,会有一定的延时

解决方案:将连拍模式的camera模式强制转化成ZSL模式,即将hardware/qcom/camera/QCamera2/HAL/QCameraParameters.cpp中setZslMode()函数下的

if(!strcmp(str_asus_camera_mode_val,"PRO")||!strcmp(str_asus_camera_mode_val,"HDR")){}改成

if(/*!strcmp(str_asus_camera_mode_val,"PRO")||*/!strcmp(str_asus_camera_mode_val,"HDR")){}

       

  • 6
    点赞
  • 160
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
面试中,当被问到"camera tuning"这个问题时,我会详细解释这个概念以及我对其的理解。首先,相机调校是指根据拍摄环境、需求和目标来调整相机的设置和参数,以获得最佳的图像质量和拍摄效果。 我会提到我所掌握的相机调校的技术和方法。相机调校包括了各种设置和参数调整,如白平衡、曝光、对焦、色彩饱和度等。对于每个具体的拍摄场景,我会根据光线条件、环境要素和题材特点来调整相机的设置。我会注重确保图像的曝光正确、色彩还原准确以及细节清晰可见。 同时,我会强调我在实践中不断学习和改进的态度。相机调校是一个不断亲自尝试和调整的过程,随着不同场景和需求的变化,我会灵活运用各种技巧和方法来获得更好的拍摄效果。我会积极主动地探索新的调校技术和工具,并将其应用到实际拍摄中。 另外,我会提到我对图像处理的了解和实践经验。除了相机调校,图像处理也是获得最佳图像质量的重要环节之一。我会使用一些专业的图像处理软件进行后期处理,以优化图像效果和解决各种问题。 最后,我会强调我对细节的重视和耐心。相机调校需要耐心和细致的工作态度,我会仔细观察和调整每个拍摄场景中的细节,以确保图像质量的最佳表现。 通过以上回答,我将展示出对相机调校的理解和实践经验,以及不断学习和改进的态度,从而向面试官展示我适合这个职位的能力和素质。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

liujun3512159

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值