DTU数据集在MVSNet上生成点云精度和完整度的评定
前言
针对准确性的评估,采用平均距离指标来度量,准确性指标越低越好,表示R与G之间的距离越小,恢复的点云更准确。
针对完整性的评估,采用百分比指标来度量,完整性指标越高越好,表示R恢复的模型更加完整。
论文中用到的指标为acc、comp、overall和f-score
acc衡量的是重建点云到真实值的距离,comp衡量的是真实值到重建点云的距离,overall和f-score则是对准确性和完整性的整体评估,计算方式为precision和recall,计算公式如下:
precision:
e
r
→
G
=
m
i
n
g
∈
G
∥
r
−
g
∥
e_r\rightarrow G= min_{g∈G}\|r-g\|
er→G=ming∈G∥r−g∥
在此基础上定义一个阈值
d
d
d,将距离小于这个阈值的点的个数再除以总点数,再乘上100就可以得到百分比指标,公式如下:
P
(
d
)
=
100
∣
R
∣
Σ
r
∈
R
[
e
r
→
G
<
d
]
P(d)=\frac{100}{|R|}\Sigma_{r∈R}[e_r\rightarrow G<d]
P(d)=∣R∣100Σr∈R[er→G<d]
recall与前者类似,只不过衡量是从真实值到重建点云的距离,公式如下:
e
g
→
R
=
m
i
n
r
∈
R
∥
g
−
r
∥
e_g\rightarrow R= min_{r∈R}\|g-r\|
eg→R=minr∈R∥g−r∥
R ( d ) = 100 ∣ G ∣ Σ g ∈ G [ e g → R < d ] R(d)=\frac{100}{|G|}\Sigma_{g∈G}[e_g\rightarrow R<d] R(d)=∣G∣100Σg∈G[eg→R<d]
在计算出上述指标后,就可以计算出精度和完整度的整体衡量指标overall和f-score
o
v
e
r
a
l
l
=
a
c
c
+
c
o
m
p
2
overall=\frac{acc+comp}{2}
overall=2acc+comp
F
(
d
)
=
2
P
(
d
)
R
(
d
)
P
(
d
)
+
R
(
d
)
F(d)=\frac{2P(d)R(d)}{P(d)+R(d)}
F(d)=P(d)+R(d)2P(d)R(d)
数据下载
DTU数据集官方提供了ground truth点云,下载链接:http://roboimagedata2.compute.dtu.dk/data/MVS/Points.zip
Points下载后将其解压到一个新建的文件夹中,文件夹名不要用中文
SampleSet中包含了评估代码,不过文件较大,可以直接单独下载评估代码:何金旭/DTU-evaluation - 码云 - 开源中国 (gitee.com)
评估步骤
-
修改BaseEvalMain_web.m中dataPath为Points的上一级地址,为避免出错,建议使用绝对路径
-
修改BaseEvalMain_web.m中plyPath为重建点云的地址
-
修改BaseEvalMain_web.m中resultsPath的路径为任意一个新建路径,用于存放代码运行结果
-
修改BaseEvalMain_web.m中method_string为重建点云的前缀名,比如我这里的重建点云名称为mvsnet004_l3.ply,前缀名就是mvsnet,所以将method_string改为mvsnet
-
代码默认是对22组点云都进行评估,如果想要只对一部分进行评估,将UsedSets数组中的元素改成与重建点云对应的编号即可
-
运行BaseEvalMain_web.m
-
进入ComputeStat_web,需要修改的变量是dataPath、resultsPath和UsedSets,与前面改动相同,此时运行后可以得到评估值acc和comp