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结合表情模型相关推荐

  1. 3D人脸重建--学习笔记

    本文旨在学习总结2D到3D人脸重建相关问题,个人水平有限,本人也是刚开始调研3D人脸重建,不足之处望大神指点改进. 文章目录 1 什么是3D人脸重建? 2 重建方法分类 3 通用模型3D人脸重建 4 ...

  2. [读论文]弱监督学习的精确 3D 人脸重建:从单个图像到图像集-Accurate 3D Face Reconstruction with Weakly-Supervised Learning:From

    论文地址:Accurate 3D Face Reconstruction with Weakly-Supervised Learning:From Single Image to Image Set ...

  3. 最新3D人脸技术综述

    点击我爱计算机视觉标星,更快获取CVML新技术 目录 导语 3D人脸基础知识 初识3D人脸 相机模型 3D相机 3D人脸数据 3D人脸相关任务 常见Pipeline 3D人脸识别 3D人脸重建 总结 ...

  4. 一分钟详解3D人脸技术

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 目录 导语 3D人脸基础知识 初识3D人脸 相机模型 3D相机 3D人脸数据 3D人脸相关任务 常见P ...

  5. 3D人脸技术漫游指南

    目录 导语 3D人脸基础知识 初识3D人脸 相机模型 3D相机 3D人脸数据 3D人脸相关任务 常见Pipeline 3D人脸识别 3D人脸重建 总结 导语 随着深度学习技术的推进,人脸相关任务研究也 ...

  6. 一文为你详解2D与3D人脸识别有什么区别?

    最近业界内刮起了一股"人脸识别安全"的大讨论,小到个人大到超市以及银行,都在使用这个刷脸认证或支付,说它好吧,确实解决了无接触,快速高效等问题,你说它不好吧,也是有原因的,比如最明 ...

  7. 2D与3D人脸识别有什么本质上的区别?

    https://www.zhihu.com/question/324123433/answer/681365180 https://www.zhihu.com/question/324123433/a ...

  8. (Python)3D人脸处理工具Face3d

    (Python)3D人脸处理工具Face3d_mesh你可以使用它来处理网格数据,从可变形模型生成3D人脸,用一幅图片和几个关键点作为输入来重建3D人脸,给人脸打上不同的光照(详情请见例程). 一开始 ...

  9. 2D与3D人脸识别详解

    人脸是人体最重要的生物特征之一,而人脸研究主要集中在人脸识别方面,人脸的表达模型分为2D人脸和3D人脸.2D人脸识别研究的时间相对较长,方法流程也相对成熟,在多个领域都有使用,但由于2D信息存在深度数 ...

  10. ECCV 2022 | 清华腾讯AI Lab提出REALY: 重新思考3D人脸重建的评估方法

    原文链接: ECCV 2022 | 清华&腾讯AI Lab提出REALY: 重新思考3D人脸重建的评估方法 本文分享ECCV 2022论文<REALY: Rethinking the E ...

最新文章

  1. C#总结项目《汽车租聘系统》项目代码实例【全注释版】
  2. urllib2设置代理
  3. 【收藏】CMD命令提示符窗口中的快捷键、小技巧和常用命令
  4. CapcityScheduler配置方法(还没弄完)
  5. macbook 下载时睡眠_MacBook进入睡眠状态时如何自动使其静音
  6. Gmap.net 怎么导入离线地图
  7. golang flag.Parse包
  8. 【图像增强】基于matlab暗通道先验图像去雾【含Matlab源码 1367期】
  9. 数字化医院网络终端安全管理
  10. m126a linux驱动下载,惠普m126a驱动_惠普M126a打印机驱动安装 v15.0.15 稳定版-126g驱动网...
  11. 基于SSM的酒店客房预订管理系统
  12. 实验二 分析1996~2015年人口数据各个特征的分布与分散状况
  13. Dao和Repository,你还傻傻分不清吗?
  14. ironbot智能编程机器人_小小工程师启蒙教练就选IronBot机器人套件
  15. c51语言主函数,51单片机的基本c51语言程序介绍
  16. vscode在html看到图片的插件_自从用了这款PPT插件,我才知道什么叫做高效办公!...
  17. MySQL客户端连接网络不稳定解决办法
  18. Android应用程序签名 debug签名
  19. 利用Dynamo建立桥梁下部结构—桥墩系梁盖梁
  20. 到底微信公众号和头条号哪个更适合自媒体新人

热门文章

  1. 轻松停车入位 淑女节女司机5大用车指南
  2. 12306html布局,12306无法登陆怎么办
  3. 函数图像生成器 (吉林大学 孙立鑫)
  4. Gym 101778G
  5. 电路滤波器——(一)RLC无源滤波器
  6. MacBook外接显示器及相关设置详解(分屏/多屏)
  7. Bitbucket 添加ssh密钥
  8. 揭秘 Win8 电脑 OEM 分区创建
  9. 微信群活码生成系统,群活码、客服活码、一套非常棒的免费开源群活码系统
  10. Cisco服务器硬盘状态jbod,2018-11-06 JBOD模式下LSI9361RAID卡操作步骤