Hotelling transform,霍特林变换

本文为原创博文,转载请注明出处:Hotelling transform,霍特林变换,http://write.blog.csdn.net/postedit/30097833

最近在细看一篇论文并且实现里面的方法,有一节是依靠hotelling变换实现人脸矫正,方法比较简单,不幸的是里面的公式是错的,所以在这里写一下原理顺带附上MATLAB实现。

假设有一组人脸数据P,P是3xN维的矩阵,每一列代表三维空间中的一个点,N列代表N个点,如下:

数据的均值表示为m,相当于数据的重心:

P的协方差C可以表示为下式,注意C是3x3的矩阵

协方差C的特征向量可以通过如下求解:

其中V是特征向量v1,v2,v3(因为C是3x3的矩阵,所以特征向量只可能有三个)构成的矩阵,D是特征值d1,d2,d3构成的对角矩阵,特征向量和特征值一一对应,求解的MATLAB在下面,要说明的是MATLAB里的eig函数得出的V是按照D升序排列的,就是d1<d2<d3,后面要变换一下。

下面是hotelling变换的关键一步:

其中U是这样定义的,V=[v1;v2;v3],那么U=[v3;v2;v1]^T,就是说要按照D降序排列然后还要转置一下。

MATLAB实现如下:

感觉这个hotelling和PCA有些像,hotelling找到数据分布最大的三个方向,然后将数据整体旋转到这三个方向上来,以后有时间再补充详细原理。最终得到的旋转人脸如下,因为最初的人脸没什么旋转,所以得到的结果效果也不明显,而且处理过程要多次迭代到V不再变化才能矫正姿态,我这里只做了一次变换。

Hotelling transform,霍特林变换,布布扣,bubuko.com

时间: 2024-10-03 06:13:42

Hotelling transform,霍特林变换的相关文章

Transform.TransformDirection 变换方向

官方描述: JavaScript ? TransformDirection(direction: Vector3): Vector3; C# ? Vector3 TransformDirection(Vector3 direction); Description 描述 Transforms direction from local space to world space. 变换方向从局部坐标转换到世界坐标. This operation is not affected by scale or

laplace transform 拉普拉斯变换

参考网址: 1. https://en.wikipedia.org/wiki/First-hitting-time_model 2. https://en.wikipedia.org/wiki/Laplace_transform Probability theory By abuse of language, this is referred to as the Laplace transform of the random variable X itself. Replacing s by ?

理解SVG坐标系统和变换: transform属性

SVG元素可以通过缩放,移动,倾斜和旋转来变换-类似HTML元素使用CSS transform来变换.然而,当涉及到坐标系时这些变换所产生的影响必然有一定差别.在这篇文章中我们讨论SVG的transform属性和CSS属性,包括如何使用,以及你必须知道的关于SVG坐标系变换的知识. 这是我写的SVG坐标系统和变换部分的第二篇.在第一篇中,包括了任何要理解SVG坐标系统基础的需要知道的内容:更具体的是, SVG viewport, viewBox 和 preserveAspectRatio 属性.

#781 – 多个变换执行的顺序问题(Transform Order Matters)

原文:#781 – 多个变换执行的顺序问题(Transform Order Matters) 原文地址: ?? https://wpf.2000things.com/2013/03/21/781-transform-order-matters/ 如果你的程序中对某个控件在TransformGroup中联合了多种Transform进行变换,那么这几种变换执行的顺序与其在代码中的顺序是一样的. 例如下面的代码中有两个Label,第一个Label先执行平移变换,然后执行旋转变换:而第二个Label先执

transform的2D部分,嗯…就这个标题了。

上一次写了transition的内容,这次就写拼写很类似的另外一个属性transform好了……我英语差这件事就不要吐槽了,下面是正文,真的: transition是过渡,transform是变换. transform分为2D变换和3D变换,简直碉堡了,其实3D变换就是比2D变换多了1D,可以简单这么理解,具体是不是等下次说3D的时候再说,这次只说2D. 在2D转换里我们可以实现斜切(skew),缩放(scale),旋转(rotate)以及位移(translate)元素的效果(还有一个矩阵-ma

unity3D游戏开发之Transform的坐标变换注意事项

Transform是unity的核心类之一.表示的是物体的平移,旋转和缩放. 而position和localPosition, 分别表示的是,transform的位置是世界空间,和父空间的描述. 注意是 父空间,并不是自身空间. 注意到这点后,在空间的变换时就会省心很多了. 如果想搞清楚transform.position的变换过程,可以这样来测试: Java代码 //父空间转世界. Debug.Log(transform.position); Debug.Log(transform.paren

Silverlight形状、画笔、变换、图像处理、几何图形

1.形状(Ellipse.Line.Path.Polygon.Polyline 和 Rectangle) 1 <UserControl x:Class="SharpStudy.MainPage" 2 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 3 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

css3属性 transition transform

1.transition 译:过渡,转变 可以设置过渡属性 transition: property duration timing-function delay; transition-property 规定设置过渡效果的 CSS 属性的名称. transition-duration 规定完成过渡效果需要多少秒或毫秒. transition-timing-function 规定速度效果的速度曲线. transition-delay 定义过渡效果何时开始.  transition-timing-

Transform.InverseTransformPoint 反向变换点

JavaScript ? public function InverseTransformPoint(position: Vector3): Vector3; C# ?public Vector3 InverseTransformPoint(Vector3 position); Description 描述 Transforms position from world space to local space. The opposite of Transform.TransformPoint.