关闭

matlab内置函数fitgeotrans与transformPointsForward解析

标签: 人脸识别
5120人阅读 评论(0) 收藏 举报
分类:

最近研究3000fps的实现,看了网上给的一个matlab代码,里面有提到init_shape到mean_shape的对齐,里面使用了fitgeotrans和transformPointsForward两个函数。于是参考matlab help研究了一下这两个函数.

fitgeotrans函数

语法:

 tform = fitgeotrans(movingPoints,fixedPoints,transformationType)

说明:

  • movingPoints — 图像上想要移动的点的坐标,至少是两个double型2维点.
  • fixedPoints — 目标点,和上面同等规模
  • transformationType — 变换类型,包括如下几种:
transformationType Description
‘Affine’ 仿射变换
‘NonreflectiveSimilarity’ 非反射相似变换(这个有点不懂哎)
‘Projective’ 投影变换
‘Similarity’ 相似变换(即仿射变换中去除错切变换)

总结:
这个函数主要描述了将movingPoints(设大小为:N*2,N>=2)通过某种变换变化到fixedPoints来,最后输出了变换矩阵。tform 是一个结构体类型,里面包含了变换矩阵.

transformPointsForward函数

语法:

[x,y] = transformPointsForward(tform,u,v)
X = transformPointsForward(tform,U)

说明:
tform为变换矩阵. u,v分别代表你要变换的点的x,y序列。u,v必须维数相同.变换后输出了对应的x,y。
而第二个函数,U包含了[u,v],X=[x,y]。
注意:
什么是前置变换呢?
即: X=U*tform

两个例子

例1

theta = 10;
tform = affine2d([cosd(theta) -sind(theta) 0; sind(theta) cosd(theta) 0; 0 0 1])
[X,Y] = transformPointsForward(tform,5,10)

结果:
tform =

affine2d with properties:

             T: [3x3 double]
Dimensionality: 2

其中

而X=6.6605 , Y=8.9798 。
具体计算方法是:

[6.66058.97981]=[5101]0.9848077530122080.17364817766693000.1736481776669300.9848077530122080001

例2

I = checkerboard; %创建棋盘图
J = imrotate(I,30); %逆时针绕中心旋转30度
imshowpair(I,J,'montage') %将两图并排放在一起

fixedPoints  = [11 11; 41 71];
movingPoints = [14 44; 70 81];
tform = fitgeotrans(movingPoints,fixedPoints,'NonreflectiveSimilarity');
Jregistered = imwarp(J,tform,'OutputView',imref2d(size(I))); %应用变换,将图像旋转
falsecolorOverlay = imfuse(I,Jregistered); %图形融合
figure, imshow(falsecolorOverlay,'InitialMagnification','fit');

参考文献

基于空间几何变换的人脸对齐(Matlab内置函数)

1
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

卷积的循环矩阵求解方法

通常我们求解一维卷积或者二维卷积都是采用模板平移的方法,今天我们介绍一种新的求解方法,可以一次性求出所有的结果。一维卷积卷积定义对于两个长度分别为m和n的序列x(i)和g(i)有, h(i)=x(i...
  • xiamentingtao
  • xiamentingtao
  • 2016-10-24 12:08
  • 2100

face alignment by 3000 fps系列学习总结(二)

准备初始数据mean_shapemean_shape就是训练图片所有ground_truth points的平均值.那么具体怎么做呢?是不是直接将特征点相加求平均值呢? 显然这样做是仓促和不准确的。...
  • xiamentingtao
  • xiamentingtao
  • 2016-03-07 22:42
  • 3211

VS2013调用MATLAB内建函数

环境: Microsoft Windows 7 专业版 6.1.7601 Service Pack 1 Build 7601 MATLAB R2013a x64 Visual Studio 2013 ...
  • u013282694
  • u013282694
  • 2013-12-26 09:53
  • 2678

MATLAB中图像处理的函数

MATLAB 图像处理命令  MATLAB中图像处理的一些简单函数 A、 imread imread函数用于读入各种图像文件,其一般的用法为 [X,MAP]=imread(‘filenam...
  • Eagleest
  • Eagleest
  • 2014-08-21 17:47
  • 29175

fitgeotrans,transformPointsForward,imwarp,非反射相似变换,相似变换,仿射变换

函数fitgeotrans的用法: tform = fitgeotrans(movingPoints,fixedPoints,transformationType)example tform...
  • xuluhui123
  • xuluhui123
  • 2016-10-08 20:05
  • 1017

基于空间几何变换的人脸对齐(Matlab内置函数

  • 2016-03-05 17:57
  • 286KB
  • 下载

Oracle SQL 内置函数以及解析

  • 2015-12-08 21:17
  • 64KB
  • 下载

MATLAB系统内置特殊的函数创建矩阵

MATLAB系统内置特殊的函数创建矩阵a=zeros(5,5) %生成5×5全0的矩阵 b=ones(5,4) %生成5×4全1的矩阵 c=eye(5,5) ...
  • ab1322583838
  • ab1322583838
  • 2016-10-11 21:22
  • 335

【原创】Matlab.NET混合编程技巧之直接调用Matlab内置函数

本博客所有文章分类的总目录:【总目录】本博客博文总目录-实时更新       Matlab和C#混合编程文章目录 :【目录】Matlab和C#混合编程文章目录   在我的上一篇文章【原创】Matl...
  • asxinyu_usst
  • asxinyu_usst
  • 2016-02-20 08:53
  • 1638

python中内置函数locals()和gloabls()解析

Python内置函数locals( )和globals( )主要提供,基于字典的访问局部和全局变量的方式。 在理解这两个函数时,首先来理解一下python中的名字空间概念。Python使用叫做名字空...
  • gzq110103
  • gzq110103
  • 2016-05-23 20:41
  • 813
    个人资料
    • 访问:284568次
    • 积分:4122
    • 等级:
    • 排名:第8671名
    • 原创:117篇
    • 转载:82篇
    • 译文:8篇
    • 评论:106条
    个人网站
    最新评论