如何解决Mediapipe面部landmark定位偏差问题,获取对应精确模型视图矩阵
开发目标
开发者计划参考ARCore增强面部的公开实现,提取Mediapipe返回的每个面部landmark对应的模型视图矩阵,最终实现指定landmark位置的3D物体精准渲染。
现有实现逻辑
目前开发者参考Mediapipe官方Face Geometry示例完成开发,实现逻辑为:通过读取VertexBufferList的对应索引值,获取指定序号landmark的x/y/z坐标偏移量,结合FaceGeometry自带的poseTransformMatrix矩阵完成平移操作,核心实现代码如下:
List<FaceGeometry> multiFaceGeometry = PacketGetter.getProtoVector(packet, FaceGeometry.parser()); // 获取序号为100的landmark的x/y/z平移量 x = multiFaceGeometry.get(0).getMesh().getVertexBufferList().get(100*5 + 0); y = multiFaceGeometry.get(0).getMesh().getVertexBufferList().get(100*5 + 1); z = multiFaceGeometry.get(0).getMesh().getVertexBufferList().get(100*5 + 2); MatrixData poseTransformMatrix = multiFaceGeometry.get(0).getPoseTransformMatrix(); Matrix.translateM(poseTransformMatrix, 0, x, y, z);
现存测试问题
实际测试发现,当用户移动面部时,上述方法计算得到的landmark位置存在明显偏差。对比ARCore的同类实现,仅需获取中心位姿矩阵并叠加对应坐标偏移,即可得到精度稳定的landmark位置。
核心技术问询
是否存在可获取Mediapipe返回的各面部landmark对应精确模型视图矩阵的可行方案。
内容的提问来源于stack exchange,提问作者Nguyen Cong
相关产品推荐
相关产品推荐

