📄 psnr.cpp
字号:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
void main ()
{
FILE *orig_ptr;
FILE *re_ptr;
char source[25];
printf(" Enter original filename : ");
scanf("%s",source);
printf("\n");
if ((orig_ptr=fopen(source,"rb")) == NULL)
{
printf("\n Can't open the image (PSNR)! \n");
exit(0);
}
char target [20];
printf(" Enter restruction filename : ");
scanf("%s",target);
printf("\n");
if ((re_ptr=fopen(target,"rb")) == NULL)
{
printf(" \n Can't open the reimage (PSNR)! \n");
exit(1);
}
int sizex,sizey;
printf("Input the image hor size;");
scanf("%d",&sizex);
printf("\n");
printf("Input the image ver size;");
scanf("%d",&sizey);
printf("\n");
int i,j;
float snr=0,psnr=0,acc1=0,acc2=0,acc3=0;
float in1,in2,diff1,diff2,abs,mse;
for( i=0; i<sizey; i++)
{
for( j=0; j<sizex; j++)
{
in1 = float(fgetc(orig_ptr));
in2 = float(fgetc(re_ptr));
diff1 = in1-in2;
if (diff1<0)
diff1=-diff1;
acc1=acc1+diff1;
acc2=acc2+pow(diff1,2);
acc3=acc3+pow(in1,2);
}
}
abs=acc1/(sizey*sizex);
mse=acc2/(sizey*sizex);
snr=10*float(log10(acc3/acc2));
psnr=10*float(log10((255*255)/mse));
printf("\n mean absolute error =%.4f ",abs);
printf("\n mse =%.4f ",mse);
printf("\n snr =%.4f ",snr);
printf("\n psnr =%.4f ",psnr);
fclose( orig_ptr );
fclose( re_ptr );
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -