关于Sensor和ISP,对输出图像做Crop和Downscale的注意事项

01

背景

客户要求调试ov的一款分辨率为4608x2592的Sensor,但目前我司的Soc最大支持分辨率是4096x3456,所以目前能出的最大分辨率为4096x2592(11M) 。

客户要求ISP要出两路视频流 (11M+1080P) ,且不能有视场角(fov)的损失,

1080P是作为显示的流,11M是用于拍照,所以基于这个需求,总结分析一下Sensor和ISP做crop,downscale的注意事项。

02

需求分析

  • 这款Sensor支持不同尺寸分辨率的输出4608x2592、3840x2160、2304x1296、1920x1080,但这些尺寸的fov是否都一样呢?

  • 4096x2592不是标准的16:9的分辨率(目前的显示屏、电视屏基本都是16:9),ISP作downscaler成1080P (为不损失fov), 因为像素长宽比不同,图像肯定会有压扁;

  • Sensor出不同尺寸的分辨率对图像效果是否会有影响?有哪些影响 ?

  • ISP或者后端的编码对图像作crop\downscale是否对图像效果有影响 ?有哪些影响 ?

03

分析结论

  • 不一定都一样,这要看sensor裁剪像素的方式,是直接crop还是binning,通过binning和skipping的方式减少像素是不会损失fov的,

    binning是将相邻像元(相同颜色)感应的电荷加在一起,以一个像素的模式读出(也就4个像素变为了1个),

    所以上述尺寸中,3840x2160和1920x1080、4608x2592和2304x1296的fov是一样的,因为其像素数存在4:1的关系

  • 4096x2592的分辨率压缩成1920x1080的分辨率,因为像素长宽比不一样,所以图像肯定会有压扁,

    所以senosr只能出4k(3840x2160)的分辨率,能正常压缩到1080P(因为长宽比都是16:9),

    且4K和1080P fov是一致的,但4K是要比sensor 全尺寸的分辨率(4096x2592)的fov是要小的;

  • Sensor出不同的分辨率对图像效果肯定是有影响的,最直接的曝光时间肯定会不同,后端ISP的处理也会导致有差异,

    比如自动曝光、自动白平衡,这些都是需要通过统计全局的像素点来计算得到合适的一个值,

    所以sensor出的每组分辨率都要对应单独的一套效果参数;

  • 后端ISP或者编码做crop时对图像不会存在影响,因为isp是对raw图像的处理,sensor输入的raw是不变的,

    但ISP或者编码做downscale时,清晰度方面肯定会较之前要差一些;

04

总结

和客户沟通后,目前的做法是,Sensor直接出8M的分辨率,ISP输出8M+1080P两路视频流(1080P是8M经过ISP downscale得到),

还存在另一个拍照的应用,Sensor直接出11M的流,从中截取1fps用于拍照;

此时之前的两路流是关闭掉了,这样就满足了客户必须要11M的问题,以及两路视频流不存在fov的差异。

所以拿到一款sensor的调试任务后不是直接调试效果,而是要搞清楚项目的需求,存在的问题,因为客户对有些方面也是不了解的

(客户就觉得sensor出的分辨率都binning得到的,不存在fov的差异)需要你来提醒它,避免做无用功。

推荐阅读:

哪些坑爹的Android CTS测试

一篇文章带你了解Android 最新Camera框架

这可能是介绍Android UvcCamera最详细的文章了

深圳上班,

生活简简单单,

14年开始从事Android Camera相关软件开发工作,

做过车载、手机、执法记录仪......

公众号记录生活和工作的点滴,

点击关注“小驰笔记”,期待和你相遇~

欢迎关注我的个人博客:http://www.xiaochibiji.com

posted @ 2021-09-13 08:00  小驰行动派  阅读(84)  评论(0编辑  收藏  举报  来源