为什么我用MATLAB和C语言计算图像信噪比PSRN结果不一样

柯南与企鹅 2017-03-09 03:20:10

以下是两个代码,采用的公式一样:
********************************************************
function PSNR = psnrnew(f1, f2)
%计算两幅图像的 峰值信噪比
k = 8;
%k为图像是表示地个像素点所用的二进制位数,即位深。
fmax = 2.^k - 1;
a = fmax.^2;
e = im2uint8(f1) - im2uint8(f2);
[m, n] = size(e);
b = mean(sum(sum(e.^2)));
PSNR = 10*log10(m*n*a/b);
**********************************************************************************************
****************************************************************************************************
int temp2=0;
for ( i =0;i<image_height;i++)
{
for ( j=0;j<image_width;j++)

temp2 = temp2 + (a[i][j]-Re[i][j])*(a[i][j]-Re[i][j]);
}
double MSE=0.0;
MSE = temp2/(512*512);
// double SNR=255*255/temp2*512*512;
//SNR=10*log10(SNR);//SNR即为信噪比

printf ("MSE=%.3f\n",MSE);
double PSNR=(255*255)/MSE;
PSNR=10*log10(PSNR);//PSNR即为峰值信噪比
printf ("PSNR=%.4f\n",PSNR);
...全文
277 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
柯南与企鹅 2017-03-09
  • 打赏
  • 举报
回复
有人说是数据类型的问题。我测试图片为bmp格式的。
flying_music 2017-03-09
  • 打赏
  • 举报
回复
你把中间的变量都输出一下,对比对比不就知道了吗

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧