我试图计算两个rgb图像之间的ssd,我发现返回的值包含负值,这很奇怪,因为ssd在求和之前先对差异进行平方。因此,我剖析了问题,结果发现问题出在平方。
这是我的ssd函数:
def ssd(kernel_left, kernel_right):
return np.sum((kernel_left- kernel_right)**2)
这是我分析问题的方式:
print(kernel_left[1,1]) # = [61 57 56]
print(kernel_right[1,1]) # = [87 59 29]
print(kernel_left[1,1] - kernel_right[1,1]) # = [-26 -2 27]
print((kernel_left[1,1] - kernel_right[1,1])**2) # = [-92 4 -39]
对我来说,平方如何产生错误和负值没有意义。