【计算机视觉】黄金标准算法Gold Standard algorithm
前言
最近有关于3DMM的内容,博主也只是看了个大概,并没有深入了解算法的实现原理和过程。昨天实习生问关于黄金标准算法的推导,博主也就参考一些资料熟悉了这个算法的实现过程。不太了解使用这个算法的前因后果的可参考here,另外,过程中发现一本书关于计算机视觉中的多视图几何(Multiple View Geometry in Computer Vision)的。
算法目标
前因请参考here,这里该算法是为了估计二维和三维坐标点之间的对应关系,通过这个仿射变换关系可以分解推导出缩放因子、旋转矩阵和平移矩阵。
人脸模型的三维点以及对应图像中的二维点之间存在映射关系,这个关系可以由一个3*4的仿射变换矩阵进行表示。其中,需要注意的是这里的坐标点都进行了归一化,比原来多了一维,即X2d=(Xi, Yi, 1)T和X3d=(Xi, Yi, Zi, 1)T。
P即是需要求解的放射变换矩阵,作用在三维坐标点上可以得到对应二维点的坐标。这里使用黄金标准算法来求解该放射变换矩阵。
算法原理
请参考书籍Multiple View Geometry in Computer Vision的相应章节。
推导过程
博主在理解算法原理的过程中,发现算法涉及的几个方面:
1. 手推算法;
2. 不同维度的坐标系的归一化问题;
3. 如何求解任何一个矩阵的逆矩阵或者伪逆矩阵;
4. 得到仿射矩阵之后如何进行分解,得到缩放系数、旋转矩阵和位移矩阵,以及原因。
人的情绪起落是与他对事实的感知成反比的,你对事实了解得越少,就越容易动感情。
参考
2. Multiple View Geometry in Computer Vision.pdf;
完
【计算机视觉】黄金标准算法Gold Standard algorithm的更多相关文章
- 洛谷P1360 [USACO07MAR]黄金阵容均衡Gold Balanced L…
P1360 [USACO07MAR]黄金阵容均衡Gold Balanced L… 题目描述 Farmer John's N cows (1 ≤ N ≤ 100,000) share many simi ...
- 第 1 章 第 1 题 高级语言的排序问题 C++标准算法实现
问题分析 依题意,所需程序不用过多考虑效率且暗示使用库,自然想到用高级语言实现(个人选择C++).可用顺序容器暂存数据,用标准算法解决排序问题. 代码实现 #include <iostream& ...
- 洛谷 P1360 [USACO07MAR]黄金阵容均衡Gold Balanced L…
P1360 [USACO07MAR]黄金阵容均衡Gold Balanced L… 题目描述 Farmer John's N cows (1 ≤ N ≤ 100,000) share many simi ...
- 学习 Rust cookbook 之算法篇(algorithm)
原文作者:suhanyujie 永久链接:https://github.com/suhanyujie/rust-cookbook-note 博客链接:https://ishenghuo.cnblogs ...
- SQL Azure (17) SQL Azure V12 - 跨数据中心标准地域复制(Standard Geo-Replication)
<Windows Azure Platform 系列文章目录> 熟悉Microsoft Azure平台的读者都了解,Azure SQL Database提供不同等级的,跨数据中心的异地冗余 ...
- 维特比算法(Viterbi Algorithm)
寻找最可能的隐藏状态序列(Finding most probable sequence of hidden states) 对于一个特殊的隐马尔科夫模型(HMM)及一个相应的观察序列,我们常常希望 ...
- 谷歌的网页排序算法(PageRank Algorithm)
本文将介绍谷歌的网页排序算法(PageRank Algorithm),以及它如何从250亿份网页中捞到与你的搜索条件匹配的结果.它的匹配效果如此之好,以至于“谷歌”(google)今天已经成为一个被广 ...
- 图像处理之泛洪填充算法(Flood Fill Algorithm)
泛洪填充算法(Flood Fill Algorithm) 泛洪填充算法又称洪水填充算法是在很多图形绘制软件中常用的填充算法,最熟悉不过就是 windows paint的油漆桶功能.算法的原理很简单,就 ...
- 隐马尔科夫模型,第三种问题解法,维比特算法(biterbi) algorithm python代码
上篇介绍了隐马尔科夫模型 本文给出关于问题3解决方法,并给出一个例子的python代码 回顾上文,问题3是什么, 下面给出,维比特算法(biterbi) algorithm 下面通过一个具体例子,来说 ...
随机推荐
- SSM项目day4 Oracle批量插入数据bug <foreach>标签中collection属性使用的是属性名
- 无故出现 mysql dead but subsys locked的有关问题
无故出现 mysql dead but subsys locked的问题问题描述:1.mysql安装完成后,使用service mysqld restart总是出现stop mysqld servic ...
- C++的map用法
图,自动建立表示关键字和键值(key - value)之间的对应关系,两者可以是任何数据类型,key唯一并且自动排序,value不唯一. 1.头文件#include<map> 2.map& ...
- I2c理解
1.IIc是什么: 是飞利浦公司设计的一种用于mcu与外围设备之间信息交互的一种协议.高速IIC总线一般可大400kbs 2.IIC作用: 用于mcu与外围设备间信息交互. 3.IIc由什么组成: 由 ...
- pycharm进行个性化设置
1. 设置主题:Monokai Ctrl+Alt+S: Editor->Color&Fonts->Python 2. 修改[选中内容]颜色 因为用了Monokai主题后,选中内容的 ...
- A&G¥C015
A&G¥C015 A A+...+B Problem 正常A+B我还是会的,但是又加了个省略号就不会了/kk B Evilator 不会 C Nuske vs Phantom Thnook 以 ...
- 论文阅读:Single Image Dehazing via Conditional Generative Adversarial Network
Single Image Dehazing via Conditional Generative Adversarial Network Runde Li∗ Jinshan Pan∗ Zechao L ...
- WSL调用Windows下的ParaView对OpenFOAM进行后处理
OpenFOAM可以在windows下的Linux子系统(WSL)安装,但是很麻烦的一个问题是WSL没有图形化的界面,只有一个控制台窗口,在后处理的过程中我们就没有办法直接调用paraFoam命令启动 ...
- vector内存释放问题
一般,如果vector中存放是的指针,那么必须先遍历一遍,释放指针所指向的内存.(如果vector的元素是内置类型,那么就没有必要做这一步) 然后在释放vector中各元素所占内存,这时候可以用swa ...
- Ubuntu 14.04下超级终端Minicom连接ARM(转)
转自:https://blog.csdn.net/ajianyingxiaoqinghan/article/details/70209765 笔者的工作环境: PC系统:Ubuntu 14.04 LT ...