主要内容

使用Procrustes分析比较手写形状

此示例显示如何使用Procrustes分析来比较两个手写数字三个。在视觉上并分析探索强制尺寸和反射变化的影响。

加载并显示原始数据

输入两个手写数字三个的标志性数据。

a = [11 39; 17 42; 25 42; 25 40; 23 36; 19 35; 30 34; 35 29;......30 20; 18 19];B = [15 31; 20 37; 30 40; 29 35; 25 29; 29 31; 31 31; 35 20;......29 10; 25 18];

创建Xy一种B.,移动B.到方面使每个形状更加明显。

x = a;Y = B + Repmat([25 0],10,1);

绘制形状,使用字母指定标志性点。图中的线加入该点以指示每个形状的绘图路径。

plot(x(:,1),x(:,2),'r-',y(:,1),y(:,2),“b -”);文字(x(:,1),x(:,2),(“abcdefghij”)')文本(y(:,1),y(:,2),(“abcdefghij”)') 传奇('x =目标'“Y =比较”'地点''se') xlim (65 [0]);55 ylim ([0]);

图包含轴。轴包含22个类型的类型,文本。这些对象表示x =目标,y =比较。

计算最佳转换

使用Procrustes分析来查找最小化地标数据点之间的距离的转换。

[d,z,tr] = procrustes(x,y);

函数的输出是D.(一种标准化的不同度量),Z.(转换后的地标矩阵),以及TR.(使用字段计算转换的结构阵列T.B.,C对应于变换方程)。

可视化变换形状,Z.,使用虚线的蓝线。

plot(x(:,1),x(:,2),'r-',y(:,1),y(:,2),“b -”......Z(: 1)、Z (:, 2),”乙:“);文字(x(:,1),x(:,2),(“abcdefghij”)')文本(y(:,1),y(:,2),(“abcdefghij”)')文本(z(:,1),z(:,2),(“abcdefghij”)') 传奇('x =目标'“Y =比较”......“Z =改变了”'地点''SW') xlim (65 [0]);55 ylim ([0]);

图包含轴。轴包含33个类型的类型线,文本。这些对象表示x =目标,y =比较,z =转换。

检查两个形状的相似性

使用两个不同的数值,不相似度量D.尺度测量B.,以评估目标形状与转换后形状的相似性。

不相似的措施D.给出一个介于0和1之间的数字,用于描述目标形状和转换后的形状之间的差异。接近0的值表示更相似的形状,而接近1的值表示不同的形状。

D.
d = 0.1502.

少价值D.在这种情况下,表明两种形状是相似的。促进计算D.通过将集合点之间的方差平方和与原始点与其列均值的方差平方和进行比较。

Numerator = sum(sum((x-z)。^ 2))
分子= 166.5321
分母= sum(sum(bsxfun(@ minus,x,in均值(x))。^ 2))
分母= 1.1085 e + 03
比率=分子/分母
比率= 0.1502

得到的度量值d与形状大小的比例无关,只考虑地标数据的相似性。

检查形状的大小相似性。

TR.B.
ans = 0.9291.

前图中的目标和比较形状的大小看起来类似。这种视觉印象是由值加强的B.=%0.93,这意味着最佳转换导致比较形状缩小为0.93(仅为7%)。

限制转换的形式

探索手动调整缩放和反射系数的效果。

力量B.等于1(设置“缩放”(假)来检查目标和转换后的图形在大小上的差异量。

ds = procrustes(x,y,“缩放”假)
DS = 0.1552.

在本例中,设置'缩放的计算值增加D.仅0.0049,进一步支持两个数字三个三个数字的相似性金宝app。较大的增加D.本来会指出更大的差异。

这个例子只需要旋转,而不是反射,来对齐形状。你可以通过观察这个矩阵的行列式来证明T.在这个分析中是1。

依据(tr.T)
ans = 1.0000

如果你需要变换的反射,行列式T.是-1。您可以强制如下反映转换。

普罗克汝斯忒斯[博士,Zr, trr] = (X, Y,'反射',真的);博士
DR = 0.8130.

D值急剧增加,表明强制反射导致地标点的变换差。转化形状的图表显示了类似的结果。

plot(x(:,1),x(:,2),'r-',y(:,1),y(:,2),“b -”......ZR(:,1),ZR(:,2),”乙:“);文字(x(:,1),x(:,2),(“abcdefghij”)')文本(y(:,1),y(:,2),(“abcdefghij”)')文本(zr(:,1),zr(:,2),(“abcdefghij”)') 传奇('x =目标'“Y =比较”......“Z =改变了”“位置”'SW') xlim (65 [0]);55 ylim ([0]);

图包含轴。轴包含33个类型的类型线,文本。这些对象表示x =目标,y =比较,z =转换。

具有里程碑意义的数据点现在离目标数据点更远了。转化后的3现在是目标3的不希望的镜像。

如果将变换的形状颠倒翻转,则似乎形状可能会更好。然而,翻转形状会使变换更差,因为里程碑标准数据点将远离其目标对应物。从这个例子来看,清楚的是,手动调整缩放和反射参数通常不是最佳的。

也可以看看

相关的话题