参考:https://download.csdn.net/download/who_you_are/9806928

拍照方案

拍照的场景中,一般的视频预览和抓拍的分辨率是不一样的,而且拍照的ISP的效果处理需要对人脸的肤色等做优化处理,也会和视频的预览通路不一样。所以抓拍的数据通路分为单pipe和双pipe两种,并且VI的pipe工作模式分为离线模式和在线模式以及并行模式,拍照的数据通路也建立在VI之上,所以每个pipe可以使用在线或者离线的形式,客户可以根据使用的场景而定。VI和VPSS之间的在线和离线关系只影响到拍照的YUV输出的位置,不影响拍照的控制流。

上文中的单pipe指的是拍照和预览使用同一个ISP通路,双pipe指的是拍照和预览使用的不同ISP通路。

消费类电子还有支持PRO(professional)模式以及zsl(zero shutter lag),PRO模式下ISP会控制sensor的曝光,得到多张曝光时间和增益可调的图片,也可用于HDR算法做多张不同曝光的照片合成,也可以用于拍摄固定曝光时间的照片。zsl模式也就是零延时拍照,可以减少快门或者其他原因的延时,可以拍摄到触发拍照瞬间的图像。

1.双pipe离线的拍照数据通路

双pipe离线的数据通路是一个sensor进来的数据,经过VI dev的时序解析后,分别绑定到2个不同的pipe,上面的pipe用于视频预览和录像,下面的pipe用于拍照。视频的预览和录像的pipe可以在线,可以离线,拍照的pipe是离线的。

预览和录像的分辨率都比较小,所以经过了BAS,做了Bayer scale,主要是减小上面pipe的处理的分辨率,从而降低功耗。DV产品中预览使用的lcd的屏分辨率一般都很小,但是需要预览通路一直存在。

拍照的分辨率比较大,但是用户不会一直拍照,所以下面的pipe用于拍照,一般是在客户需要拍照时才启动下面的pipe通路。

senor的曝光控制是有上面的视频pipe的ISP来控制的。

用户设置曝光相关的属性和触发拍照的接口,用的pipe号都是下面那个拍照用的pipe,内部数据同步有VI和ISP驱动来完成。

2.下面这个是双pipe在线模式拍照:(和上面的离线的模式区别在于拍照的那个pipe是在线的)

3.单pipe的离线拍照数据的通路:

单pipe离线数据通路是视频预览和拍照共用一个pipe。

单pipe离线模式拍照使用的方法是在平时视频预览是整个通路可以采用比较小的分辨率,只有切换到拍照模式的时候才将sensor和VI等切换到大的拍照分辨率。可以节省功耗。

当录像和拍照的分辨率是一样的时候,用户不需要对拍照的isp做特殊的调节,可以从单pipe的视频里面取出YUV编成jpeg来实现拍照的方案。这种方案不需要VI和ISP的驱动做额外的事情,并不需要拍照的mpi的接口。

4.单pipe在线模式的拍照

VI模块目前只支持最多2个pipe的同时在线,如果多个sensor输入的场景,拍照使用在线是,其他的sensor可能要离线处理。

5.并行模式拍照

由于VI_PROC性能的最大是4k@60fps,在VI_CAP输入大数据量的时序超过4k@60fps时,需要采用并行的模式。支持调用mpi的接口来拍照。

6.zsl拍照

zsl模式的拍照通路和双pipe离线模式的拍照通路一样,区别是vi驱动内部会缓存一个RAW数据点额队列。在调用HI_MPI_SNAP_EnablePipe接口后,VI的内部就开始缓存RAW数据,调用HI_MPI_SNAP_TriggerPipe接口会选择zsl的拍照帧,然后将拍照帧送给ISP处理。

7.拼接模式的拍照

拼接的功能是avs的模块实现的。

用户调用HI_MPI_SNAP_MultiTrigger接口拍照,VI驱动内部会将同一时刻不同的sensor的那一帧数据标记为抓拍,用户可以通过venc的HI_MPI_VENC_SetJepgEncodeMode接口编码有抓拍标记的那一帧数据为jpeg。


拍照的后期处理

photo代表消费类的抓拍方案中的拍照后期的算法,包括HDR、mfnr、sfnr、de这几种。拍照后处理算法是运行在CPU和DSP上的软件处理算法。

HDR(high dynamic range):能够提升图像的动态范围,通过拍照的pro模式,得到多张曝光时间和增益可调的图片,然后经过HDR算法合成一张具有高动态范围的图像,相比普通的图像,hdr可以提供更多的动态范围和图像的细节。

HDR合成当前只支持三合一,就是输入三帧不同曝光的连续YUV,输出一张高动态范围的YUV。三帧的输入顺序是最短的曝光的YUV,正常曝光的YUV,长曝光的YUV。

sfnr(single frame noise reduction):单帧降噪。

mfnr(multi frame noise reduction):多帧降噪。当前仅支持四合一的YUV,就是输入四帧连续正常曝光的YUV,输出一张经过时域和空域降噪的yuv。这个算法做完成后,还可以对输出后的yuv做de算法处理。de算法需要的bnr raw数据可以是mfnr输入的四帧yuv里面任意一帧yuv对应的bnr raw。

de(detail enhancement):细节增强。isp中的bnr处理会造成一些细节信息的丢失,de算法可以补偿这些丢失的图像细节。de算法的输入是一张YUV和bnr写出的raw,输出的是细节增强的yuv。输入的bnr raw数据是通过HI_MPI_SNAP_GetBNRRAW接口获取的。

以上几个photo模块的算法处理中的yuv数据仅支持nv12格式(PIXEL_FORMAT_YVU_SEMIPLANAR_420)的非压缩数据,输入图像的动态范围仅支持DYNAMIC_RANGE_SDR8。并且同一时刻只能有一个算法处理被调用,不支持多个算法并行处理。

photo模块的运行依赖于dsp的资源,photo的库默认编译到DSP0的镜像中,所以在调用photo之前需确保调用了HI_MPI_SVP_LoadBin接口加载了DSP0的镜像。(HI_MPI_SVP_DSP_LOadBin具体描述,参考HiSVPN api参考)。

海思平台的拍照和拍照后期处理算法的介绍相关推荐

  1. 海思平台的视频输入(VI)模块的介绍(以hi3559av100为例)

    当前是从海思平台的mpp角度理解VI这一部分的. 视频输入(VI)模块实现的功能:通过 MIPI Rx(含 MIPI 接口.LVDS 接口和 HISPI 接口),SLVS-EC,BT.1120,BT. ...

  2. 海思平台(hi3559/hi3519/hi3516/hi3518)下的ISP功能介绍及问题调试总结(包括黑光成像/逆光成像/降噪/宽动态wdr/偏色等问题)

    海思平台下的ISP功能介绍及问题调试 平台说明 该调试是在海思平台下进行的(我用的是3559,在3519/3516测试也是没有问题的,只是部分参数稍微有差异.其海思他系列处理器的ISP调试大体上也是一 ...

  3. 海思平台OSD的实现(1)

    目录 一.海思平台OSD理论学习 1.OSD概述 2.海思OSD的4种类型 3.4种OSD类型各自支持的模块和功能 4.海思OSD的几个重要概念 5.海思平台OSD使用方法 6.海思平台OSD的API ...

  4. 【交叉编译】海思平台和安霸平台交叉编译

    海思平台 板端编译首先需要配置系统的NFS,挂载NFS服务器:然后安装ubuntu下的交叉编译环境(3516A和3518为例):登录板端:板端编译(需要修改相关的makefile文件):板端运行: 一 ...

  5. c++ opencv mat_海思平台OpenCV编译与进一步裁剪

    OpenCV是计算机视觉算法开发常用的工具.如果我们需要在嵌入式设备上运行opencv,那么就需要交叉编译,将它移植到对应平台上.但是有些嵌入式平台的存储空间有限,能节省1MB也有相当大的作用.Ope ...

  6. Android STB 海思平台调试

    文章目录 一.产品参数 1.1 Hi3798MV100 1.2 Hi3798MV300 二.网络类&播放类 三.系统类 3.1 输出相关 3.2 CEC 3.3 杜比 3.4 IGMP 3.5 ...

  7. 海思平台HI35XX系列内存设置

    海思平台的内存分为两部分,一部分给系统使用,另外的一部分给多媒体使用.可以通过cat /proc/meminfo查看系统内存和cat /proc/media-mem 查看多媒体内存使用情况. /pro ...

  8. 海思平台gpio模拟spi驱动总结

    1. 海思平台gpio如何映射到编号 #define GPIO_TO_PIN(bank, gpio) (8 * (bank) + (gpio)) 海思gpio引脚每组总是从0~7,而且引脚从头都有唯一 ...

  9. YOLO系列(v1~v3)的学习及YOLO-Fastest在海思平台的部署(中)

    YOLO系列(v1~v3)的学习及YOLO-Fastest在海思平台的部署(上) YOLO系列(v1~v3)的学习及YOLO-Fastest在海思平台的部署(中) YOLO系列(v1~v3)的学习及Y ...

  10. OpenCV开发笔记(七十四):OpenCV3.4.1+ffmpeg3.4.8交叉编译移植到海思平台Hi35xx平台

    若该文为原创文章,转载请注明原文出处 本文章博客地址:https://blog.csdn.net/qq21497936/article/details/123696821 各位读者,知识无穷而人力有穷 ...

最新文章

  1. [Linux实用工具]munin-node插件配置和插件编写
  2. 最小公倍数(Least_Common_Multiple)
  3. postman测试 上传下载文件
  4. 群签名和环签名的区别_Monero技术详解(三):核心技术—环签名(1)
  5. 关于计算机图形学的学习
  6. find 命令多条件匹配
  7. 【C#进阶3-7】C# Socket通讯
  8. video标签autoplay属性不生效
  9. 校园共享单车停放问题的调研
  10. [ARCGIS]带黑边的IMG格式影像如何消除黑边?
  11. formality: 形式验证流程
  12. 全文检索(elasticsearch入门)
  13. qgg包-续2-大数据集教程
  14. Kronecker克罗内克 R代码实现
  15. 为什么 Redis 单线程却能支撑高并发?
  16. 05-【gorm】GORM Model FindFirstWhere等查询函数的区别
  17. Pytorch中tensor.expand()和tensor.expand_as()函数
  18. Ignite 数据网格快速学习(一)
  19. HTML5+CSS期末大作业:环保网站设计——动物保护网(6页) 大学生环境保护网页作品 环保网页设计作业模板 学生网页制作源代码下载...
  20. 弱电包含在计算机专业,弱电包含哪些系统

热门文章

  1. 飞行堡垒9win键解锁
  2. 函数的参数和函数的值
  3. nginx 根据目录指定root_部署Nginx网站服务实现访问状态统计以及访问控制功能
  4. 【IDEA用法】IDEA新建文件自动加入SVN,删除文件自动从SVN中删除
  5. 现代C语言程序设计之C语言概述
  6. SpringBoot整合rabbitmq使用案例
  7. idea的debug功能详解
  8. 图像处理函数详解——imadjust
  9. 如何找到土蜂蜜销售渠道?
  10. 使用@PersistenceContext获取EntityManager报NullPointerException异常