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

    视频图像质量主观评价一般采用连续双激励质量度量法对任一观测者连续给出原始视频图像和处理过的失真图像,由观测者根据主观感知给出分值,其需针对多个视频对象进行多次重复实验,耗时多、费用高,难以操作;而视频编码图像的客观评价早期主要采用峰值信噪比(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. sftp 服务器外网访问设置

    这个是需要在本机上设定用户名的.根据不同的用户权限.然后让不同的人来到本机上取得数据. 参考一下有用的文章:http://www.ericstockwell.com/?p=54       (强烈建议 ...

  2. 可供VC调用的QT编写的界面DLL方法

    一般直接编写的QT动态库是无法被Windows下的VC6.0等调用的. 如下步骤 第一步:必须要在QT界面库源码下包含qtwinmigrate的源码包和库,网上可下载到. 第二步:在QT的proc文件 ...

  3. Ubuntu12.04 Eclipse 提示框背景色修改

    I had to edit these files: /usr/share/themes/Ambiance/gtk-3.0/settings.ini /usr/share/themes/Ambianc ...

  4. 解决gsoap中文乱码的问题

    解决方法一: 在main函数里初始化soap结构体后加入     soap_set_mode(&soap,SOAP_C_UTFSTRING); 这样所有的C都是utf-8的格式,只要你的win ...

  5. 杭电OJ——1011 Starship Troopers(dfs + 树形dp)

    Starship Troopers Problem Description You, the leader of Starship Troopers, are sent to destroy a ba ...

  6. 用docker cluster store实现kuryr的共享subnet

    kuryr共享网络 在上一篇分享中,提到共享网络需要在10.8.65.80和10.8.65.81上分别通过docker network create来创建网络.而实际上,通过对docker源码的解读, ...

  7. 对 Select 的各种操作(JQuery)

    在写表单时,经常要用到select元素,这个元素相较于其他文本框标签而言有不同.最近在写一个页面表单时需要对select进行各种操作,现将其用法收集并总结如下: HTML元素: <select ...

  8. 【C语言】指针模块

    本文目录 直接引用 一.什么是指针? 二.指针的定义 三.指针的初始化 四.指针运算符 五.指针的用途举例 六.关于指针的疑问 指针是C语言中非常重要的数据类型,如果你说C语言中除了指针,其他你都学得 ...

  9. MyEclipse导入Maven项目pom文件第一行报错,运行Tomcat报Log4j错误--解决方法

    问题描述: 前一段时间电脑第一次导入Maven项目,又是pom文件错,改好后又是运行Tomcat报Log4j错误,一直倒腾了近一个月程序才成功跑起来,太不容易. 也上网查了很长时间,没一个方法能解决我 ...

  10. 【转】PYTHON open/文件操作

    [注]虽是转载,但会在原文上有些修改! open/文件操作f=open('/tmp/hello','w')#open(路径+文件名,读写模式)#读写模式:r只读,r+读写,w新建(会覆盖原有文件),a ...