获得2张图像的(MSE)平均误差平方是什么意思?

时间:2013-11-28 17:04:38

标签: image opencv image-processing imagemagick

MSE是通道误差平方的平均值。

比较两个相同尺寸的图像意味着什么?

5 个答案:

答案 0 :(得分:4)

对于两张图片A,B,你取A中每个像素与B中相应像素之间的差值的平方,将其相加并除以像素数。

伪代码:

sum = 0.0
for(x = 0; x < width;++x){
   for(y = 0; y < height; ++y){
      difference = (A[x,y] - B[x,y])
      sum = sum + difference*difference
   }
}
mse = sum /(width*height)
printf("The mean square error is %f\n",mse) 

答案 1 :(得分:2)

您可以查看以下文章:http://en.wikipedia.org/wiki/Mean_squared_error#Definition_and_basic_properties。 “Yi”表示真值,“hat_Yi”表示我们想要比较真值的值。

因此,在您的情况下,您可以将一个图像视为参考图像,将第二个图像视为您想要与第一个图像进行比较的图像....并且您可以通过计算告知的MSE来实现你“第二个图像与第一个图像有多么不同/相似”

答案 2 :(得分:2)

查看维基百科的MSE,它衡量每个像素值之间的差异。这是一个示例实现

def MSE(img1, img2):
        squared_diff = (img1 -img2) ** 2
        summed = np.sum(squared_diff)
        num_pix = img1.shape[0] * img1.shape[1] #img1 and 2 should have same shape
        err = summed / num_pix
        return err

答案 3 :(得分:1)

让我们假设您在二维空间A(x1,y1)和B(x2,y2)中有两个点,两点之间的距离计算为sqrt((x1-x2)^2+(y1-y2)^2)。如果这两个点在三维空间中,则可以计算为sqrt((x1-x2)^2+(y1-y2)^2+(z1-z2)^2)。对于n维空间中的两个点,距离公式可以扩展为sqrt(sumacrossdimensions(valueofAindim-valueofBindim)^2)(因为不允许使用乳胶)。

现在,具有n个像素的图像可以被视为n维空间中的点。具有n个像素的两个图像之间的距离可以是n维空间中的2个点之间的距离。该距离称为MSE

答案 4 :(得分:1)

从概念上讲,它将是:

1) Start with red channel
2) Compute the difference between each pixel's gray level value in the two image's red channels pixel-by-pixel (redA(0,0)-redB(0,0) etc for all pixel locations.
3) Square the differences of every one of those pixels (redA(0,0)-redB(0,0)^2
4) Compute the sum of the squared difference for all pixels in the red channel
5) Repeat above for the green and blue channels
6) Add the 3 sums together and divide by 3, i.e, (redsum+greensum+bluesum)/3
7) Divide by the area of the image (Width*Height) to form the mean or average, i.e., (redsum+greensum+bluesum)/(3*Width*Height) = MSE


请注意,错误的E与差异同义。所以它可以被称为均方差。也意味着与平均值相同。所以它也可以称为平均平方差。