性能指标说明
功能说明
功能说明
VPC(Vision Preprocessing Core)各功能的介绍、各版本的功能支持度如下表所示。
| 功能 | 描述 | Atlas 200/500 A2推理产品 |
|---|---|---|
| 抠图 | 从输入图片中抠出需要用的图片区域,支持一图多框和多图多框。 | √ |
| 缩放 | - 针对不同分辨率的图像,支持8K缩放、非8K缩放。 - 支持单图裁剪缩放(支持非压缩格式)、一图多框裁剪缩放(支持非压缩格式)。 - 其它缩放方式,如:原图缩放、等比例缩放(缩放前后图片的宽高比例相同)。 | √ |
| 叠加 | 从输入图片中抠出来的图,对抠出的图进行缩放后,放在用户输出图片的指定区域,输出图片可以是空白图片(由用户申请的空输出内存产生的),也可以是已有图片(由用户申请输出内存后将已有图片读入输出内存),只有当输出图片是已有图片时,才表示叠加。 | √ |
| 拼接 | 从输入图片中抠多张图片,对抠出的图进行缩放后,放到输出图片的指定区域。 | √ |
| 图像金字塔 | 对原图进行多次高斯滤波之后向下采样产生不同尺寸的图像。 | x |
| 直方图统计 | 统计图像每个通道(RGB/YUV)的像素值分布。 | √ |
| 色彩重映射 | 根据配置信息将图片从原图映射为另一张图。 | √ |
| 边界填充 | 对图像进行边界填充。 | √ |
| 格式转换 | 支持RGB格式、YUV格式之间的格式转换。 | √ |
| 图像灰度化 | 将彩色图像转化为灰度图像。需注意,输入为灰度图像、输出只能为灰度图像。 实现图像灰度化的操作是输出YUV400格式的输出图片。 | √ |
| 环视拼接 | 主要用于车载场景生成全景图。 使用该功能时,输入图片为4张,一般为前、左、后、右四个方向的图像,经过畸变矫正、增益补偿、图像融合,最终将4张图片融合成一张全景图片。其中,增益补偿是可选步骤,可在调用参数设置接口时选择是否进行增益补偿,通过增益补偿可平衡不同摄像头光照,达到更好的效果;图像融合当前采用的是加权融合方式,即像素加权平均法。 | x |
| Remap变换 | 根据像素位置LUT对输入图像进行几何形变,典型的用途包括:镜头畸变校正、仿射变换、透视变换,功能示意图请参见图4。 形变方式可以用下述公式描述:dst(x,y)=src(LUT(x,y))。 其中,dst(x,y)为输出图像在坐标(x,y)处的像素值,像素位置LUT(x,y)是输出图像在(x,y)处的像素对应输入图像中的横、纵坐标值,src(LUT(x,y))为输入图像在坐标LUT(x,y)处的像素值。通用的像素位置LUT可通过用户提供的map1(横坐标映射矩阵)和map2(纵坐标映射矩阵)生成,仿射变换或透视变换的像素位置LUT也可通过用户提供的3个点对或4个点对信息计算生成。 | √ |
| 滤波 | 对输入图片做滤波处理,当前可支持中值滤波/腐蚀/膨胀/高斯滤波/均值滤波/卷积滤波。 | √ |
| 旋转 | 对输入图片做固定角度的旋转,支持90度/180度/270度。 | √ |
| 马赛克 | 对输入图片做马赛克处理。 | √ |
| 覆盖 | 对输入图片做局部覆盖操作。 | √ |
| 画线 | 对输入图片做画线处理。 | √ |
| 添加水印 | 对输入图片做添加水印的处理。 | √ |
功能示意图(Atlas 200/500 A2推理产品)
图1 VPC功能示意图(抠图+缩放+叠加)

图2 VPC功能示意图(拼接)

图3 等比例缩放(贴图区域在输出图片的中心位置),即缩放前后图片的宽高比例相同

图4 Remap功能

参考说明
RGB、YUV格式图像的各分量排布示意图。示例:SP图像以YUV420SP为例,Packed和RGB图像以ARGB图像为例。

父主题: VPC图像处理功能
约束说明
图片分辨率约束
-
输入图片分辨率
VPC处理图片时,通用的输入分辨率范围为10*6~8192*8192,其中部分接口的分辨率限制可能不同,请以具体接口内的说明为准,请参见VPC图像处理功能下各接口的说明。其中,当输入图片格式为YUV440SP、YUV440P时,输入图片的宽最大值为4096。
-
输出图片分辨率
版本 分辨率范围 Atlas 200/500 A2推理产品 10*6~4096*8192
内存申请/释放接口说明
输入、输出内存大小要求请参见图片格式、宽高对齐、内存约束中的计算公式。
| 版本 | 内存申请接口 |
|---|---|
| Atlas 200/500 A2推理产品 | VPC在处理图片时,支持以下两种内存申请接口: - 调用aclrtMalloc[aclrtFree](./aclcppdevg_03_0101.md)接口申请\释放Device上的输入、输出内存,这部分内存的生命周期由用户自行管理。 - 调用hi_mpi_dvpp_malloc[hi_mpi_dvpp_free](./aclcppdevg_03_0726.md)接口申请\释放Device上的输入、输出内存,这部分内存的生命周期由用户自行管理。 注意:调用hi_mpi_dvpp_malloc接口申请的内存为媒体数据处理的专用内存,但专用内存的地址空间有限,若关注内存规划或内存资源有限时,建议调用aclrtMalloc接口申请内存。 |
图片格式、宽高对齐、内存约束
:::note 说明 在调用接口实现VPC功能时:
- 图片格式的定义请参见hi_pixel_format,宽stride、高stride等概念请参见基本概念。
- 不同版本中,宽stride、高stride的最小值、最大值不同,如下:
- Atlas 200/500 A2推理产品上,宽stride最小10、高stride最小6。
- 各接口对图片格式的要求可能不同,请参见VPC图像处理功能下各接口的说明。 :::
表1 输入图片格式、宽高对齐、内存大小约束
版本 | 图片格式 | 图片宽、高对齐要求 | 图片宽stride、高stride对齐要求 Atlas 200/500 A2推理产品 | 内存大小要求(单位Byte) |
|---|---|---|---|---|
通用格式,各版本都支持 | YUV400 8bit | 无对齐要求 | 宽stride无对齐要求,与宽相同即可; 高stride无对齐要求,与高相同即可。 | 宽stride * 高stride |
YUV420SP NV12 8bit YUV420SP NV21 8bit | 宽2对齐 高2对齐 | 宽stride无对齐要求,与宽相同即可; 高stride为高2对齐后的值。 | 宽stride * 高stride * 3/2 | |
YUV422SP 8bit YVU422SP 8bit | 宽2对齐 高无对齐要求 | 宽stride无对齐要求,与宽相同即可; 高stride无对齐要求,与高相同即可。 | 宽stride * 高stride * 2 | |
YUV444SP 8bit YVU444SP 8bit | 无对齐要求 | 宽stride无对齐要求,与宽相同即可; 高stride无对齐要求,与高相同即可。 | 宽stride * 高stride * 3 | |
YUV422Packed YUYV 8bit YUV422Packed UYVY 8bit YUV422Packed YVYU 8bit YUV422Packed VYUY 8bit | 宽2对齐 高无对齐要求 | 宽stride为宽*2的值; 高stride无对齐要求,与高相同即可。 | 宽stride * 高stride | |
YUV444Packed 8bit RGB888 BGR888 | 无对齐要求 | 宽stride为宽*3的值; 高stride无对齐要求,与高相同即可。 | 宽stride * 高stride | |
ARGB8888 ABGR8888 RGBA8888 BGRA8888 | 无对齐要求 | 宽stride为宽*4的值; 高stride无对齐要求,与高相同即可。 | 宽stride * 高stride | |
YUV440SP 8bit YVU440SP 8bit | 宽无对齐要求,但宽≤4096 高2对齐 | 宽stride无对齐要求,与宽相同即可; 高stride为高2对齐后的值。 | 宽stride * 高stride * 2 | |
该部分格式仅以下版本支持: Atlas 200/500 A2推理产品 | YVU420Planar YUV420Planar | 宽2对齐,高2对齐 | 宽stride无对齐要求,与宽相同即可;高stride无对齐要求,与高相同即可。 | 宽stride * 高stride * 3/2 |
YVU422Planar YUV422Planar | 无对齐要求 | 宽stride无对齐要求,与宽相同即可;高stride无对齐要求,与高相同即可。 | 宽stride * 高stride * 2 | |
YVU444Planar YUV444Planar | 无对齐要求 | 宽stride无对齐要求,与宽相同即可;高stride无对齐要求,与高相同即可。 | 宽stride * 高stride * 3 | |
YVU444Packed 8bit | 无对齐要求 | 宽stride无对齐要求,宽stride为宽*3的值;高stride无对齐要求,与高相同即可。 | 宽stride * 高stride | |
YUV440Planar YVU440Planar | 宽无对齐要求,但宽≤4096 高2对齐 | 宽stride无对齐要求,与宽相同即可;高stride无对齐要求,与高相同即可。 | 宽stride * 高stride * 2 | |
RGB888Planar BGR888Planar | 无对齐要求 | 宽stride无对齐要求,与宽相同即可;高stride无对齐要求,与高相同即可。 | 宽stride * 高stride * 3 |
表2 输出图片格式、宽高对齐、内存大小约束
- | 图片格式 | 图片宽、高对齐要求 | 图片宽stride、高stride对齐要求 Atlas 200/500 A2推理产品 | 内存大小要求(单位Byte) |
|---|---|---|---|---|
通用格式,各版本都支持 | YUV400 8bit | 无对齐要求 | 宽stride无对齐要求,与宽相同即可; 高stride无对齐要求,与高相同即可。 | 宽stride * 高stride |
YUV420SP NV12 8bit YUV420SP NV21 8bit | 宽2对齐 高2对齐 | 宽stride无对齐要求,与宽相同即可; 高stride为高2对齐后的值。 | 宽stride * 高stride * 3/2 | |
YUV422SP 8bit YVU422SP 8bit | 宽2对齐 高无对齐要求 | 宽stride无对齐要求,与宽相同即可; 高stride无对齐要求,与高相同即可。 | 宽stride * 高stride * 2 | |
YUV444Packed 8bit RGB888 BGR888 | 无对齐要求 | 宽stride为宽*3的值; 高stride无对齐要求,与高相同即可。 | 宽stride * 高stride | |
ARGB8888 ABGR8888 RGBA8888 BGRA8888 | 无对齐要求 | 宽stride为宽*4的值; 高stride无对齐要求,与高相同即可。 | 宽stride * 高stride | |
该部分格式仅以下版本支持: Atlas 200/500 A2推理产品 | YUV422Packed YUYV 8bit YUV422Packed UYVY 8bit YUV422Packed YVYU 8bit YUV422Packed VYUY 8bit | 宽无对齐要求 高2对齐 | 宽stride为宽*2的值; 高stride无对齐要求,与高相同即可。 | 宽stride * 高stride |
该部分格式仅以下版本支持: Atlas 200/500 A2推理产品 | YVU444Packed | 无对齐要求 | 宽stride为宽*3的值; 高stride无对齐要求,与高相同即可。 | 宽stride * 高stride |
RGB888Planar BGR888Planar | 无对齐要求 | 宽stride无对齐要求,与宽相同即可;高stride无对齐要求,与高相同即可。 | 宽stride * 高stride * 3 |
抠图、贴图约束
-
抠图区域不超出输入图片区域。
-
抠图、贴图区域的奇数、偶数限制为:
输出图片格式为YUV420SP,贴图区域奇数、偶数限制为:左偏移和上偏移为偶数、右偏移和下偏移为奇数。
输出图片格式为YUV422SP,贴图区域奇数、偶数限制为:左偏移为偶数、右偏移为奇数。
其它格式,贴图区域没有偏移奇偶数的限制。
-
贴图区域不超出输出图片区域,最大贴图个数256个。
YUV格式图像下采样约束
VPC在处理图片时,会根据输入或输出图片格式,将输入图片格式转换为YUV444或RGB用于内部处理,YUV444或RGB没有宽高奇偶数的限制,但当输出图片格式为YUV420SP或YUV422SP格式时,会进行下采样处理,由于YUV420SP或YUV422SP格式本身的数据排布导致宽高存在奇偶数限制,因此输出图片的边缘可能存在异常数据。
图1 异常效果图片举例
出现异常数据的根因在于,在计算过程中,出现输出图片位置处于奇数起始点时,此时YUV444格式的图片是正确的,但是下采样到YUV420SP格式时,由于奇数行和偶数行是共用同一个uv的,导致图片起始行的Y与上一行的UV组成新的像素,产生异常数据。
父主题: VPC图像处理功能
性能指标说明
性能指标说明(Atlas 200/500 A2推理产品)
单个Device场景下的性能指标参考如下(1路对应一个通道,一个通道对应一个线程,或者n路对应一个通道,一个通道对应n个线程):
| 场景举例 | 总帧率 |
|---|---|
| - 输入图片分辨率:1080p(1920*1080) - 输出图片分辨率:1080p(1920*1080) - 输入/输出图片格式:YUV420SP - n路(n<2) | n*800fps |
| - 输入图片分辨率:1080p(1920*1080) - 输出图片分辨率:1080p(1920*1080) - 输入/输出图片格式:YUV420SP - n路(n≥2) | 1600fps |
| - 输入图片分辨率:4K图像(3840*2160) - 输出图片分辨率:4K图像(3840*2160) - 输入/输出图片格式:YUV420SP - n路(n<2) | n*200fps |
| - 输入图片分辨率:4K图像(3840*2160) - 输出图片分辨率:4K图像(3840*2160) - 输入/输出图片格式:YUV420SP - n路(n≥2) | 400fps |
| - 输入图片分辨率:8K图像(7680*4320) - 输出图片分辨率:4K图像(3840*2160) - 输入/输出图片格式:YUV420SP - n路(n<2) | n*100fps |
| - 输入图片分辨率:8K图像(7680*4320) - 输出图片分辨率:4K图像(3840*2160) - 输入/输出图片格式:YUV420SP - n路(n≥2) | 200fps |
:::note 说明
- VPC处理性能与处理过程中的图像分辨率强相关,以输入图像和输出图像中的最大分辨率作为基准分辨率,基准分辨率越大,处理耗时越久,性能越低。
- 调用VPC批处理接口(接口命名中包含batch,例如hi_mpi_vpc_batch_crop_resize_paste接口)时,由于图像处理单元DVPP(Digital Video Pre-Processing)内部多个VPC硬件单元会并行处理图片任务,因此单路就可以达到最大总帧率。 :::
父主题: VPC图像处理功能
hi_mpi_vpc_create_chn
函数功能
根据设置的通道属性创建图像处理通道,由用户指定通道号。
约束说明
- 如果参数attr为空,会返回错误码HI_ERR_VPC_NULL_PTR。
- 在创建图像处理通道之前必须保证通道未创建(或者已经销毁),否则会直接返回失败。
函数原型
hi_s32 hi_mpi_vpc_create_chn(hi_vpc_chn chn, const hi_vpc_chn_attr *attr)
参数说明
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| chn | 输入 | 图片处理通道号。 Atlas 200/500 A2推理产品,该参数的取值范围:[0, 128),通道总数最多128。 (说明:对于 Atlas 200/500 A2推理产品 , 昇腾虚拟化实例(Ascend Virtual Instance)场景下,通道总数最多128。) |
| attr | 输入 | 图片处理通道属性指针。 |
返回值说明
- 0:成功
- 非0:失败,参见VPC图像处理返回码
参考资源
接口调用流程及示例,参见VPC图片处理典型功能。
父主题: VPC图像处理功能
hi_mpi_vpc_destroy_chn
函数功能
销毁创建的图像处理通道。
约束说明
通道号不能超出最大的通道号范围。
函数原型
hi_s32 hi_mpi_vpc_destroy_chn(hi_vpc_chn chn)
参数说明
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| chn | 输入 | 图片处理通道号。 Atlas 200/500 A2推理产品,该参数的取值范围:[0, 128),通道总数最多128。 |
返回值说明
- 0:成功
- 非0:失败,参见VPC图像处理返回码
参考资源
接口调用流程及示例,参见VPC图片处理典型功能。
父主题: VPC图像处理功能
hi_mpi_vpc_resize
函数功能
对图像进行按照一定比例进行缩放或者缩放到固定尺寸。异步接口。
约束说明
| 版本 | 约束 |
|---|---|
| Atlas 200/500 A2推理产品 | - 使用本接口对输入、输出图片分辨率的要求如下: - 输入图片分辨率:10*6 - 输出图片分辨率:10*6 - 关于图片格式、宽高对齐、内存等约束,请参见图片格式、宽高对齐、内存约束。 - 当输入、输出图片格式都为ARGB8888、ABGR8888、RGBA8888、BGRA8888格式时,在经过本接口缩放处理后,A分量值会变为0。 - 设置fx/fy之后,缩放后的图片的分辨率必须在[10*6~16384*16384]范围内,否则返回错误。 - 缩放可以通过fx/fy或者目标图片宽高两种方式来指定,但是两者均配置以目标尺寸缩放优先。两者不可同时为0。 |
函数原型
hi_s32 hi_mpi_vpc_resize(hi_vpc_chn chn, const hi_vpc_pic_info *source_pic, hi_vpc_pic_info *dest_pic, hi_double fx, hi_double fy, hi_u32 interpolation, hi_u32 *task_id, hi_s32 milli_sec)
参数说明
| 参数名 | 输入/输出 | 说明 |
|---|---|---|
| chn | 输入 | 图片处理通道号。 Atlas 200/500 A2推理产品,该参数的取值范围:[0, 128),通道总数最多128。 |
| source_pic | 输入 | 原始图片信息的指针。 |
| dest_pic | 输入 | 目标图片信息的指针。 |
| fx | 输入 | 宽的缩放比例。 |
| fy | 输入 | 高的缩放比例。 |
| interpolation | 输入 | 缩放算法。此处配置的缩放算法建议与训练模型时的缩放算法保持一致。 Atlas 200/500 A2推理产品,支持如下缩放算法: - 0:业界通用的Bilinear算法(与OpenCV-3.4.2版本算法的计算结果相同) - 1:业界通用的Nearest neighbor 算法(与OpenCV-3.4.2版本算法的计算结果相同) |
| task_id | 输出 | 任务ID的指针,用来区分任务。 |
| milli_sec | 输入 | 超时时间配置,单位是毫秒,取值范围如下: - -1:阻塞方式 - 0:非阻塞方式 - >0:超时方式,配置具体的超时时间。超时时间受操作系统影响,一般偏差在操作系统的一个时间片内,例如,操作系统的一个时间片为4ms,用户设置的milli_sec参数值为1,则实际的超时时间在1ms到5ms范围内。在CPU负载高场景下,超时时间仍可能存在波动。 |
返回值说明
- 0:成功
- 非0:失败,参见VPC图像处理返回码
参考资源
接口调用流程及示例,参见VPC图片处理典型功能。
父主题: VPC图像处理功能
在线提单