海思IVE遮挡报警算法(OD)
大家越来越不喜欢分享了好像。
随便写写吧。
OK , fine, 先看原处理线程
while (...){......s32Ret = HI_MPI_IVE_Integ(&IveHandle, &pstOd->stSrc, &pstOd->stInteg, &pstOd->stIntegCtrl, bInstant);......for (j = 0; j < IVE_CHAR_CALH; j++){pu64TopRow = (0 == j) ? (pu64VirData) : ( pu64VirData + (j * pstOd->u32H - 1) * pstOd->stInteg.au32Stride[0]);pu64BtmRow = pu64VirData + ((j + 1) * pstOd->u32H - 1) * pstOd->stInteg.au32Stride[0];for (i = 0; i < IVE_CHAR_CALW; i++){u64TopLeft = (0 == j) ? (0) : ((0 == i) ? (0) : (pu64TopRow[i * pstOd->u32W - 1]));u64TopRight = (0 == j) ? (0) : (pu64TopRow[(i + 1) * pstOd->u32W - 1]);u64BtmLeft = (0 == i) ? (0) : (pu64BtmRow[i * pstOd->u32W - 1]);u64BtmRight = pu64BtmRow[(i + 1) * pstOd->u32W - 1];u64BlockSum = (u64TopLeft & 0xfffffffLL) + (u64BtmRight & 0xfffffffLL)- (u64BtmLeft & 0xfffffffLL) - (u64TopRight & 0xfffffffLL);u64BlockSq = (u64TopLeft >> 28) + (u64BtmRight >> 28)- (u64BtmLeft >> 28) - (u64TopRight >> 28);// meanstChar[j * IVE_CHAR_CALW + i].s32X = u64BlockSum / (pstOd->u32W * pstOd->u32H);// sigma=sqrt(1/(w*h)*sum((x(i,j)-mean)^2)= sqrt(sum(x(i,j)^2)/(w*h)-mean^2)fSqVar = u64BlockSq / (pstOd->u32W * pstOd->u32H) - stChar[j * IVE_CHAR_CALW + i].s32X * stChar[j * IVE_CHAR_CALW + i].s32X;stChar[j * IVE_CHAR_CALW + i].s32Y = (HI_U32)sqrt(fSqVar);}}s32Ret = SAMPLE_IVE_Linear2DClassifer(&stChar[0], IVE_CHAR_NUM,stIveLinerData.pstLinearPoint, stIveLinerData.s32LinearNum);if (s32Ret > stIveLinerData.s32ThreshNum){SAMPLE_PRT("\033[0;31m Occlusion detected!\033[0;39m\n");}else{}...}
原理差不多是根据无参考图像清晰度评价来弄的。
当有东西挡住摄像头的时候,画面会变模糊嘛。
所以缺陷在这里也能猜的到一些了吧?
均方差反应模糊程度,主要用它。
流程上大致就是积分,然后算均值和均方差,然后根据此结果进行判断是否遮挡。
HI_MPI_IVE_Integ
这个接口算灰度积分图和平方和图。
长这个样子:
怎么算呢?
就是逐个像素累加。
比如 3 x 3 img:
1 2 1
3 1 2
2 2 3
得:
1 3 4
4 7 10
6 9 13
就是横向 → 累加,再加上上一行对应列的结果。 中间的 7 = 上方的结果3 + 前面的值3 + 当前值1
for(cur_row = src; cur_row - src < size; cur_row += width){for(cur_pos = cur_row; cur_pos - cur_row < width; cur_pos++, pdst++, pdstSq++){tmp_line_sum += cur_pos[0];tmp_line_sq += cur_pos[0] * cur_pos[0];if(cur_row == src){pdst[0] = tmp_line_sum;pdstSq[0] = tmp_line_sq;}else{tmp = (pdst - width);pdst[0] = tmp_line_sum + tmp[0];tmp = (pdstSq - width);pdstSq[0] = tmp_line_sq + tmp[0];}}tmp_line_sum = 0;tmp_line_sq = 0;}
海思的数据存放是:
u64TopLeft & 0xfffffffLL
别的博客里好奇的这个写法,其实是数据存放格式而已。
你再看下面的:
u64TopLeft >> 28
所以嘛,上面放的是平方和的值,下面放的是积分的值。我也是分开函数做完算法回头看才发现。
然后图像分成 A x B个区域。区域求均值和均方差。
和sample里那个循环一样。
求选中的一块区域的像素和的方法可以百度图像积分算法,说的很清楚,就是积分图里的值 右下+左上-左下-右上。
最后,因为均方差反应模糊度,模糊的时候区域内像素差异小,均方差就小,所以对均方差设定阈值就可以找到模糊区域。
也可以搭配均值和均方差的帧间变化使判断更准确一些。
同样好奇sample均值低于80就认为遮挡是什么玩意。
图像还可以排除设置亮度带来的影响。就是先把图像归一化再积分。
修正判断条件和改良预处理后正确率还可以,就是不好规避纯色背景而已。
海思IVE遮挡报警算法(OD)相关推荐
- 海思IVE函数使用-1 (DMA使用 HI_MPI_IVE_DMA)
海思IVE函数使用1 (DMA使用 HI_MPI_IVE_DMA) 1 结构体定义 //灰度图像定义 typedef struct {unsigned char *pu8Data; //虚拟地址uns ...
- 海思IVE算法原理解析一--遮挡检测(occlusion deection)
前言 这个算法就是满足摄像头遮挡报警这个功能需求 代码分析 0xfffffffLL是个长整形, 如果你也好奇这个写法的话. 流程 创建灰度图像的积分图计算任务 算出图像灰度值的平均值,均方差,u, v ...
- 海思IVE使用模板总结(FILE->IVE->FILE)
文章目录 对单张图片进行处理 对单个视频进行处理 对单张图片进行处理 #include <stdio.h> #include <stdlib.h> #include <s ...
- 海思IVE实现车辆识别
1.Create ive image SAMPLE_COMM_IVE_CreateImage 2.HI_MPI_IVE_CSC 3.HI_MPI_IVE_Query 4.车辆颜色识别
- 海思3559实现KCF算法
这里我参考IVE模块,采用双通道VPSS,实现KCF的跟踪功能. 具体流程为:摄像头读取图像数据实时通过HDMI输出显示,中间经过VI-VPSS-VO. 1.编写cmake文件 CMAKE_MINIM ...
- 灵派海思SDK的API参考手册
本手册镜像地址:https://gitee.com/LinkPi/LinkLib/wikis/pages 灵派海思SDK的API参考手册 1. 概述 基本接口详解 LinkObject Link Js ...
- 海思平台ISP调试经验
ISP模块介绍 ISP是Image Signal Processor的缩写,全称是影像处理器.在相机成像的整个环节中,它负责接收感光元件(Sensor)的原始信号数据,可以理解为整个相机拍照.录像的第 ...
- 海思3559万能平台搭建:OSD的自动反色
前言 OSD功能在之前两篇中已经满足了大部分的应用场景,为了进一步提升效率和自适应环境亮度和反色,这里介绍改进方法 效率提升 我们之前整体的流程框架是这样的:TTF初始化,打开字体,区域初始化 ...
- 6 海思Hi3518E的ISP及其3A
ISP主要坐下面的工作: AEC(自动曝光控制).AGC(自动增益控制).AWB(自动白平衡).AF(自动对焦)色彩校正.Lens Shading.Gamma 校正.祛除坏点.Auto Black L ...
最新文章
- keepalived-1.2.2 编译出错问题解决
- join 方法代码实例
- 安卓手机上运行 PC-E500 程序
- class构造函数实现接口数据整合
- C语言基础专题 - 通过案例历学 - 共用体
- 筛选数据库_快速研读国外专利,轻松筛选核心技术…研发人必看6大数据库实用功能盘点!...
- Python中[::-1]实现翻转列表的原理
- 我眼中的2011年互联网大事记
- java基础教程第3版_java基础教程第3版习题解答
- PDF虚拟打印机怎么保存文件
- 机房收费系统之实现图(组件图、部署图)
- windows下手动修改/修复启动项
- 从古至今的计算机设备,计算器从古至今的发展形成
- qiankun前端微服务框架-同一服务器同一端口
- [Oracle] 一个通过添加本地分区索引提高SQL性能的案例
- 从产品角度分析羊了个羊为何能爆火
- C# arcengine 属性快速浏览
- 物联网应用系统三层结构的设计_基于物联网技术的智能油烟在线监测系统的设计与应用...
- Zotero文献同步
- 图神经网络-随机游走
热门文章
- Xiyou Linux Group 2017,2018,2019面试题
- 使用C#进行skyline二次开发入门
- 大学英语口语测试软件,大学英语口语测试技巧
- GIS专业和计算机专业,地理信息系统(GIS)学校推荐与专业就业
- 一、Pytest自动化测试框架 — Pytest和unittest测试框架原理
- MOXA NPort5430 NP5430 串口设备联网服务器
- python电影评论的情感分析流浪地球_python爬取豆瓣流浪地球影评,生成词云
- 字节跳动 录屏功能_屏幕录制工具分享,便捷录屏就用它
- 【无标题】444444
- 喜报!恭喜知了堂学员成功通过CISP-PTE证书考试