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

📄 ratio.cpp

📁 基于块方向的图像无损压缩代码
💻 CPP
字号:
#include "stdafx.h"
#include "math.h"
double Calculate_SNR(CString SourceFileName,CString ObjectFileName)
{
	long	i,size;
	double temp,error;
	char msg[30];

	CFile cSourceFile,cObjectFile;

	BITMAPFILEHEADER bHead;
	BITMAPINFOHEADER bi;

	if(!cSourceFile.Open(SourceFileName,CFile::modeRead))
	{
		sprintf(msg,"The source file %s can't be opened!",SourceFileName);
		AfxMessageBox(msg);
		return -1;
	}

	if(!cObjectFile.Open(ObjectFileName,CFile::modeRead))
	{
		sprintf(msg,"The object file %s can't be opened!",ObjectFileName);
		AfxMessageBox(msg);
		return -1;
	}

	cSourceFile.Read(&bHead,sizeof(BITMAPFILEHEADER));
	cSourceFile.Read(&bi,sizeof(BITMAPINFOHEADER));
	
	cObjectFile.Seek(1078,CFile::begin);
	cSourceFile.Seek(4*256,CFile::current);

	unsigned char *SourceData,*ObjectData;
	size=(bi.biWidth+3)/4*4*bi.biHeight;
	SourceData=new unsigned char [size];
	ObjectData=new unsigned char [size];
	cSourceFile.ReadHuge(SourceData,size);
	cObjectFile.ReadHuge(ObjectData,size);


	for(i=0; i<size; i++)
	{
		temp=fabs(SourceData[i]-ObjectData[i]);		
		error+=temp*temp;
	}
	error/=(double)(bi.biWidth*bi.biHeight);
	error=10*log10((double)255*255/error);
	
	delete  SourceData,ObjectData;
	
	cSourceFile.Close();
	cObjectFile.Close();
	
	return error;
}

double Calculate_CompressRatio(CString SourceFileName,CString ObjectFileName)
{
	char msg[30];

	CFile cSourceFile,cObjectFile;
	long SourceLength,ObjectLength;
	double ratio;

	if(!cSourceFile.Open(SourceFileName,CFile::modeRead))
	{
		sprintf(msg,"The source file %s can't be opened!",msg);
		AfxMessageBox(msg);
		return -1;
	}

	if(!cObjectFile.Open(ObjectFileName,CFile::modeRead))
	{
		sprintf(msg,"The object file %s can't be opened!",ObjectFileName);
		AfxMessageBox(msg);
		return -1;
	}
	
	ObjectLength=cObjectFile.GetLength();
	SourceLength=cSourceFile.GetLength();
	cSourceFile.Close();
	cObjectFile.Close();
//	ratio=(double)(SourceLength-1078)/ObjectLength;
	ratio=(double)8.*ObjectLength/(640*640);	
	return ratio;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -