基于Hi3559AV100 RFCN实现细节解析-(3)系统输入VI分析(HiISP)二 :
下面随笔系列将对Hi3559AV100 RFCN实现细节进行解析,整个过程涉及到VI、VDEC、VPSS、VGS、VO、NNIE,其中涉及的内容,大家可以参考之前我写的博客:
基于Hi3559AV100 RFCN实现细节解析-(3)系统输入VI分析一 :
https://www.cnblogs.com/iFrank/p/14481080.html
整个的RFCN VI实现过程在上一篇随笔已经介绍了,函数具体含义也通过注释进行了一一的说明,而在VI初始化过程中,用到了ISP(Image Signal Processing) 图像信号处理的相关知识,海思也为其定义了API接口,下面随笔将介绍ISP相关概念,具体参考《HiISP开发参考》,方便大家对VI整个过程进行了更为清晰的认识。
1、基本概述
1.1、功能描述

1.2、ISP构架
图2 ISP firmware构架
1.3、Firmware内部流程
图3 ISP firmware 软件结构
2、软件流程
PQ Tools 工具主要完成在 PC 端进行动态图像质量调节,可以调节多个影响图像质量的因子,如去噪强度、色彩转换矩阵、饱和度等。
下面给出代码示例:
1 HI_S32 s32Ret;
2 ALG_LIB_S stAeLib;
3 ALG_LIB_S stAwbLib;
4 ISP_PUB_ATTR_S stPubAttr;
5 pthread_t isp_pid;
6 VI_PIPE ViPipe = 0;
7
8 /* 注册sensor库 */
9 s32Ret = sensor_register_callback(ViPipe, &stAeLib, &stAwbLib);
10 if (HI_SUCCESS != s32Ret) {
11 printf(”register sensor failed!\n”);
12 return s32Ret;
13 }
14 /* 注册海思AE算法库 */
15 stAeLib.s32Id = 0;
16 strcpy(stAeLib.acLibName, HI_AE_LIB_NAME);
17 s32Ret = HI_MPI_AE_Register(ViPipe, &stAeLib);
18
19 if (HI_SUCCESS != s32Ret) {
20 printf(”register ae lib failed!\n”);
21 return s32Ret;
22 }
23 /* 注册海思AWB算法库 */
24 stAwbLib.s32Id = 0;
25 strcpy(stAwbLib.acLibName, HI_AWB_LIB_NAME);
26
27 s32Ret = HI_MPI_AWB_Register(ViPipe, &stAwbLib);
28 if (HI_SUCCESS != s32Ret) {
29 printf(”register awb lib failed!\n”);
30 return s32Ret;
31 }
32 /* 初始化ISP外部寄存器 */
33 s32Ret = HI_MPI_ISP_MemInit(ViPipe);
34 if (s32Ret != HI_SUCCESS)
35 {
36 printf("%s: HI_MPI_ISP_Init failed!\n", __FUNCTION__);
37 return s32Ret;
38 }
39
40 /* 配置图像公共属性 */
41 s32Ret = HI_MPI_ISP_SetPubAttr(ViPipe, &stPubAttr);
42 if (s32Ret != HI_SUCCESS)
43 {
44 printf("%s: HI_MPI_ISP_SetPubAttr failed with %#x!\n", __FUNCTION__,
45 s32Ret);
46 return s32Ret;
47 }
48 /* 初始化ISP Firmware */
49 s32Ret = HI_MPI_ISP_Init(ViPipe);
50 if (HI_SUCCESS != s32Ret) {
51 printf(”isp init failed!\n”);
52 return s32Ret;
53 }
54
55 /* HI_MPI_ISP_Run单独启动线程运行 */
56 if (0 != pthread_create(&isp_pid, 0, ISP_Run, NULL)){
57 printf("create isp running thread failed!\n");
58 return HI_FAILURE;
59 }
60 /* 启动VI/VO等业务 */
61 //……
62
63 /* 停止VI/VO等业务 */
64 s32Ret = HI_MPI_ISP_Exit(ViPipe);
65 if (HI_SUCCESS != s32Ret) {
66 printf(”isp exit failed!\n”);
67 return s32Ret;
68 }
69
70 pthread_join(isp_pid, 0);
71 return HI_SUCCESS;
基于Hi3559AV100 RFCN实现细节解析-(3)系统输入VI分析(HiISP)二 :的更多相关文章
- 基于Hi3559AV100 RFCN实现细节解析-(3)系统输入VI分析一 :
		
下面随笔系列将对Hi3559AV100 RFCN实现细节进行解析,整个过程涉及到VI.VDEC.VPSS.VGS.VO.NNIE,其中涉及的内容,大家可以参考之前我写的博客: Hi3559AV100的 ...
 - 基于Hi3559AV100 RFCN实现细节解析-(2)RFCN数据流分析
		
下面随笔系列将对Hi3559AV100 RFCN实现细节进行解析,整个过程涉及到VI.VDEC.VPSS.VGS.VO.NNIE,其中涉及的内容,大家可以参考之前我写的博客: Hi3559AV100的 ...
 - 基于Hi3559AV100 RFCN实现细节解析-(1)VGS初介绍
		
下面随笔系列将对Hi3559AV100 RFCN实现细节进行解析,因为RFCN用到了VGS加框,因此本篇随笔将给出VGS视频图像子系统的具体说明,便于后面RFCN的细节实现说明. VGS 是视频图形子 ...
 - Android系统--Binder系统具体框架分析(二)Binder驱动情景分析
		
Android系统--Binder系统具体框架分析(二)Binder驱动情景分析 1. Binder驱动情景分析 1.1 进程间通信三要素 源 目的:handle表示"服务",即向 ...
 - 基于OpenCv的人脸检测、识别系统学习制作笔记之二
		
在网上找到了一个博客,里面有大量内容适合初学者接触和了解人脸检测的博文,正好符合我目前的学习方面,故将链接放上来,后续将分类原博客的博文并加上学习笔记. 传送门: http://blog.sina.c ...
 - 通过Dapr实现一个简单的基于.net的微服务电商系统(十五)——集中式接口文档实现
		
之前有小伙伴在评论区留言说如何集成swagger,最开始没有想透给了对方一个似是而非的回答.实际上后来下来想了一下,用.NET5 提供的Source Generator其实可以很方便的实现接口集成.今 ...
 - 网络编程-基于Websocket聊天室(IM)系统
		
目录 一.HTML5 - Websocket协议 二.聊天室(IM)系统的设计 2.1.使用者眼中的聊天系统 2.2.开发者眼中的聊天系统 2.3.IM系统的特性 2.4.心跳机制:解决网络的不确定性 ...
 - NET/ASP.NET Routing路由(深入解析路由系统架构原理)(转载)
		
NET/ASP.NET Routing路由(深入解析路由系统架构原理) 阅读目录: 1.开篇介绍 2.ASP.NET Routing 路由对象模型的位置 3.ASP.NET Routing 路由对象模 ...
 - 基于 HTML5 WebGL 的地铁站 3D 可视化系统
		
前言 工业互联网,物联网,可视化等名词在我们现在信息化的大背景下已经是耳熟能详,日常生活的交通,出行,吃穿等可能都可以用信息化的方式来为我们表达,在传统的可视化监控领域,一般都是基于 Web SCAD ...
 
随机推荐
- hdu1828 Picture(线段树+扫描线+矩形周长)
			
看这篇博客前可以看一下扫描线求面积:线段树扫描线(一.Atlantis HDU - 1542(覆盖面积) 二.覆盖的面积 HDU - 1255(重叠两次的面积)) 解法一·:两次扫描线 如图我们可以 ...
 - Nginx 服务介绍
			
目录 静态 / 动态 Web 服务 Nginx 简介 Nginx 的优点 Nginx 和 Apache 的比较 Nginx 的安装 Nginx 相关文件 Nginx 主配置文件 Nginx 虚拟主机配 ...
 - Kubernets二进制安装(9)之部署主控节点控制器controller-manager
			
kube-controller-manager运行控制器,它们是处理集群中常规任务的后台线程 Controller Manager就是集群内部的管理控制中心,由负责不同资源的多个Controller构 ...
 - docker的FAQ
			
1.Docker能在非Linux平台(Windows+MacOS)上运行吗? 答:可以 2 .如何将一台宿主机的docker环境迁移到另外一台宿主机? 答:停止Docker服务,将整个docker存储 ...
 - C# LINQ (2)
			
Limiting Data -- Take() and Skip() 前面讲了 筛选 和 排序,现在讲 选取皇帝选妃,层层选拔,最后留几个,让他过目,他选一个或者几个作为妃子,大概是这么个意思Take ...
 - 如何在ASP.NET Core 中使用IHttpClientFactory
			
利用IHttpClientFactory可以无缝创建HttpClient实例,避免手动管理它们的生命周期. 当使用ASP.Net Core开发应用程序时,可能经常需要通过HttpClient调用Web ...
 - 20 个使用原生 JavaScript 实现的 Web 项目
			
20 个使用原生 JavaScript 实现的 Web 项目 20 vanilla JavaScript Web Projects https://github.com/learning-js-by- ...
 - React Security Best Practices All In One
			
React Security Best Practices All In One Default XSS Protection with Data Binding Dangerous URLs Ren ...
 - text to JSON
			
text to JSON GeoLocaltion API https://www.cnblogs.com/xgqfrms/p/13283680.html https://repl.it/@xgqfr ...
 - js repeatify & no for loop
			
js repeatify & no for loop js repeatify https://www.sitepoint.com/5-typical-javascript-interview ...