图像处理中必用到的公式——联合因素评价指标定义与C/C++实现

Posted nanke_yh

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了图像处理中必用到的公式——联合因素评价指标定义与C/C++实现相关的知识,希望对你有一定的参考价值。

目录

1)、相关系数(Correlation Coefficient)

2)、偏差指数(Deviation Index)

3)、扭曲度(Distortion)


         在图像处理中必不可少的公式就是对图像的像素统计操作,这些公式也往往用于图像的质量评价。以下几个公式在质量评价指标中均属于需要参考影像的评价指标(或称联合因素评价指标),该类评价指标能够较客观地反映出多源数据融合的性能变化。

        那么,对于m×n像素的f和r影像而言,采用这些客观评价指标进行影像质量评价的计算定义式分别如下所示:

1)、相关系数(Correlation Coefficient

        相关系数反映的是参与质量评价的两幅影像在光谱特征方面的相似程度。一般情况下,相关系数值越大,融合影像保留的信息越多,融合效果也就越好。表达式如下:

        式中,f(x,y),r(x,y)分别表示n×m的影像,分别为两影像的灰度均值。

double CalCorrelationCoef(ImgTyp *dstImage,ImgTyp *refImage,int width,int height)

	double uf = CalAverage(dstImage,width,height);
	double ur = CalAverage(refImage,width,height);
	double tempA = 0.0;
	double tempB = 0.0;
	double tempC = 0.0;
	double tempD = 0.0;
	double CC = 0.0;
	for (int i = 0;i < height;i++)
	
		for (int j = 0;j < width;j++)
		
			tempA += (dstImage[i * width + j] - uf) * (refImage[i * width + j] - ur);
			tempB += pow((dstImage[i * width + j] - uf),2);
			tempC += pow((refImage[i * width + j] - ur),2);
		
	
	tempD = sqrt(tempB * tempC);
	CC = tempA/tempD;
	printf("影像间的相关系数为:%.5g \\n",CC);
	return CC;

2)、偏差指数(Deviation Index)

        偏差指数反映了融合图像与原始图像在光谱信息熵的匹配程度,一般用在高分辨率全色图像和多光谱低分辨率图像的融合图像质量评价中。其数学表达式:

        其中f(x,y)和r(x,y)分别表示原始图像和融合图像在(x,y)处的灰度值。就公式而言,也可表述成:偏差指数=标准差/平均值,用来评价融合图像与原始多光谱图像的光谱偏离度,偏离指数越大,光谱失真越大,匹配程度越低。

double CalDeviationIndex(ImgTyp *dstImage,ImgTyp *refImage,int width,int height)

	double temp = 0.0;
	double DI = 0.0;
	for (int i = 0;i < height;i++)
	
		for (int j = 0;j < width;j++)
		
			temp += abs((dstImage[i * width + j] /refImage[i * width + j])-1);
		
	
	DI = temp/((width - 1)*(height - 1));
	printf("影像间的偏差指数为:%.5g \\n",DI);
	return DI;

3)、扭曲度(Distortion)

        扭曲度又叫光谱扭曲度,表示融合前后光谱的差异,数值越小越好。其数学公式如下:

        其中f(x,y)和r(x,y)分别表示原始图像和融合图像在(x,y)处的灰度值。

double CalDistortion(ImgTyp *dstImage,ImgTyp *refImage,int width,int height)


	double temp = 0.0;
	double D = 0.0;
	for (int i = 0;i < height;i++)
	
		for (int j = 0;j < width;j++)
		
			temp += abs(dstImage[i * width + j] - refImage[i * width + j]);
		
	
	D = temp/((width - 1)*(height - 1));
	printf("影像间的扭曲度为:%.5g \\n",D);
	return D;

以上是关于图像处理中必用到的公式——联合因素评价指标定义与C/C++实现的主要内容,如果未能解决你的问题,请参考以下文章

Jaccard 评价指标的简介与图示

分类评估指标

spssau数据处理难度

压缩感知

图像质量评价

R语言临床预测模型的评价指标与验证指标实战:C-index指标计算