YUV图片处理(4)

一、RSNR的理解

你可以吧RSNR理解为评判图片受损的标准,PSNR取值通常情况下都在20-50的范围内,取值越高,代表两张图像越接近,反映出受损图像质量越好。
类似于我们的FPS,越高越好。

对于8bit量化的像素数据来说,PSNR的计算公式如下所示:

在这里插入图片描述

上述公式中mse的计算公式如下所示:
在这里插入图片描述

二、如何评判

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
int testYuv420Grey(char* fileName1, char* fileName2, int width, int height) 
{
	FILE* fp = fopen(fileName1, "rb+");
	FILE* fp1 = fopen(fileName2, "rb+");
	unsigned char* readBuf1 = (unsigned char*)malloc(width * height);
	unsigned char* readBuf2 = (unsigned char*)malloc(width * height);

		fread(fileName1, 1, width * height, fp);
		fread(fileName2, 1, width * height, fp1);

		double mse_sum = 0, mse = 0, psnr = 0;

		for (int j = 0; j < width * height; j++) {
			mse_sum += pow((double)(readBuf1[j] - readBuf2[j]), 2);
		}
		mse = mse_sum / (width * height);
		psnr = 10*log10(255.0 * 255.0 / mse);
		printf("%5.3f\n", psnr);
		fseek(fp, width * height / 2, SEEK_CUR);
		fseek(fp1, width * height / 2, SEEK_CUR);


	free(readBuf1);
	free(readBuf2);
	fclose(fp);
	fclose(fp1);
}
int main()
{
	testYuv420Grey("girl_1.yuv","girl_5.yuv",1280,720);
	return 0;
}

在这里插入图片描述这里编译需要家 -lm,因为运用了一些函数,所以需要一些数学知识。

inf是因为我这里的值超出了范围(无穷大,无穷小),所以会显示inf,因为这两张图片girl_1.yuv和girl_5.yuv和是一样的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

永不秃头的程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值