在海思上实现 countNonZero

1 对 IVE_IMAGE_S 的分析

这部分内容来自海思文档 HiIVE API 参考 ,文档中有更多图像类型的说明内容。

说明

定义二维广义图像信息。

定义

typedef struct hiIVE_IMAGE_S
{
   
HI_U64 au64PhyAddr[3]; /* RW;The physical address of the image */
HI_U64 au64VirAddr[3]; /* RW;The virtual address of the image */
HI_U32 au32Stride[3]; /* RW;The stride of the image */
HI_U32 u32Width; /* RW;The width of the image */
HI_U32 u32Height; /* RW;The height of the image */
IVE_IMAGE_TYPE_E enType; /* RW;The type of the image */
}IVE_IMAGE_S;

成员

成员名称 描述
au64PhyAddr[3] 广义图像的物理地址数组
au64VirAddr[3] 广义图像的虚拟地址数组
au32Stride[3] 广义图像的跨度
u32Width 广义图像的宽度
u32Height 广义图像的高度
enType 广义图像的图像类型

二维广义图像类型表

类型 图像描述 内存地址 跨度
IVE_IMAGE_TYPE_U8C1 8bit 无符号单通道图像 仅用到 IVE_IMAGE_S 中的 au64PhyAddr[0]、au64VirAddr[0] 仅用到 u32Stride[0]

图像描述

如果图片类型为 IVE_IMAGE_TYPE_U8C1 时,n 取 8。
1

关于对 Width 和 Stride 的理解,请参考 yuv 图像里的stride和plane的解释

2 代码实现

根据上一小节的分析,我们知道 Width 是小于等于 Stride 的。当输入的图片格式是 U8C1 时,图片的 Width 等于 Stride。当然下面的代码也可以进一步简化。
这里的代码是想参考 opencv 的 countNonZero 函数,返回值是灰度值不为0的像素数。同时也打印出各个像素点的灰度值。
但是此方法耗时过长,对720x576的图像处理一次时间为0.28s,推荐使用3 使用海思 IVE 实现 countNonZero

代码

/*
As we all know, au32Stride[0] greater than u32Width
*/
static HI_U32 CountNonZero(IVE_IMAGE_S *pstImg)
{
   
	HI_U16 u16Row;
    HI_U16 u16List;
	HI_U8* u8copy;		//read
	HI_U8* u8origin;	//change line
    HI_U16 height;
    HI_U16 width;

	HI_U16 NonZeroCount = 0;
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 海思是一家集成电路设计公司,致力于提供高性能芯片解决方案。在实现OSD(On-Screen Display)功能中,海思利用了VGS(Video Graphics Subsystem)技术。 VGS是一种视频图形子系统,它在芯片级别上处理图形、文字和图像的显示和处理。通过与海思芯片上的图形处理单元(GPU)和视频处理单元(VPE)的配合,VGS能够实现OSD功能。 OSD通常用于在显示设备的屏幕上叠加显示文字、图标、菜单等信息,以提供用户交互和显示额外的信息。在海思芯片中,通过VGS技术,可以通过GPU和VPE的协同工作,将OSD图形和字体数据混合处理,并将其叠加到视频信号上。 这种混合处理的过程主要包括两个关键步骤:一是通过GPU对图形和图像进行处理,如缩放、旋转、渐变等;二是通过文字和矢量图形字库等数据资源,使用VGS进行字体渲染和图形叠加,将其与视频信号合成为最终的OSD图像。 通过海思芯片的硬件加速和VGS的优化算法,实现了高效、流畅的OSD显示效果。这种技术不仅可以应用于电视、监控设备等需要OSD功能的场景,还可以用于自动驾驶、智能嵌入式系统等领域,以提供更多的信息和用户交互体验。 综上所述,海思利用VGS技术实现OSD功能,可以通过GPU和VPE的配合,将图形、文字和图像混合处理,并叠加到视频信号上,从而实现高效、流畅的OSD显示效果。 ### 回答2: 海思是一家芯片设计公司,常常应用其自家芯片实现各种功能。在图像处理方面,海思利用了一种技术称为VGS(Video Graphics System)来实现OSD(On-Screen Display)功能。 VGS是一种强大的图形处理引擎,能够处理和渲染各种图像和图形。海思使用VGS来实现OSD功能,主要是为了在视频图像上显示或叠加一些额外的信息,比如时间、信号源、画面分辨率等。 使用VGS实现OSD的过程大致如下:首先,将视频信号输入到海思的芯片中;然后,在芯片内部通过VGS处理引擎,提取视频信号的图像内容;接着,将OSD需要显示的信息通过VGS进行渲染和处理,然后与视频图像进行叠加;最后,将叠加后的图像输出到显示设备上。 通过使用VGS实现OSD功能,海思可以在视频图像上方便地添加各种信息,提升用户体验。例如,在监控系统中,可以在视频画面上显示摄像头的名称、录像状态等;在电视和显示器中,可以显示频道信息、时间等。这种应用广泛的功能对于提供更多实时信息以及增强用户交互具有极大的帮助。 总之,海思利用VGS技术来实现OSD功能,能够在图像处理中轻松叠加各种信息,提升用户体验和功能扩展。这种技术为海思芯片在图像处理领域的应用带来了更多的可能性。 ### 回答3: 海思(HiSilicon)是华为公司旗下的一家半导体设计公司,在视频处理领域有很高的专业性和影响力。在海思的产品中,使用了VGS(Video Graphics Subsystem)来实现OSD(On-Screen Display)功能。 VGS是一种专业的图形子系统,能够在视频信号中嵌入图形信息。它具有强大的图像处理能力和复杂的图形合成功能,能够对视频流进行实时的图形混合、叠加和处理操作。因此,通过在视频信号中嵌入OSD图形,可以实现在屏幕上显示各种文字、图标、图像等信息的功能。 海思在其视频处理芯片中使用VGS来实现OSD功能的好处是多方面的。首先,VGS具有高性能和低功耗的特点,可以满足实时处理大量视频数据的需求,同时节省能源和提高效率。其次,VGS支持多种图像格式和动画效果,可以实现丰富多样的OSD显示效果,提供更好的用户体验。此外,VGS还具有可编程性和灵活性,可以根据需求定制图形处理算法,扩展和升级系统功能。 综上所述,海思选择使用VGS实现OSD功能是出于其强大的图像处理能力和丰富的功能特点。这不仅可以提供高质量的OSD显示效果,还可以满足不同应用场景和需求的个性化显示要求,为用户提供更好的视觉体验。这也是海思在半导体设计领域取得成功的一部分原因。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值