Metro作为一个非常好用的简化网格比较工具,在科研界几乎算是标准了。不过很多比较牛的作者会使用自己设计的一些比较算法,但是如果metro够用了也就不必那么麻烦了,毕竟Metro使用的方法还算是很成熟了。不得不说,VCG这些人太惜字如金了,一些很基本的东西说的相当不够详细,只好自己努力搜寻了一些资料。
有个地址需要fanqiang才能访问
http://meshlabstuff.blogspot.com/2010/01/measuring-difference-between-two-meshes.html
http://vcg.isti.cnr.it/activities/surfacegrevis/simplification/metro.html
这里有最新的下载链接,sourceforge的,当然还有源码:
http://sourceforge.net/projects/vcg/files/metro/
当然,论文才是了解这个工具最好的窗口,只是论文相对有些老。
但是作为一个纯科研的项目,其和那些成熟的工程类的工具比起来,还是有很多不方便的地方,首当其冲就是使用说明书不完善,也没有相应的论坛或者问答机制回答初学者的问题,网上相关的资料也少(就他们自己写的那几篇)。
OK,下面来讲下我自己遇到的问题。
我用的是最新的metro4.07。以下是一个metro输出的样例:
-------------------------------
Metro V.4.07
http://vcg.isti.cnr.it
release date: May 11 2007
-------------------------------
read mesh `XXX.ply'
Removed 0 duplicate and 0 unreferenced vertices from mesh XXX.ply
read mesh `YYY.ply'
Removed 5 duplicate and 3841 unreferenced vertices from mesh YYY.ply
Mesh info:
M1: 'XXX.ply'
vertices 2400610
faces 4786342
area 249717.8967
bbox (25.1502 35.4685 0.0000)-(166.6869 199.6000 190.0000)
bbox diagonal 288.221771
M2: 'YYY.ply'
vertices 1078709
faces 2153443
area 249189.0805
bbox (25.4688 35.4680 -0.1387)-(166.6808 199.6717 190.0403)
bbox diagonal 288.221710
Forward distance (M1 -> M2):
target # samples : 47863420
target # samples/area : 191.669963
Vertex sampling
Edge sampling
Similar Triangles face sampling
distances:
max : 13.545480 (0.043946 wrt bounding box diagonal)
mean : 0.007310
RMS : 0.077103
# vertex samples 2400610
# edge samples 36665001
# area samples 6397199
# total samples 45462810
# samples per area unit: 182.056675
Backward distance (M2 -> M1):
target # samples : 47863420
target # samples/area : 192.076715
Vertex sampling
Edge sampling
Similar Triangles face sampling
distances:
max : 0.199435 (0.000647 wrt bounding box diagonal)
mean : 0.004265
RMS : 0.006333
# vertex samples 1078709
# edge samples 24402286
# area samples 21303713
# total samples 46784708
# samples per area unit: 187.747825
Hausdorff distance: 13.545480 (0.043946 wrt bounding box diagonal)
Computation time : 186088 ms
# samples/second : 495719.840175
关于三个度量结果,max是最大距离,mean是平均距离,RMS是对距离值(有正有负)求平方之后所得的平均值再开方(可见Wiki百科)。
结果里面,
max : 13.545480 (0.043946 wrt bounding box diagonal)
中的wrt让人很费解,看了上面给出的第二个链接,才知道原来是with respect to的缩写,汗!
另外,一开始分析结果时,发现后面给出的相对于包围盒对角线的比值0.043946有些诡异,如果用13.545480除以前面的bbox diagonal值根本不是这个结果!纠结了老半天,终于从论文里得到了答案,论文里metro的结果展示如下:
为何每个误差值后面有两个百分号?用直觉认为正确的方法算一下,比如
3.3314/345.234=0.009649
正好是前一个百分比值,那后一个是啥?
等等,Bbox Diag下面是不是有个Diameter?应该是包围球的直径,用原来的绝对误差值3.3314除以它,正好等于0.010068。
好了,看来为何相对于包围盒对角线的误差不是我们想的那样的原因找到了,就是metro4.07在得出相对于包围盒对角线的误差时,用的却是包围盒直径。这肯定算个比较严重的bug了吧,唉,害得我纠结了不止一个晚上。
http://sourceforge.net/projects/vcg/files/metro/