【玄铁杯第三届RISC-V应用创新大赛】LicheePi 4A 基于图像处理的数字人
[复制链接]
背景
从传统CG动画、特效、游戏到如今大火的虚拟偶像和元宇宙,在制作中,动作数据一般来自动作捕捉技术,动作捕捉过程一般由演员佩戴动捕设备进行动作演出,软件根据传感器采集的数据计算出每个时刻人体各个关节的旋转、位置等信息,得到动作数据,并映射到一个标准人体模型上,从而实现数人体模型数字人的动作捕捉。
作品简介
本作品通过USB相机实时采集图像,实现了人体检测算法检测人体,人体3d关键点检测算法检测出人体的3D坐标,再将每帧人体3D坐标转换为bvh动捕格式的数据,再将动捕格式通过opengl驱动效果展示出来,实现了数字人动作捕捉及动作驱动的全流程操作。
- 系统流程框图
首先通过USB相机实时采集图像,实现了人体检测算法检测人体坐标位置,再将人体检测矩形框扩大0.3倍得到扩大后的坐标,扩大后的坐标截取出(crop)出新的图像数据。人体3d关键点检测算法检测出人体的3D坐标,再将每帧人体3D坐标转换为bvh动捕格式的数据,再将动捕格式通过opengl驱动效果展示出来,实现了数字人动作捕捉及动作驱动的全流程操作。
- 各部分功能说明
- 人体检测算法模块
使用人体检测算法检测出图像的人体坐标
可视化检测结果的坐标位置如下图
再将人体检测矩形框扩大0.3倍得到扩大后的坐标(xmin,ymin),(xmax,ymax),扩大后的坐标截取出(crop)出新的图像数据。
- 人体3D关键点检测算法模块
对截取的图像进行人体3D关键点检测得到17个3D关键点。
可视化效果如下图所示
BVH数据转换模块
将得到维度为17*3的关键点从相机坐标系转换为世界坐标系
将17个关键点添加EndSite数据转换为bvh格式的数据,返回header和motion,
header中保存关键点的关联
motion为人体姿态的数据
动捕驱动展示模块
将bvh格式的数据header和motion进行解析,将原始header的数据结构转换为可渲染的数据结构,motion进行解析,使用opengl图形库进行实时渲染,结果如下图,
离线渲染如下图所示
项目总结
经过两个月的开发调试,对RISC-V平台的整体软件生态有了一定认识,因为架构的原因,开发过程中遇到了一些工具库的不支持问题,还需要一些时间的积累。硬件上由于到手的板子是8G emmc的,空间受限,所以使用SD卡搭建了环境,可能是受SD卡的读写速度影响,板子上的编译过程感觉是有点慢的。项目方面,功能上虽然实现了,但是受限依赖库影响,最终还是没有找到合适的实现方案来完成预期的效果,有点可惜。最后感谢举办方提供此次活动,这是一次很好的学习实践机会。
|