主要内容

使用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([0 65]);ylim([0 55]);

图包含轴。轴包含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),'B:');文字(x(:,1),x(:,2),('abcdefghij')')文本(y(:,1),y(:,2),('abcdefghij')')文本(z(:,1),z(:,2),('abcdefghij')') 传奇('x =目标''y =比较'......'z =转换''地点''SW')XLIM([0 65]);ylim([0 55]);

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

检查两个形状的相似性

使用两个不同的数值,不相似度量D.和缩放措施B.,评估目标形状和变换形状的相似性。

不相似的措施D.给出0到1之间的数字,描述目标形状与变换形状之间的差异。0附近的值意味着更多类似的形状,而值近1暗示不相似。

D.
d = 0.1502.

少价值D.在这种情况下,表明两种形状是相似的。促进计算D.通过比较来自其柱式装置的原始点的平方偏差之和的点之间的平方偏差之和。

Numerator = sum(sum((x-z)。^ 2))
Numerator = 166.5321.
分母= sum(sum(bsxfun(@ minus,x,in均值(x))。^ 2))
分母= 1.1085E + 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,进一步支持两个数字三个三个数字的相似性万博1manbetx。较大的增加D.本来会指出更大的差异。

此示例仅需要旋转,而不是反射,以对齐形状。您可以通过观察矩阵的决定因素来表明这一点T.在这个分析中是1。

DET(TR.T)
ans = 1.0000

如果您需要在转型中反思,则决定因素T.是-1。您可以强制如下反映转换。

[DR,ZR,TRR] = PROCRUSTES(X,Y,'反射',真的);博士
DR = 0.8130.

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

plot(x(:,1),x(:,2),'r-',y(:,1),y(:,2),'B-'......ZR(:,1),ZR(:,2),'B:');文字(x(:,1),x(:,2),('abcdefghij')')文本(y(:,1),y(:,2),('abcdefghij')')文本(zr(:,1),zr(:,2),('abcdefghij')') 传奇('x =目标''y =比较'......'z =转换''地点''SW')XLIM([0 65]);ylim([0 55]);

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

该地标数据点现在远离其目标对应物。变换的三个现在是目标三个不期望的镜像。

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

也可以看看

相关话题