⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 psnr.cpp

📁 這是一個DWT的Verilog code,它的主要功用是PC與FPGA之間的DWT程序的溝通與傳輸
💻 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 + -