基于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 ...
随机推荐
- HDU 1564 Play a game && HDU 2147 kiki's game
HDU 1564 Play a game题意: 棋盘的大小是n*n.一块石头被放在一个角落的广场上.他们交替进行,8600人先走.每次,玩家可以将石头水平或垂直移动到一个未访问的邻居广场.谁不采取行动 ...
- Miller_Rabbin算法判断大素数
普通的素数测试我们有O(√ n)的试除算法.事实上,我们有O(s*log³n)的算法. 下面就介绍一下Miller_Rabbin算法思想: 定理一:假如p是质数,且(a,p)=1,那么a^(p-1)≡ ...
- MSE,RMSE
MSE: Mean Squared Error 均方误差是指参数估计值与参数真值之差平方的期望值; MSE可以评价数据的变化程度,MSE的值越小,说明预测模型描述实验数据具有更好的精确度. RMSE ...
- 查找命令中grep,find,which和whereis的使用及区别
在linux系统中,许多时候需要查找某些文件或者字符,如果用ls, cd 等基础命令就显得很无力了,那么Linux提供了grep,find,which 三种查找命令,在这里我记录一下: 一.grep命 ...
- java8按照lamda表达式去重一个list,根据list中的一个元素
/** * 按照指定字段给list去重 * @param list * @return */ public static List<DataModel> niqueList(List< ...
- PHP7.1后webshell免杀
严格的D盾 D盾说,我是个严格的人,看到eval我就报木马,"看着像"="就是"木马,宁可错杀一千,绝不放过一个.好了,多说无益,一起看看严格的D盾是如何错杀的 ...
- SSL 数据加密原理简述
最近调试mqtt协议,为了保证数据安全性和将来客户端的对云的兼容性选择了openssl作为安全加密中间层,而没有使用私有的加密方式.所以花了点时间学习了一下ssl 加密流程整理如下: 因为正常正式使用 ...
- Dapr 正式发布1.0
年前我写了一篇博客<Dapr 已在塔架就位 将发射新一代微服务>, 今天Dapr 正式发布了1.0 : Dapr Runtime v1.0.0 Dapr dotnet SDK v1.0.0 ...
- Bash on Ubuntu on Windows ( Windows Subsystem for Linux)
1 # Bash on ubuntu on Windows http://www.cnblogs.com/anonymous-ufo/p/6143480.html 1 1 如何启用Bash on u ...
- TypeScript Developer Roadmap
TypeScript Developer Roadmap https://github.com/xgqfrms/TypeScript-Developer-Roadmap https://typescr ...