?? 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 + -