一 为什么对视频编码图像质量客观评价

    视频图像质量主观评价一般采用连续双激励质量度量法对任一观测者连续给出原始视频图像和处理过的失真图像,由观测者根据主观感知给出分值,其需针对多个视频对象进行多次重复实验,耗时多、费用高,难以操作;而视频编码图像的客观评价早期主要采用峰值信噪比(PSNR)或均方差(MSE)衡量视频序列的失真度,虽然其具有操作简单、成本低、易于实现的特点,但是由于其忽略了图像内容对人眼的影响,不能完整地反映出图像的质量。所以现实中还是多以主观评价方式为主的,码率影响视频请晰度,但是这也是在两个码率比较悬殊的两个视频序列的画质才可以被人眼比较明显感知到,否则很难定定量衡量码率提升带来的视频画质的提升效益。如何让视频图像质量客观评价方法产生的结果逼近主观评价结果进而定量衡量视频图像质量,为此近些年出现了多种基于结构化、人眼生理特征建立的视觉感知模型与统计算法的客观评价方法。

二 都有哪些视频编码图像质量客观评价(限于有全参考图像即FR)的方法

  • PSNR
  • NQM
  • UQI
  • SSIM
  • MS-SSIM
  • IFC
  • VIF
  • VSNR
  • IW-SSIM
  • RFSIM
  • FSIM

三 都有哪些评估视频编码图像质量客观评价方法的优劣的方法

  • SROCC
  • KROCC
  • PLCC
  • RMSE

四 为测试视频编码图像质量客观评价方法相应算法都有哪些图像模型库

  • TID2013
  • TID2008
  • CSIQ
  • LIVE
  • IVC
  • MICT
  • WIQ
  • A57

五 以TID2013来看看哪个方法评价视频图像质量最牛

备注:* Spearman correlation即SROCC

         * Kendall  correlation即KROCC

         * FSIMc是同时计算色度的FSIM

         * 由此可以看出在这些评价算法中最接近主观评价分值的是FSIM,所以下面我们以该方法定量衡量不同编码参数对编码出的图像质量的影响。

六 如何使用FSIM

官网地扯:http://www4.comp.polyu.edu.hk/~cslzhang/IQA/FSIM/FSIM.htm,算法以matlab语言实现,所以使用前要先装matlab,然后在matlab命令窗口先用imread加载一个参考图像与一个相应的扭曲图像,然后调用FeatureSIM进行特值相似度值的计算,值越高说明后者图像质量越高。使用方法示例如下:

    

七 封装FSIM便于批量处理

  1. 枚举某一目录下所有图像文件函数

    function [Status, FileList] = EnumPRefDir( RefDir )
    %EnumPRefDir 枚举某一保存参考图片的目录获取其中的所有参考图像文件
    % 枚举目录(排除子目录包括.或..)
    % 输入参数
    % refdir 被枚举的目录
    % 输出参数
    % Status 为0表示文件列表为空,1非空
    % FileList 文件列表
    % 调用示例
    % [Status, FileList] = EnumPRefDir( 'RefDir' ); %FileList{1} = 'a111.txt';
    %FileList{2} = 'a112.txt'; if ~exist(RefDir, 'dir')
    strerr = ['目录', RefDir, '不存在'];
    disp(strerr);
    end DirList=dir(RefDir);
    FileListIndex = 1;
    Status=0;
    FileList{FileListIndex}=char('empty');
    for DirListIndex=1:length(DirList)
    if ~DirList(DirListIndex).isdir
    FileList{FileListIndex} = char(DirList(DirListIndex).name);
    FileListIndex = FileListIndex + 1;
    Status=1;
    end
    end end
  2. 调用FSIM计算两个文件夹中的图片从而生成相似度列表文件
    function Status = FSIMBetweenTwoFileFolder( RefDir, DecodeDir )
    %FSIMBetweenTwoFileFolder 调用FSIM计算两个文件夹中的图片从而生成相似度列表文件
    % 基于参考与解码文件夹计算这些文件夹中相应图片的相似度
    % Tip:两个文件夹中的文件命名方式相同,比如RefDir/P000001与RefDir/P000001
    % 输入参数
    % RefDir 参数图片文件夹
    % DecodeDir 解码图片文件夹
    % 输出参数
    % Status 为0出现错误(比如文件夹为空或两个文件夹图片命方式不同或数量不同)
    % 为1全部文件都经过了正确的相似度计算
    % 输出相似度列表文件
    % RefDir+DecodeDir+'FSIM.txt',其行格式为:图片文件名 + ' ' + 相似度值 + ' ' + 相似度值c
    % 调用示例
    % Status = FSIMBetweenTwoFileFolder('RefDir', 'DecodeDir1'); Status = 1;
    if ~exist(RefDir, 'dir') || ~exist(DecodeDir, 'dir')
    strerr = ['目录', RefDir,'或',DecodeDir, '不存在'];
    disp(strerr);
    Status = 0;
    return;
    end SListFileName = strcat(RefDir, '_');
    SListFileName = strcat(SListFileName, DecodeDir);
    SListFileName = strcat(SListFileName, '_FSIM.txt'); try
    [FStatus, FileList] = EnumPRefDir( RefDir ); if(FStatus == 0)
    Status = 0;
    return;
    end SListFileID = fopen(SListFileName, 'w');
    if(SListFileID < 0)
    Status = 0;
    return;
    end for FIndex = 1 : length(FileList)
    OneRefFileName =['', RefDir, '/', char(FileList(FIndex))];
    OneDecodeFileName = ['', DecodeDir, '/', char(FileList(FIndex))]; if ~exist(OneRefFileName, 'file') || ~exist(OneDecodeFileName, 'file')
    Status = 0;
    break;
    else
    try
    OneRefFileHandle = imread(OneRefFileName);
    OneDecodeFileHandle = imread(OneDecodeFileName);
    [FSIM, FSIMc] = FeatureSIM(OneRefFileHandle, OneDecodeFileHandle);
    fprintf(SListFileID, '%s %f %f\r\n', char(FileList(FIndex)), FSIM, FSIMc);
    catch rme
    disp(rme.message);
    Status = 0;
    break;
    end
    end
    end fclose(SListFileID);
    catch eme
    disp(eme.message);
    Status = 0;
    end
    if ~Status
    delete(SListFileName);
    end
    end
  3. 驱动函数
    function FSIMDriver( RefDir,DecodeDir1, DecodeDir2 )
    %FSIMDriver FSIM相似度计算主驱动程序
    % FSIM相似度计算主驱动程序
    % 说明
    % 跟据目前的需求,主要基于编码前图像目录(RefDir)与两种不同编码参数相应的
    % 两类解码图像目录(DecodeDir1与DecodeDir2)计算图像特征相似度,从而比较不同的编码参数的效果
    % 输入参数
    % RefDir 保存编码前图像文件的文件夹名称,默认值是当前目录下的‘RefDir’
    % DecodeDir1 保存解码后图像文件的文件夹名称,默认值是当前目录下的‘DecodeDir1’
    % DecodeDir2 保存解码后图像文件的文件夹名称(DecodeDir1与DecodeDir2中的图像文件编码参数不同),默认值是当前目录下的‘DecodeDir2’ % 输出参数
    % 无
    % 调用示例
    % FSIMDriver(); narginchk(0, 3);
    nargoutchk(0, 0); if nargin < 3
    DecodeDir2='DecodeDir2';
    end if nargin < 2
    DecodeDir1='DecodeDir1';
    end if nargin < 1
    RefDir='RefDir';
    end try
    ErrorCode = FSIMBetweenTwoFileFolder(RefDir, DecodeDir1);
    disp(['基于目录',RefDir,'与', DecodeDir1, '计算图像特征相似度', GetErrorDisp( ErrorCode )]); ErrorCode = FSIMBetweenTwoFileFolder(RefDir, DecodeDir2);
    disp(['基于目录',RefDir,'与', DecodeDir2, '计算图像特征相似度', GetErrorDisp( ErrorCode )]);
    catch tme
    disp(tme.message);
    end
    end function ErrorDisp = GetErrorDisp( ErrorCode )
    if ErrorCode
    ErrorDisp = '成功';
    else
    ErrorDisp = '失败';
    end
    end
  4. 生成可执行文件

    在matlab命令窗口输入以下命令,这样就可以在当前目录下的子目录target生成了FSIMDriver.exe:

    mkdir target
    mcc -m -d target FSIMDriver

  5. 在没有安装matlab的用户机如何运行FSIMDriver,首先在matlab命令窗口调用mcrinstaller显示如下找到mcrinstaller.exe的位置,在用户机通过该程序安装matlab运行时,然后在window命令行窗口即可运行FSIMDriver.exe。

  6. FSIMDriver.exe需要三个命令行参数,分别为保存编码前图像文件的目录名称、两个保存解码后的图像文件的目录(这两个目录中的图像文件是由不同编码参数所编码视频序列解码后的图像文件且这两个目录中的文件名称与编码前保存的图像文件的名称一样)。

八 总结

由于视频图像序列场景不停在变化,所有图像质量评价方法包括FSIM在定量衡量编码之后的图像失真度还是存在一定局限性,不过作为一个方向还是值得关注的。

一种基于FSIM对视频编码图像质量客观评价的方法的更多相关文章

  1. MPEG-4视频编码核心思想

    1 引言   当今时代,信息技术和计算机互联网飞速发展,在此背景下,多媒体信息已成为人类获取信息的最主要载体,同时也成为电子信息领域技术开发和研究的热点.多媒体信息经数字化处理后具有易于加密.抗干扰能 ...

  2. 基于Linux应用层的6LOWPAN物联网网关及实现方法

    本发明涉及一种基于Linux应用层的6LOWPAN物联网网关及实现方法,所述物联网网关包括开发平台以及无线射频模块,其实现方法是:所述6LOWPAN物联网网关的以太网网口收到访问6LOWPAN无线传感 ...

  3. 【转载】视频编码(H264概述)

    一视频编码介绍 1.1 视频压缩编码的目标 1)保证压缩比例 2)保证恢复的质量 3)易实现,低成本,可靠性 1.2 压缩的出发点(可行性) 1)时间相关性 在一组视频序列中,相邻相邻两帧只有极少的不 ...

  4. 【图像处理】DVR H.264视频编码基本知识

    视频编码技术基本是由ISO/IEC制定的MPEG-x和ITU-T制定的H.26x两大系列视频编码国际标准的推出.从H.261视频编码建议,到 H.262/3.MPEG-1/2/4等都有一个共同的不断追 ...

  5. 直播平台搭建之音视频开发:认识主流视频编码技术H.264

    H.264简介 什么是H.264?H.264是一种高性能的视频编解码技术.目前国际上制定视频编解码技术的组织有两个,一个是"国际电联",它制定的标准有H.261.H.263.H.2 ...

  6. 【转】基于DM8168的视频智能分析系统的设计方案

        [导读] 为了实现高清视频的智能分析功能,本文介绍了一种以TI公司的DM8168为核心的高清视频智能分析系统的设计方案,该方案从硬件设计和软件设计两个方面介绍了硬件组成.工作流程.软件架构,并 ...

  7. 基于Linux的视频传输系统(上大学时參加的一个大赛的论文)

    文件夹 1原创性声明----------------------------------------------------3 2 摘要-------------------------------- ...

  8. Android实现录屏直播(三)MediaProjection + VirtualDisplay + librtmp + MediaCodec实现视频编码并推流到rtmp服务器

    请尊重分享成果,转载请注明出处,本文来自Coder包子哥,原文链接:http://blog.csdn.net/zxccxzzxz/article/details/55230272 Android实现录 ...

  9. 嵌入式 视频编码(H264)

    这几天在编写视频录制模块,所以,闲暇之余,又粗粗的整理了一下,主要是API,以备不时之用    摄像头获取的模拟信号通过经芯片处理(我们使用的是CX25825),将模拟信号转成数字信号,产生标准的IT ...

随机推荐

  1. kivy create a package for Android

    Now that you've successfully coded an app. Now you want to deploy it to Android. So now we would nee ...

  2. HDU 2073 无限的路

    Problem Description 甜甜从小就喜欢画图画,最近他买了一支智能画笔,由于刚刚接触,所以甜甜只会用它来画直线,于是他就在平面直角坐标系中画出如下的图形: 甜甜的好朋友蜜蜜发现上面的图还 ...

  3. 移植rtmpdump(librtmp)到android

    编译环境:(rtmpdump-master.zip和Polar SSL版本已经打包上传,具体路径在http://download.csdn.net/detail/gyley2/5721061) win ...

  4. 错排-HDU 2049 递推的应用

    当n个编号元素放在n个编号位置,元素编号与位置编号各不对应的方法数用M(n)表示,那么M(n-1)就表示n-1个编号元素放在n-1个编号位置,各不对应的方法数,其它类推. 第一步,把第n个元素放在一个 ...

  5. Hybrid App(一)App开发选型

    1.几种app开发模式概述 Native App 即传统的原生APP开发模式,Android基于Java语言,底层调用Google的 API;iOS基于OC或者Swift语言,底层调用App官方提供的 ...

  6. ios 获取融云token

    聊聊iOS做融云时重要的一步,获取token.token应该从服务端拿这样你的appSecret就不容易暴露.但有时开发需要也要自己先获取一个token也是可以的.请求方式有很多随你便喽,C哥(&qu ...

  7. [ios2]判断retina 屏幕

    判断是否retina屏幕 #define isRetina ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSize ...

  8. Windows卸载软件出现蓝屏SYSTEM SERVICE EXCEPTION(VrvProtect_x64_2.sys)

    今天给大家介绍一个卸载Windows上软件的工具Windows Installer Clean Up,可以卸载电脑上的很多控制面板里面卸载不掉的软件,或者卸载过程中出现问题的软件. (1)出现的现象: ...

  9. C#开发学习——web服务器端控件

        Asp.net在客户端开发和web开发所用到的控件还是有很大的差别的,而且Web开发的界面是在浏览器中显示的,所以控件的设计都和前边学习HTML设计有联系,没有客户端开发那么简单,不过我们可以 ...

  10. [CSS] 子元素垂直居中的两种方式

    1. 多个子元素水平并排,IE10以下失效 display: flex; align-items: center; justify-content: center; 2.多个子元素竖直排列,这种方式会 ...