大家越来越不喜欢分享了好像。
随便写写吧。

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)相关推荐

  1. 海思IVE函数使用-1 (DMA使用 HI_MPI_IVE_DMA)

    海思IVE函数使用1 (DMA使用 HI_MPI_IVE_DMA) 1 结构体定义 //灰度图像定义 typedef struct {unsigned char *pu8Data; //虚拟地址uns ...

  2. 海思IVE算法原理解析一--遮挡检测(occlusion deection)

    前言 这个算法就是满足摄像头遮挡报警这个功能需求 代码分析 0xfffffffLL是个长整形, 如果你也好奇这个写法的话. 流程 创建灰度图像的积分图计算任务 算出图像灰度值的平均值,均方差,u, v ...

  3. 海思IVE使用模板总结(FILE->IVE->FILE)

    文章目录 对单张图片进行处理 对单个视频进行处理 对单张图片进行处理 #include <stdio.h> #include <stdlib.h> #include <s ...

  4. 海思IVE实现车辆识别

    1.Create ive image SAMPLE_COMM_IVE_CreateImage 2.HI_MPI_IVE_CSC 3.HI_MPI_IVE_Query 4.车辆颜色识别

  5. 海思3559实现KCF算法

    这里我参考IVE模块,采用双通道VPSS,实现KCF的跟踪功能. 具体流程为:摄像头读取图像数据实时通过HDMI输出显示,中间经过VI-VPSS-VO. 1.编写cmake文件 CMAKE_MINIM ...

  6. 灵派海思SDK的API参考手册

    本手册镜像地址:https://gitee.com/LinkPi/LinkLib/wikis/pages 灵派海思SDK的API参考手册 1. 概述 基本接口详解 LinkObject Link Js ...

  7. 海思平台ISP调试经验

    ISP模块介绍 ISP是Image Signal Processor的缩写,全称是影像处理器.在相机成像的整个环节中,它负责接收感光元件(Sensor)的原始信号数据,可以理解为整个相机拍照.录像的第 ...

  8. 海思3559万能平台搭建:OSD的自动反色

    前言   OSD功能在之前两篇中已经满足了大部分的应用场景,为了进一步提升效率和自适应环境亮度和反色,这里介绍改进方法 效率提升   我们之前整体的流程框架是这样的:TTF初始化,打开字体,区域初始化 ...

  9. 6 海思Hi3518E的ISP及其3A

    ISP主要坐下面的工作: AEC(自动曝光控制).AGC(自动增益控制).AWB(自动白平衡).AF(自动对焦)色彩校正.Lens Shading.Gamma 校正.祛除坏点.Auto Black L ...

最新文章

  1. keepalived-1.2.2 编译出错问题解决
  2. join 方法代码实例
  3. 安卓手机上运行 PC-E500 程序
  4. class构造函数实现接口数据整合
  5. C语言基础专题 - 通过案例历学 - 共用体
  6. 筛选数据库_快速研读国外专利,轻松筛选核心技术…研发人必看6大数据库实用功能盘点!...
  7. Python中[::-1]实现翻转列表的原理
  8. 我眼中的2011年互联网大事记
  9. java基础教程第3版_java基础教程第3版习题解答
  10. PDF虚拟打印机怎么保存文件
  11. 机房收费系统之实现图(组件图、部署图)
  12. windows下手动修改/修复启动项
  13. 从古至今的计算机设备,计算器从古至今的发展形成
  14. qiankun前端微服务框架-同一服务器同一端口
  15. [Oracle] 一个通过添加本地分区索引提高SQL性能的案例
  16. 从产品角度分析羊了个羊为何能爆火
  17. C# arcengine 属性快速浏览
  18. 物联网应用系统三层结构的设计_基于物联网技术的智能油烟在线监测系统的设计与应用...
  19. Zotero文献同步
  20. 图神经网络-随机游走

热门文章

  1. Xiyou Linux Group 2017,2018,2019面试题
  2. 使用C#进行skyline二次开发入门
  3. 大学英语口语测试软件,大学英语口语测试技巧
  4. GIS专业和计算机专业,地理信息系统(GIS)学校推荐与专业就业
  5. 一、Pytest自动化测试框架 — Pytest和unittest测试框架原理
  6. MOXA NPort5430 NP5430 串口设备联网服务器
  7. python电影评论的情感分析流浪地球_python爬取豆瓣流浪地球影评,生成词云
  8. 字节跳动 录屏功能_屏幕录制工具分享,便捷录屏就用它
  9. 【无标题】444444
  10. 喜报!恭喜知了堂学员成功通过CISP-PTE证书考试