gpt4 book ai didi

python - PSNR的OpenCV实现对于两个相同的图像返回值361

转载 作者:行者123 更新时间:2023-12-02 16:16:11 24 4
gpt4 key购买 nike

我正在使用python测试OpenCV的PSNR实现,但结果很奇怪。

我试图计算两个相同图像之间的PSNR:该值应该是错误的,因为MSE应该等于零。但是,结果等于361!有人可以向我解释为什么我们得到这样的结果吗?

import cv2
img1 = cv2.imread("image1.png")
img2 = cv2.imread("image1.png")
psnr = cv2.PSNR(img1,img2)
print(psnr)

最佳答案

PSNR的实现可以在here中找到。
最后两个源代码行是:

double diff = std::sqrt(norm(_src1, _src2, NORM_L2SQR)/(_src1.total()*_src1.channels()));

return 20*log10(R/(diff+DBL_EPSILON));
将一个较小的 DBL_EPSILON值添加到分母,以防止被零除。

#include <iostream>
#include <float.h> // For DBL_EPSILON
#include <math.h>

int main()
{
int R = 255; // default value
double diff = 0;
std::cout << 20*log10(R/(diff + DBL_EPSILON)) << std::endl;
}
上面的C++程序会打印 361.201的值,该值与Python中打印的值相同。

关于python - PSNR的OpenCV实现对于两个相同的图像返回值361,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61845188/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com