PSNR评估视频方法

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


视频评估方法

全参考客观视频质量评价方法 (PSNR,MSE, SSIM)原理


一、PSNR是什么?

psnr一般是用于最大值信号和背景噪音之间的一个判断。通常在经过影像压缩之后,输出的影像都会在某种程度与原始影像不同。为了衡量经过处理后的影像品质,我们通常会参考PSNR值来衡量某个处理程序能否令人满意。
优缺点:PSNR是最普遍,最广泛使用的评鉴画质的客观量测法,不过许多实验结果都显示,PSNR的分数无法和人眼看到的视觉品质完全一致,有可能PSNR较高者看起来反而比PSNR较低者差。这是因为人眼的视觉对于误差的敏感度并不是绝对的,其感知结果会受到许多因素的影响而产生变化。

二、使用代码


#include <cmath>
#include <string>
#include <stdio.h>
#include <stdlib.h>
using namespace std;
#pragma warning(disable:4996)

void yuv420_psnr(char* origin,char* target, int w, int h, int num) {

    FILE* fp = fopen(origin, "r");
    FILE* ft = fopen(target, "r");

    unsigned char buf1[w  * h];
    unsigned char buf2[w * h];

    float psnr = 0.0;
    for (int i = 0; i < num; i++) {
        fread(buf1, 1, w * h, fp);
        fread(buf2, 1, w * h, ft);

        int sum = 0;
        for (int i = 0; i < h; i++) {
            for (int j = 0; j < w; j++) {
                int t = i * w + j;
                sum += pow((buf1[t] - buf2[t]), 2);
            }
        }
        float MSE = (float)sum / (float)(w * h);

        psnr = 10 * log10(255 * 255 / MSE);
        printf("psnr: %f\n", psnr);

        fseek(fp, w * h / 2, SEEK_CUR);
        fseek(ft, w * h / 2, SEEK_CUR);
    }

    fclose(fp);
    fclose(ft);
}

int main()
{
    char* x ="bigbuckbunny_0_480x272.yuv";
    char* y ="bigbuckbunny_2_480x272.yuv";
    int w = 480;
    int h = 272;
    int num = 1;
    yuv420_psnr(x,y,w,h,num);
    return 0;
}

// 运行命令 g++ 项目名称.cpp -o 生成名称

psnr 越大越好

PSNR高于40dB说明图像质量极好(即非常接近原始图像),
在30—40dB通常表示图像质量是好的(即失真可以察觉但可以接受),
在20—30dB说明图像质量差;
最后,PSNR低于20dB图像不可接受


2.结果实例:

对比评估svac转化为yuv

FILE* fp = fopen(“E:\cpp\视频素材\test_svac_change\ds_480x272.yuv”, “r”);
FILE* ft = fopen(“E:\cpp\视频素材\test_svac_change\ds_480x272_test9_ld_el_dec.yuv”, “r”);
psnr: 32.743374


对比评估h265转化为yuv

C:\Users\Administrator\source\repos\cpp_project\cpp_project\ds_480x272.yuv
C:\Users\Administrator\source\repos\cpp_project\cpp_project\ds_480x272_2.yuv
psnr: 35


总结

后期对其他的图像质量评估指标 SSIM / MSE/VMAF/MOS/等标准进行分析。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值