在 python 上比较图像并允许像素偏移差异
Posted
技术标签:
【中文标题】在 python 上比较图像并允许像素偏移差异【英文标题】:Compare images on python and allow pixel shift difference 【发布时间】:2020-11-17 08:05:19 【问题描述】:实现精明边缘检测器后,我必须将结果与人类检测到的结果进行比较,并计算精度和召回率(通过比较每个像素)。两个图像都是二进制的。 问题是,我必须允许图像之间大小为 1 的像素偏移。这意味着如果我在 E(i,j) 中的值为 1 并且参考图像在 GT(i-1,j) 中具有它,那么仍然会有匹配。这种偏移对于每个像素都是单独的,并且可以在任何方向上。 对于实现,我必须使用掩码或函数 cv2.dilate(),但由于通过使用 dilate 我们打开了更多像素,因此每个像素都可以与参考图像中的一个匹配,因此为每个原始图像创建多个匹配项像素,这是不允许的。 有谁知道如何在不为每个像素创建多个匹配的情况下允许像素移位?
【问题讨论】:
你能发布 E 和 GT 的示例参考图像吗? 根据我从您的问题中了解到的情况,使用 3x3 掩码,所有 1 运行在所有 GT(i, j) 上对应的 E(i, j) 应该能够实现您正在寻找的东西。 【参考方案1】:可能的蛮力解决方案可能如下所示:
num_feature_pixels = 0
matches = 0
for i in num_rows:
for j in num_cols:
if GT[i, j] == 1:
num_feature_pixels += 1
for k in 9:
row = k / 3
col = k % 3
if GT[i, j] == E[i - 1 + row, j - 1 + col]:
matches += 1
break
# Do something with the matches to total positives ratio
尽管在此方法中出现一些误报的可能性很高,因为无法确定 3x3 窗口中匹配的像素是否实际上是 E 图像中像素的基本事实。
【讨论】:
以上是关于在 python 上比较图像并允许像素偏移差异的主要内容,如果未能解决你的问题,请参考以下文章