图像评价指标及方法

来源:互联网 发布:从事数据分析看什么书 编辑:程序博客网 时间:2024/05/16 05:41
图像评价指标及方法
最近在调研如何评价图像的质量,从而方便对相机进行选型,经过一番查找,整理出一下资源。

先来看一下评价图像质量有哪些指标,我主要参考了IEEE P1858 CPIQ标准:
https://zh.scribd.com/doc/304986665/CPIQ-Overview-2016-02-15
该标准中主要使用了七个指标:



各个指标以及一些其他指标,可以在以下链接中查找:

清晰度(Sharpness)

噪点(Noise)

镜头畸变(Lens Distortion)

动态范围(Dynamic Range)

色彩精度(Color Accuracy)

亮度均匀性(Uniformity)

色彩均匀性(ColorShading)

横向色差(Lateral Chromatic Aberration)

炫光(Veiling Glare)

彩色摩尔(Color Moire)

数据压缩(Data Compressino)

打印机质量参数(Printer Quality Factors )

打印最大密度(Print Dmax)

打印色域(Print Color Gamut)


用于图像性能指标分析的软件有很多,该标准中列出如下软件:



其中比较广泛应用的是Imatest,下面列一些该软件的说明和资源:

imatest官网:

http://www.imatest.com/products/imatest-it/


中国代理公司:

http://www.colorspace.com.cn/Product/7381642718.html


imatest软件介绍:


Imatest 是一个专门用来对数码相机图像进行数据测试的软件包,这个软件的功能是:镜头分辨率测试(SFR-MTF)、色差、色彩还原度、色彩空间等等。这是目前最权威的成像分析软件,跟MTF曲线一

样从微观上量化分析,且更加细致深入,一针见血直打要害,有不少摄影网站都在用。


Imatest master是完全功能的软件,即可用于检测数字相机、摄像机、工业相机拍摄的图像质量,也可用于交流检测结果。其功能包括:

SFRplus:可以与SFRplus测试卡配合使用,检测MTF,横向色差,畸变,阶调响应和颜色还原。

SFR:配合测试卡,可检测相机和镜头的锐度,噪音,色差。可以在相对条件下比较不同相机的表现。比较的最小区域可达10X10个像素。

MTF:使用SFR的结果比较不同相机、镜头和影像系统的MTF性能。

Stepchart:配合灰阶测试卡检测相机的阶调响应,噪音,动态范围。还可用于检测曝光的准确性,镜头眩光。

Distortion:检测镜头的畸变,使用可打印的正方形和矩形网格计算矫正系数。

Uniformity:检测镜头的渐晕,检测多种图像传感器的不均匀性,包括色彩阴影,具体的噪音分部,可见的不均匀性,灰尘污点。标识出有问题的像素。 显示选项包括叠生在图像上的轮廓线,或伪彩色的色条。

Test Charts:可以生成图像文件用打于打印测试图。生成的测试卡包括SFR斜边图像,星形测试图,各种频率和反差的图样。可选项包括:反差,高光色彩,正弦线和条纹模式。可输出位图或 可绽放矢量图 (SVG).  

Print:打印检测,可以检测打印机、纸张、墨水的质量,包括色彩响应,色域,阶调响应,最大密度,ICC描述文件和呈色意图。



imatest论坛:(资源很少)

http://www.coloreye.cn/bbs/search.php?mod=forum&searchid=1&orderby=lastpost&ascdesc=desc&searchsubmit=yes&kw=imatest


图像测试实验室全景:(太专业了,咱们公司不会建)

http://www.colorspace.com.cn/upload/IQ%20Lab_Shen%20Zhen/iql.html


图像测试卡:

ISO测试卡

清晰度测试卡

畸变测试卡

色彩测试卡

动态范围测试卡

纹理细节测试卡

横向色差测试卡

红外图像测试卡

灰卡




成像系统知识

http://www.coloreye.cn/wiki/category-view-30.html



图像质量相关标准:

ISO标准

CPIQ标准

Skypelync标准

CIPA

手机行业标准

医疗行业标准

安防监控行业标准

汽车行业标准


以上的评价方法十分专业,而在另一篇博客中,看到其他评价指标,——峰值性噪比PSNR、模糊系数K、质量因素Q

定义如下:


Matlab实现代码:
%说明:本文件为计算两幅视频图象相对于高清晰图象的质量,其中:%eyechart1.bmp为未处理前质量较差图象,核心区域的截图保存为area_eyechart1.bmp%eyechart2.bmp为某种算法处理后质量较好图象,核心区域的截图保存为area_eyechart2.bmp%eyechart3.bmp为高清晰参考图象,核心区域的截图保存为area_eyechart3.bmp %程序流程为%第一步:先分别从eyechart1.bmp、eyechart2.bmp、eyechart3.bmp中截取出核心区域,并分别保存为area_eyechart1.bmp、area_eyechart1.bmp、area_eyechart3.bmp%第二步:以area_eyechart3.bmp为参考图象,计算area_eyechart1.bmp的PSNR、模糊系数KBlur、质量指数Q%第三步:以area_eyechart3.bmp为参考图象,计算area_eyechart2.bmp的PSNR、模糊系数KBlur、质量指数Q %程序可直接运行,运行结果为:%1.保存并显示生成的截图文件area_eyechart1.bmp、area_eyechart1.bmp、area_eyechart3.bmp%2、在控制台先显示第二步的计算结果,即area_eyechart1.bmp的三个质量指标,然后接着显示第三步的计算结果,即area_eyechart2.bmp的三个质量指标 %运行结果分析:area_eyechart2.bmp的PSNR和质量指数Q高,表明其质量较好,而area_eyechart1.bmp的模糊系数KBlur较大%这是因为其有很多噪声被当着了边缘能量来计算,这也从一个方面说明模糊系数KBlur的应用具有局限性,但前者KBlur>1,后者<1,理论上只有模糊的情况下%KBlur是<=1的,这也可根据KBlur与1的关系来判定图象收噪声污染的程度. %******************从eyechart1.bmp,eyechart2.bmp两个文件中截取测试图象区域,可保证两图象截取的区域严格对准*****a=imread('eyechart1.bmp','bmp');b=a([203:396],[249:440]);a=imread('eyechart2.bmp','bmp');c=a([203:396],[249:440]); %*******************从eyechart3.bmp中截取测试参考图象,截取部分需要进行缩放,使之与eyechart1.bmp,eyechart2.bmp截取部分大小匹配*******************************************************************a=imread('eyechart3.bmp','bmp');d=a([62:406],[60:395]);e=imresize(d,[length(b(:,1)),length(b(1,:))], 'bicubic');%由于eyechart3.bmp和eyechart1.bmp,eyechart2.bmp比例不一样,这里要进行比例调整imwrite(b,'area_eyechart1.bmp','bmp');imwrite(c,'area_eyechart2.bmp','bmp');imwrite(e,'area_eyechart3.bmp','bmp'); subplot(1,3,1);imshow(e);title('eyechart3.bmp截取部分,参考图象');hold on;subplot(1,3,2);imshow(b);title('eyechart1.bmp截取部分');hold on;subplot(1,3,3);imshow(c);title('eyechart2.bmp截取部分');%*******************以下部分为计算截取图象area_eyechart1.bmp和area_eyechart1.bmp的PSNR、模糊系数、质量指数Q*% 本文件功能为对计算污染图象相对于源图象的质量clc;clear;PSNRenable=1;%PSNR计算使能,为0不计算,为1,计算KBlurenable=1;%模糊系数KBlur计算使能,为0不计算,为1,计算Qenable=1;%质量指数Q计算使能,为0不计算,为1,计算 for m=1:2imsrcnamehead='area_eyechart3';%源图象文件名头imsrcnameext='bmp';%源图象文件名扩展if m==1 %以area_eyechart1.bmp为测试图象imdstname=strcat('area_eyechart1','.',imsrcnameext);%污染图象文件名,可修改elseif m==2%以area_eyechart2.bmp为测试图象  imdstname=strcat('area_eyechart2','.',imsrcnameext);%污染图象文件名,可修改end%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%iminfo=imfinfo(strcat(imsrcnamehead,'.',imsrcnameext));%源图象信息读取imsrc=imread(strcat(imsrcnamehead,'.',imsrcnameext));%源图象读取imdst=imread(imdstname,imsrcnameext);%污染图象读取doubleimsrc=double(imsrc);%转换为浮点类型doubleimdst=double(imdst);%转换为浮点类型%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%源图象和污染图象读取W=iminfo.Width;%图象度H=iminfo.Height;%图象高%///////////////////PSNR计算/////////////////////////////////if PSNRenable==1PSNR=0.0;%PSNR赋初值for j=1:H  for i=1:W      PSNR=PSNR+double((doubleimsrc(j,i)-doubleimdst(j,i))*(doubleimsrc(j,i)-doubleimdst(j,i)));  endendPSNR=PSNR/W/H;PSNR=10*log10(255*255/PSNR)%////////////////////PSNR计算完毕//////////////////////////////////end%///////////////////模糊系数KBlur计算/////////////////////////////////if KBlurenable==1Sin=0.0;%Sin赋初值Sout=0.0;for j=2:H-1  for i=2:W-1      t=doubleimsrc(j-1,i+1)+doubleimsrc(j+1,i-1)-doubleimsrc(j-1,i-1)-doubleimsrc(j+1,i+1);      if t<0 t=-t;      end      Sin=Sin+t;%源图象邻域边缘能量计算      t=doubleimdst(j-1,i+1)+doubleimdst(j+1,i-1)-doubleimdst(j-1,i-1)-doubleimdst(j+1,i+1);      if t<0 t=-t;      end      Sout=Sout+t;%污染图象邻域边缘能量计算  endendKBlur=Sout/Sinend%////////////////////KBlur计算完毕//////////////////////////////////////// %///////////////////质量指数Q计算//////////////////////////////////////////if Qenable==1Q=0.0;%Q赋初值Qnum=0;%图象以7X7块大小计算每块的Q,逐象素的移动块窗口,这里Qnum为块数量的计数for j=4:H-3  for i=4:W-3      midsrc=0.0;      middst=0.0;      varsrc=0.0;      vardst=0.0;%源图象和污染图象块内的平均值和方差赋初值      varsrcdst=0.0;%源图象和污染图象块内的协方差赋初值      for n=-3:3          for m=-3:3              midsrc=midsrc+doubleimsrc(j+n,i+m);              middst=middst+doubleimdst(j+n,i+m);          end      end      midsrc=midsrc/49;      middst=middst/49;      %源图象和污染图象块内的平均值计算      for n=-3:3          for m=-3:3             varsrc=varsrc+(doubleimsrc(j+n,i+m)-midsrc)*(doubleimsrc(j+n,i+m)-midsrc);             vardst=vardst+(doubleimdst(j+n,i+m)-middst)*(doubleimdst(j+n,i+m)-middst);             varsrcdst=varsrcdst+(doubleimsrc(j+n,i+m)-midsrc)*(doubleimdst(j+n,i+m)-middst);          end      end      varsrc=varsrc/48;      vardst=vardst/48;      varsrcdst=varsrcdst/48;      if ((varsrc+vardst)*(midsrc*midsrc+middst*middst))~=0 %分母不为零的块才计算质量指数Q      Q=Q+4*varsrcdst*midsrc*middst/((varsrc+vardst)*(midsrc*midsrc+middst*middst));      %源图象和污染图象块内Q计算完毕      Qnum=Qnum+1;%块计数加1      end  endendQ=Q/Qnumend%////////////////////质量指数Q计算完毕/////////////////////////////////////end%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%图象质量计算完毕

参考文献

[1]袁飞,黄联芬,姚彦,视频质量客观评价技术研究,标准、检测与仪器,2007(3):91-94

[2]黄文辉 ,陈仁雷 ,张家谋,数字视频图像质量客观测量方法的改进与实现,北京邮电大学学报,2005(4):87-90

[3]Zhou Wang, Hamid R.Sheikh , Alan C. Bovik,Objective video quality assessment(Chapter 41 in The Handbook of Video Databases: Design and Applications)., CRC Press, 2003(1041-1078)



参考博客:http://blog.csdn.net/droidpioneer/article/details/6612441

0 0
原创粉丝点击