Linux camera驱动开发(图像后处理之IPP)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

图像除了正常的isp、编码、解码、npu处理、网络发送之外,还有一些后处理的工作也是可以用硬件完成。当然,这些需要soc厂家做额外的support,也不是每一个soc厂家都愿意这么做的。今天,正好可以看看图像后处理可以做哪些工作。

1、ipp是什么

**所谓的ipp,全称是image post processing的意思。它一般位于isp之后,也就是图像质量都tuning好了之后,继续做一些额外补充性的工作,或者是算法前置的工作。**在ipp之后,可能是算法处理,可能是编码,或者是直接发送给lcd、hdmi做显示处理了。

ipp一般是sensor驱动好、isp tuning之后,开始完成的。不知道sensor如何驱动的同学,可以回头看看之前的文章,或者参考这一篇soc sensor驱动文章,

复制代码
https://blog.csdn.net/weixin_45349811/article/details/132707827

2、ipp做了哪些工作

如果说isp本身是对图像质量做tuning处理,那么ipp就是对图像属性做一些额外的处理。这里ipp的工作包括不限于旋转、镜像、放大、缩小、osd、裁剪、马赛克、图片叠加、画框、画线、数字图像算法加速等等。下面就开始做稍微详细一点的介绍。

  • 旋转,主要就是对图像做90°、180°、270°旋转;
  • 镜像,有两种镜像,即上、下镜像和左、右镜像。当然,这一点很多sensor端也支持;
  • 放大,主要就是通过插值对局部图像进行放大处理;
  • 缩小,和放大相对的处理方式,一般都是2的倍数,比如1/2、1/4、1/8等等;
  • osd,就是在图像上面添加额外的文字信息;
  • 裁剪,就是只输出一部分roi兴趣图片,而不是全部的图片;
  • 马赛克,大部分是为了保护隐私,对一部分图像做模糊处理;
  • 图片叠加,在当前image上面添加一些标志、icon小图片;
  • 画框,这个经常用,特别是和npu、yolo配合使用;
  • 画线,这个也经常使用,如果是不规则图形,画线是比较好的方式;
  • 数字图像算法加速。

3、ipp中的算法加速

ipp中有一个很好的算法加速部分,那就是对传统的cv算法进行加速,比如滤波、边缘提取、二值化、开运算、闭运算等等。这些算法如果用纯cpu计算,会非常慢。但是用硬件来做,速度上面会快非常多。

4、很多传统soc有没有ipp

ipp在大部分的ipcam soc上面都是存在的。但是很多中低端的soc上面,就没有这些内容。这些soc虽然也有mipi csi2 rx可以接mipi camera,也有几个核的arm core,甚至cpu频率也不低。但是由于没有硬件加速的ipp处理,这部分图像处理效率并不高。从ipp支持的内容不难看出,这些内容都是可以通过软件来实现的,但是由硬件来做,不管是延时方面、还是处理效率方面,都会有不小的提高。传统的soc,如果没有ipp,这方面是要吃亏一点,因为没有别的选择,只有通过cpu或者是gpu去做数据处理了。

5、ipp的一些不足

ipp虽然可以帮助我们解决一些问题,但也不是尽善尽美,完全没有问题的。首先,ipp支持的算法是有限的,假设有一些算法是ipp没有的,这部分又需要低延时、高效率地去完成,那么就只能自己想办法了。

其次,就算ipp支持了一些功能,也不一定可以满足所有人的需求。就拿旋转来说,很多的ipcam soc是支持旋转这个功能,但是这种旋转只能是几个角度的旋转,不能是任意角度的旋转。

遇到上面两种情况,就只能选用更高端的soc,要么前面加fpga子板。前者是增加成本,后者是同时增加成本和难度。

相关推荐
董厂长35 分钟前
规范驱动开发(Spec-Driven Development):一个批判性审视
人工智能·驱动开发
董厂长1 小时前
规范驱动开发(Spec-Driven Development)深度解析
驱动开发
楼兰公子1 小时前
RK3588 Linux驱动开发大纲
linux·驱动开发
智者知已应修善业2 小时前
【分立元件OCL电路】2024-5-17
驱动开发·经验分享·笔记·硬件架构·硬件工程
楼兰公子2 小时前
RK3588** 平台(瑞芯微旗舰 SoC,四核 A76 + 四核 A55,Mali-G610,支持 8K 编解码)整理一份系统性的驱动开发实战指南
驱动开发
小此方1 天前
Re:Linux系统篇(二十四)进程篇·九:进程从创建到退出的底层机制与写时拷贝全解
linux·运维·驱动开发
都在酒里1 天前
Linux字符设备驱动开发(九):内核定时器——实现LED周期性闪烁与轮询驱动原理
linux·运维·驱动开发·交互
都在酒里1 天前
Linux字符设备驱动开发(十):综合实例——I2C传感器 + LED智能控制与进阶指南
linux·运维·服务器·驱动开发·交互
hai3152475431 天前
RISC-V核E203核前向旁路的架构性顽疾
驱动开发·架构·硬件架构·硬件工程·risc-v
hai3152475431 天前
RISC-V CVA6 AXI适配器+DMA桥蜂鸟E203处理器的总线接口单元(BIU)仲裁器
驱动开发·fpga开发·硬件架构·硬件工程·精益工程