16位灰度图如何评价图像质量?

医学CR图像评价

    • 说明
    • 原理
    • 代码:

说明

项目需求是做图像增强处理,完成了图像增强的算法后,我没法区分几种算法结论之间的好坏之分,肉眼越来越难以识别,于是想到通过评价函数来评价,试验了以下几种方法,处理图像为16位的灰度图。(本篇博文为作者项目笔记,不具有严谨的科学论证,主要记录之用)

  1. 峰值性噪比
  2. Tenengrad梯度方法

原理

先上待处理的原图,前两张其实是一张图像,后一张为增强后的图像,65536像素图像显示到屏幕必须要调窗显示,第一张窗宽我调的大些,第二张调节到显示细节的像素区域。很明显在16位的像素区域,图像的像素方差还是比较大的,这个信噪比估计也是大的。下面做试验了,验证原图和处理后的图像哪个信噪比大。
16位灰度图如何评价图像质量?_第1张图片16位灰度图如何评价图像质量?_第2张图片16位灰度图如何评价图像质量?_第3张图片

峰值性噪比公式如下,MSE为图像的方差,
在这里插入图片描述
Tenengrad梯度方法利用Sobel算子分别计算水平和垂直方向的梯度,理论上来说同一场景下梯度值越高,图像越清晰,这里用sobel计算图像的平均灰度值。

代码:

double  imagePro::qualityOfImage(Mat src, double &psnr)
{
	Mat mean;
	Mat stddev;
	meanStdDev(src,mean , stddev);
	psnr = 20 * log10(MAXPIXEL / stddev.at<double>(0, 0));
	return psnr;
}

int imagePro::RawToMat(const char fileName[], cv::Mat& dst,const int height,const int width)
{
	if (fileName == nullptr) return 0;
	if ((width <= 0) | (height <= 0)) return 0;
	size_t nsize = width * height;
	unsigned short *data = new unsigned short[nsize];
	FILE *file;
	file = fopen(fileName, "rb+");
	fread(data, sizeof(unsigned short), nsize, file);
	fclose(file);
	cv::Mat temp(height, width, CV_16UC1, data);
	dst = temp.clone();
	return 0;
}

int main()
{
	imagePro img;
	Mat src,src2;
	char strPath[256] = "data/12.raw";
	char strPath2[256] = "data/12_.raw";
	int height = HEIGHT;
	int width = WIDTH;
	img.RawToMat(strPath, src, height, width);
	img.RawToMat(strPath2, src2, height, width);
	double pnsr = 0.0;
	//图像峰值信噪比
	img.qualityOfImage(~src, pnsr);
	cout << pnsr << end;
	img.qualityOfImage(src2, pnsr);
	cout << pnsr << endl;
	//梯度
	Mat imageSobel, imageSobel2,imageSobel3;
	Sobel(src, imageSobel, CV_16U, 1, 1);
	Sobel(src2, imageSobel2, CV_16U, 1, 1);
	double meanValue = 0.0;
	meanValue = mean(imageSobel)[0];

	cout << meanValue << endl;
	meanValue = mean(imageSobel2)[0];
	cout << meanValue << endl;

	Mat sharp = src2 + imageSobel2;
	//img.saveRawFile("data/sharp.raw",sharp);
	Sobel(sharp, imageSobel3, CV_16U, 1, 1);
	meanValue = mean(imageSobel3)[0];
	cout << meanValue << endl;
	}
结果:
	21.0854   ---1
	14.4128   ---2
	
	45.3035   ---3
	61.993    ---4
	97.8653   ---5

结论与估计:
1、对比前两个数值,性噪比与理论上相反,故不适用;
2、对比3,4,5数值,梯度方法有用;
3、对比4,5 ,5为在4的基础上添加了一次基于梯度的增强,数值确实增加了,但是对比显示出来的图像没什么变化,估计就是这是一个综合问题,单一的评价系数不能精确衡量显示出来图像的质量,没有精细比较的价值,可能就是调窗方法导致的。
4、另外做了一个实验,将A、B两幅同一物体图像,其余不变,其中A为细边缘,B为粗边缘,其中A图像梯度质量图像高于B。如下

	结果:
	14.4128
	15.4068
	61.993
	62.6221
	98.7929

你可能感兴趣的:(图像增强,CR图像处理)