matlab人脸重建,3D人脸重建: BFM结合表情模型
MATLAB代码:
% addpath(genpath(pwd))
% --> model
% 载入原始的BFM模型
load('raw/01_MorphableModel.mat');
% 载入3dffa中 BFM信息
load('3ddfa/model_info.mat');
% BFM 处理后 共有 53490个点
% trimIndex: 53215x1, trimIndex_f: 53215*3
% 点的索引, 维度是53251,对应BFM中的 53490个点
trimIndex_f = [trimIndex*3-2, 3*trimIndex-1, 3*trimIndex]';
trimIndex_f = trimIndex_f(:); % 维度 159645 * 1
model.shapeMU = shapeMU(trimIndex_f, :); % 平均形状向量 159645 * 1
model.shapePC = shapePC(trimIndex_f, :); % 形状PCA降维矩阵 159645 * 199
model.shapeEV = shapeEV; % 形状正交空间的系数; 199*1
model.texMU = texMU(trimIndex_f, :); % 平均纹理向量159645 * 1
model.texPC = texPC(trimIndex_f, :); % 纹理PCA降维矩阵 159645 * 199
model.texEV = texEV; % 纹理正交空间的系数 199*1
model.tri = tri; % 三角格坐标, 维度 105840 * 3
model.kpt_ind = keypoints; % 68个特征点
% 存储相关模型信息
model_info.kpt_ind = keypoints;
model_info.trimIndex = trimIndex;
model_info.symlist = symlist; % 对称点信息 大小为 2*26720
model_info.symlist_tri = symlist_tri; % 对称网格信息, 大小 2*52937
model_info.segbin = segbin(trimIndex, :)'; % 获得掩模
model_info.segbin_tri = segbin_tri'; % 获得三角格掩模
% 2 载入表情模型
load('3ddfa/Model_Expression.mat');
model.expMU = mu_exp; % 平均表情向量 159645 * 1
model.expPC = w_exp; % 表情PCA降维矩阵 159645 * 29
model.expEV = sigma_exp; % 表情系数 29*1
% 159645 / 3 = 53215, 不够 53490 个点, 缺少 275 点
% 3 加载嘴唇三角格信息
load('3ddfa/Model_tri_mouth');
model.tri_mouth = tri_mouth; % 嘴唇坐标, 3*107
model_info.tri_mouth = tri_mouth;
% 4. 载入 脸部轮廓信息
load('3ddfa/Model_face_contour_trimed.mat');
model_info.face_contour = face_contour; % 人脸轮廓点索引, 维度28
model_info.face_contour_line = face_contour_line; % 人脸轮廓线索引 512
model_info.face_contour_front = face_contour_front; % 正面人脸轮廓线索引 28
model_info.face_contour_front_line = face_contour_front_line; % 正面人脸轮廓线索引 512
% 5 载入鼻子空洞
load('3ddfa/Modelplus_nose_hole.mat');
model_info.nose_hole = nose_hole; % 鼻子索引 142
model_info.nose_hole_right = nose_hole_right; % 右侧鼻子索引 71
model_info.nose_hole_left = nose_hole_left; % 左侧鼻子索引 71
% 6 parallel for key points
load('3ddfa/Modelplus_parallel.mat');
model_info.parallel = parallel;
model_info.parallel_face_contour = parallel_face_contour;
% 7. PNCC
% 从 提前 计算好的 vertex_code.mat 得到PNCC特征
copyfile('3ddfa/vertex_code.mat', 'Out/pncc_code.mat');
% 载入UV坐标, 计算方法来自 3DMMasSTN论文
load('stn/BFM_UV.mat');
uv_coords = UV(trimIndex, :)'; % 2*53215
% 修改不好的顶点
bad_ind = [10032, 10155, 10280];
round1 = [10033, 10158 ];
round2 = [10534, 10157, 10661];
round3 = [10916, 10286];
uv_coords(:, bad_ind(1)) = mean(uv_coords(:, round1), 2);
uv_coords(:, bad_ind(2)) = mean(uv_coords(:, round2), 2);
uv_coords(:, bad_ind(3)) = mean(uv_coords(:, round3), 2);
model_info.uv_coords = uv_coords';
UV = model_info.uv_coords;
% 添加嘴唇三角网络
tm_inner = model.tri_mouth;
tm_inner_add =[6420 6542 6664; %% add inner mouth triangles
6420 6294 6167;
6167 6297 6420;
6167 6297 6296;
6167 6296 6295;
6167 6295 6039;
6168 6295 6039];
ind_bad = 38;
all_ind = 1:size(tm_inner, 2);
tm_inner = tm_inner(:, setdiff(all_ind, bad_ind));
tm_inner = [tm_inner tm_inner_add'];
model_info.tri_mouth = tm_inner;
model.tri_mouth = tm_inner;
% save
clearvars -except model model_info UV
save 'Out/BFM.mat' model
save 'Out/BFM_info.mat' model_info
save 'Out/BFM_UV.mat' UV
% copyfile('3ddfa/pncc_code.mat', 'Out/pncc_code.mat')
对应文件: 此处 密码: b8la
matlab人脸重建,3D人脸重建: BFM结合表情模型相关推荐
- 3D人脸重建--学习笔记
本文旨在学习总结2D到3D人脸重建相关问题,个人水平有限,本人也是刚开始调研3D人脸重建,不足之处望大神指点改进. 文章目录 1 什么是3D人脸重建? 2 重建方法分类 3 通用模型3D人脸重建 4 ...
- [读论文]弱监督学习的精确 3D 人脸重建:从单个图像到图像集-Accurate 3D Face Reconstruction with Weakly-Supervised Learning:From
论文地址:Accurate 3D Face Reconstruction with Weakly-Supervised Learning:From Single Image to Image Set ...
- 最新3D人脸技术综述
点击我爱计算机视觉标星,更快获取CVML新技术 目录 导语 3D人脸基础知识 初识3D人脸 相机模型 3D相机 3D人脸数据 3D人脸相关任务 常见Pipeline 3D人脸识别 3D人脸重建 总结 ...
- 一分钟详解3D人脸技术
点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 目录 导语 3D人脸基础知识 初识3D人脸 相机模型 3D相机 3D人脸数据 3D人脸相关任务 常见P ...
- 3D人脸技术漫游指南
目录 导语 3D人脸基础知识 初识3D人脸 相机模型 3D相机 3D人脸数据 3D人脸相关任务 常见Pipeline 3D人脸识别 3D人脸重建 总结 导语 随着深度学习技术的推进,人脸相关任务研究也 ...
- 一文为你详解2D与3D人脸识别有什么区别?
最近业界内刮起了一股"人脸识别安全"的大讨论,小到个人大到超市以及银行,都在使用这个刷脸认证或支付,说它好吧,确实解决了无接触,快速高效等问题,你说它不好吧,也是有原因的,比如最明 ...
- 2D与3D人脸识别有什么本质上的区别?
https://www.zhihu.com/question/324123433/answer/681365180 https://www.zhihu.com/question/324123433/a ...
- (Python)3D人脸处理工具Face3d
(Python)3D人脸处理工具Face3d_mesh你可以使用它来处理网格数据,从可变形模型生成3D人脸,用一幅图片和几个关键点作为输入来重建3D人脸,给人脸打上不同的光照(详情请见例程). 一开始 ...
- 2D与3D人脸识别详解
人脸是人体最重要的生物特征之一,而人脸研究主要集中在人脸识别方面,人脸的表达模型分为2D人脸和3D人脸.2D人脸识别研究的时间相对较长,方法流程也相对成熟,在多个领域都有使用,但由于2D信息存在深度数 ...
- ECCV 2022 | 清华腾讯AI Lab提出REALY: 重新思考3D人脸重建的评估方法
原文链接: ECCV 2022 | 清华&腾讯AI Lab提出REALY: 重新思考3D人脸重建的评估方法 本文分享ECCV 2022论文<REALY: Rethinking the E ...
最新文章
- C#总结项目《汽车租聘系统》项目代码实例【全注释版】
- urllib2设置代理
- 【收藏】CMD命令提示符窗口中的快捷键、小技巧和常用命令
- CapcityScheduler配置方法(还没弄完)
- macbook 下载时睡眠_MacBook进入睡眠状态时如何自动使其静音
- Gmap.net 怎么导入离线地图
- golang flag.Parse包
- 【图像增强】基于matlab暗通道先验图像去雾【含Matlab源码 1367期】
- 数字化医院网络终端安全管理
- m126a linux驱动下载,惠普m126a驱动_惠普M126a打印机驱动安装 v15.0.15 稳定版-126g驱动网...
- 基于SSM的酒店客房预订管理系统
- 实验二 分析1996~2015年人口数据各个特征的分布与分散状况
- Dao和Repository,你还傻傻分不清吗?
- ironbot智能编程机器人_小小工程师启蒙教练就选IronBot机器人套件
- c51语言主函数,51单片机的基本c51语言程序介绍
- vscode在html看到图片的插件_自从用了这款PPT插件,我才知道什么叫做高效办公!...
- MySQL客户端连接网络不稳定解决办法
- Android应用程序签名 debug签名
- 利用Dynamo建立桥梁下部结构—桥墩系梁盖梁
- 到底微信公众号和头条号哪个更适合自媒体新人