【发布时间】:2021-03-08 13:03:23
【问题描述】:
我在计算视差图估计误差时遇到了优化问题。
为了计算错误,我为每个错误创建了一个带有调用方法的类。我需要对每个像素进行迭代以获得错误。 这个数组很重要,因为我正在迭代 1937 x 1217 图像的大小。你知道怎么优化吗?
这是我的方法的代码:
编辑:
def mreError(self):
s_gt = self.ref_disp_norm
s_all = self.disp_bin
s_r = self.disp_norm
s_gt = s_gt.astype(np.float32)
s_r = s_r.astype(np.float32)
n, m = s_gt.shape
all_arr = []
for i in range(0, n):
for j in range(0, m):
if s_all[i,j] == 255:
if s_gt[i,j] == 0:
sub_mre = 0
else:
sub_mre = np.abs(s_gt[i,j] - s_r[i,j]) / s_gt[i,j]
all_arr.append(sub_mre)
mre_all = np.mean(all_arr)
return mre_all
【问题讨论】:
-
您可以直接对整个数组进行减法和差分,而不是在循环中进行。用精美的索引替换一个数组为 0 的所有实例。
-
请阅读FAQ,了解如何使用该网站。这不是一个有大量帖子的论坛。如果您对某人的帖子有评论,请在下方评论,不要发布答案。任何与所有人相关的信息都应在您的问题中进行编辑。您声称某些答案提供了错误的结果,但您没有提供自己的输入。我们生成了合成数据,它工作得很好。请阅读如何创建minimal, reproducible example。
标签: python numpy opencv disparity-mapping depth-testing