热成像?Y成像!海思平台IVE伪彩映射实战
热成像?Y成像!海思平台 IVE 伪彩映射实战
摘要:买不起几万块的热成像仪?没关系,我们有海思开发板!本文教你如何利用 SS928V100 的 IVE 硬件加速引擎,把平平无奇的 YUV 灰度图,瞬间变成科幻感十足的“伪热成像”画面。零 CPU 占用,满帧运行,带你领略“Y 成像”的魅力!
1. 什么是“Y 成像”?(强行借概念)
大家对热成像都不陌生,原理简单说就是:传感器捕捉红外辐射 -> 转成温度数据 -> 映射到 0~255 的灰度值 -> 查表(ColorMap) -> 变成彩色的热力图。
那我们在做海思视频开发时,手里的 YUV 数据里的 Y 分量(Luma) 是什么?
- 它也是单通道!
- 它也是 8 位(0~255)!
- 它代表了亮度(能量)!
兄弟们,这不就是“可见光波段的热成像”吗?我们姑且称之为“Y 成像”!
只要我们能把这个 Y 分量拿出来,像热成像一样给它套上一个炫酷的滤镜(查找表),原本黑白的夜视画面瞬间就能变成《铁血战士》里的红外视觉!
!(想象一下:原本黑白的监控画面,变成了红蓝相间的热力图,B 格瞬间拉满)
2. 为什么要用 IVE?(拒绝 CPU 99%)🚀
在 PC 上做伪彩映射,写个 for 循环遍历 1920x1080 个像素,查个表,CPU 也就笑一笑。 但在嵌入式板子上,如果你试图用 CPU 去搬运和计算 4K 分辨率的像素点,你的 CPU 占用率会直接飙红,甚至导致视频卡顿。
这时候,海思闲置的核弹——IVE(Intelligent Video Engine)就该登场了。
我们的 XVP_PSEUDO 库使用了 IVE 的两大神技:
- IVE MAP(映射):硬件查表。给它一张灰度图,给它 R/G/B 三个查找表,它吐给你三张 R/G/B 的分量图。
- IVE CSC(色彩空间转换):硬件转换。把上面的 R/G/B 图扔进去,它直接吐给你标准的 YUV420SP 图像,可以直接送显或编码。
全流程零 CPU 拷贝,零 CPU 计算!
核心处理流程图
3. XVP_PSEUDO库实战解析 🛠️
为了让大家少掉几根头发,我把复杂的 IVE 操作封装成了 libxvp_pseudo.a。以下是核心 API 的“使用说明书”。
3.1 核心 API 速览
在 xvp_pseudo_process.h 中,你只需要关注这几个家伙:
xvp_pseudo_process_init(type):- 作用:初始化库,申请 LUT 内存,向 XPROC 注册(后面会说)。
- 参数:
XVP_COLORMAP_JET(经典的蓝红热力图) 或其他 20+ 种风格。
xvp_pseudo_process_create_u8c3planar_image(...):- 作用:申请那块“中间态 RGB”的物理内存。
- 注意:这块内存不小(分辨率 x3),别在
while循环里申请释放哦,由于 MMZ 很宝贵,建议程序启动时申请一次。
xvp_pseudo_process_frame_add_pseudo(src, tmp, dst):- 作用:魔法发生的地方。把源帧扔进去,带颜色的帧吐出来。
- 特点:阻塞调用,内部会等 IVE 跑完才返回。
3.2 伪彩风格全家桶
库里内置了 OpenCV 同款色盘:AUTUMN, JET, RAINBOW, OCEAN, SUMMER, COOL, HOT… 甚至还有 TURBO(谷歌改进的更平滑的伪彩)。 如果不满意,还预留了 USER0~2 三个位置给你上传自己的数据表!
4. 实战 Sample:给 H.265 解码器加点料 📺
光说不练假把式。我们基于海思标准的 VDEC Sample 撸了一个 sample_pseudo.c。 它的工作流是: 读取 H265 文件 -> VDEC 解码 -> VPSS 缩放 -> Pseudo Thread (伪彩处理) -> VO 显示
让我们看看核心线程 xvp_pseudo_thread 是怎么工作的(代码精简版):
static td_void *xvp_pseudo_thread(td_void *arg)
{
// ... 变量定义 ...
// 1. 准备中间内存 (RGB Planar),别忘了这步!
// 这里的 frame_image 就是专门给 IVE 存放查表后的 RGB 数据的
ret = xvp_pseudo_process_create_u8c3planar_image(&frame_image);
// 2. 初始化库,默认先来个秋天风格 (AUTUMN)
ret = xvp_pseudo_process_init(XVP_COLORMAP_AUTUMN);
while (pseudo_start) {
// 3. 从 VPSS 拿原始灰度/彩色帧
ss_mpi_vpss_get_chn_frame(src_grp, src_chn, &src_frame, milli_sec);
// [骚操作]:每 60 帧自动换一种颜色风格,仿佛在迪厅
if (time_ref % 60 == 0) {
pseudo_index++;
xvp_pseudo_process_set_pseudo_type((pseudo_type_e)pseudo_index);
}
// 4. 执行伪彩映射!(Src -> Dst)
// 注意:src_frame 和 dst_frame 必须分辨率一致
ret = xvp_pseudo_process_frame_add_pseudo(&src_frame, &frame_image, &dst_frame);
// 5. 把处理好的“热成像”送给 VO 去显示
ss_mpi_vpss_send_frame(dst_grp, &dst_frame, milli_sec);
// 6. 释放原始帧
ss_mpi_vpss_release_chn_frame(src_grp, src_chn, &src_frame);
}
// ... 资源回收 ...
}
关键点:
- 双 VPSS 组玩法:Sample 中使用了两个 VPSS Group。
Group 0:负责接收解码数据,缩放到指定大小。Group 1:负责接收伪彩处理后的数据,送给 VO。- 我们的线程就像一个搬运工,从 Grp0 搬到 Grp1,顺便给画面“上个色”。
操作流程:
①.确保依赖的驱动文件、sample程序以及解码原文件已经准备好
#解码源文件需从SDK的以下目录复制:
SS928V100_SDK_V2.0.2.2/smp/a55_linux/mpp/sample/vdec/source_file/
②.运行sample_xvp_pseudo后,可执行命令cat /proc/XPROC/module查看库版本信息
③.性能开销
sample_xvp_pseudo实际运行解码4K50帧场景。
此时伪彩处理能达到50FPS满帧。
基于此场景下的CPU开销,主要为解码文件拷贝的CPU占用,伪彩处理基本不占用CPU。
5. 特别注意:关于 XPROC 框架 ⚠️
细心的朋友可能发现了,代码里有一句:
#include "xproc/xproc_driver_uapi.h"
并且在 init 函数里调用了 xproc_device_register_module_once。
这是我们的秘密武器——XPROC 框架。 这个库依赖于 xproc 驱动来管理模块信息和调试接口。在运行 Sample 之前,请务必确保你的板子上已经加载了 xproc.ko,并且 /dev/xproc 节点是可用的。
如果初始化报错 Register module failed,请先检查一下驱动是否“发车”了。
6. 总结
通过 XVP_PSEUDO 库,我们在海思 SS928V100 平台上轻松实现了高性能的伪彩映射。无论是做夜视仪、工业测温模拟,还是单纯为了让监控画面看起来更酷炫,这个方案都能满足你。
XPROC 框架地址:
https://gitee.com/uncleroderick/XPROC_Release
XVP_PSEUDO Sample地址:
https://gitee.com/uncleroderick/SS928V100_SDK_V2.0.2.2_Open_Source_MPP_Sample
直接git clone代码,执行make xvp_pseudo即可在bin目录生成sample_xvp_pseudo。
快去试试吧,把你的摄像头变成“Y 成像仪”!😎
Copyright (c) 2026 UncleRoderick. All rights reserved.
- 分享
- 举报
暂无数据-
浏览量:1205次2023-07-27 13:46:27
-
浏览量:4184次2023-10-26 11:47:50
-
浏览量:4471次2021-11-30 20:03:53
-
浏览量:2938次2021-12-26 09:00:14
-
浏览量:3147次2020-08-25 18:07:51
-
浏览量:5751次2020-08-25 18:07:54
-
浏览量:1604次2023-07-20 10:25:01
-
浏览量:2821次2020-08-30 15:42:23
-
浏览量:1025次2023-08-18 09:11:54
-
浏览量:2019次2022-12-15 15:29:57
-
浏览量:2308次2023-08-29 15:52:13
-
浏览量:4784次2022-02-22 09:01:56
-
浏览量:5009次2024-01-02 16:35:00
-
浏览量:5754次2020-08-15 17:29:07
-
浏览量:7930次2020-09-27 14:15:09
-
浏览量:1162次2023-03-14 14:12:45
-
浏览量:3470次2020-10-20 09:17:04
-
浏览量:2567次2022-02-15 09:01:03
-
浏览量:2714次2023-10-12 16:48:04
-
广告/SPAM
-
恶意灌水
-
违规内容
-
文不对题
-
重复发帖
UncleRoderick
微信支付举报类型
- 内容涉黄/赌/毒
- 内容侵权/抄袭
- 政治相关
- 涉嫌广告
- 侮辱谩骂
- 其他
详细说明

微信扫码分享
QQ好友