主要内容

比较无参考图像质量指标

这个例子展示了如何比较各种盲或无参考图像质量指标的性能。

评估图像质量是图像采集、压缩和其他图像增强工作流程的重要组成部分。我们希望有一种快速的、自动化的度量标准,能够密切模仿图像质量的主观度量标准。这个例子比较了三个无参考质量度量的性能。

  • BRISQUE -盲/无参考图像空间质量评估器

  • 自然图像质量评估器

  • PIQE -基于感知的图像质量评估器

每个指标都有不同的强度,这取决于数据集中的图像。要为数据选择最佳指标,可以在示例图像数据上比较这三种指标的性能。这个例子展示了如何在两种不同的情况下比较性能:对单个图像和视频流进行不同级别的JPEG压缩。

评估单个图像对不同压缩的响应

图像压缩是视觉质量和压缩比(或输出数据大小)之间的权衡。这种权衡也取决于图像内容。例如,具有统一区域的图像可以压缩为更小的文件大小,并且比具有详细特征的图像显示更少的工件。图像质量指标可以帮助分析这种权衡,同时尽量减少图像内容对分析的影响。

将图像读入工作区。

Im = imread(“llama.jpg”);

用不同的JPG压缩比编写图像副本。将每个压缩图像读入工作区。

jpegQuality = 10:10:100;numObservations = numel(jpegQuality);compressedFrames = cell(1,numObservations);ind = 1:numObservations q = jpegQuality(ind);tempFile = [“llama_compression_”num2str (q),“jpg”];tempFile imwrite (im,“质量”问);compressedFrames{ind} = imread(tempFile);结束

检查压缩图像。

tiledlayout(1、3);H1 = nexttile;imshow (compressedFrames{1})标题(JPEG质量:10nexttile imshow(compressedFrames{7})'JPEG质量:70'nexttile imshow(im)输入图像的) linkaxes

图中包含3个轴对象。标题为JPEG质量:10的坐标轴对象1包含一个图像类型的对象。标题为JPEG质量:70的坐标轴对象2包含一个image类型的对象。标题为Input Image的坐标轴对象3包含一个Image类型的对象。

放大压缩图像以查看某些特定工件的性质。在JPEG质量为10时,阻塞工件是很明显的。

h1。XLim = [650 700];h1。YLim = [490 550];

图中包含3个轴对象。标题为JPEG质量:10的坐标轴对象1包含一个图像类型的对象。标题为JPEG质量:70的坐标轴对象2包含一个image类型的对象。标题为Input Image的坐标轴对象3包含一个Image类型的对象。

对于每个压缩的JPG图像,使用三个质量指标计算质量分数。

pQ = 0 (1, numObservations);nQ = 0 (1, numObservations);bQ = 0 (1, numObservations);ind=1:numObservations bQ(ind) = brisque(compressedFrames{ind});nQ(ind) = niqe(compressedFrames{ind});pQ(ind) = piqe(compressedFrames{ind});结束

随着JPEG质量的提高,可视化度量的分数。规范化分数,使每个分数对于未压缩的图像具有相同的值。对于这三个指标,较低的分数对应较高的图像质量。

JPEG质量为50、60和70的BRISQUE分数比未压缩的JPEG图像低得离谱。因此,对于与此测试图像相似的图像,NIQE和PIQE是更可靠的指标。

图保存情节(jpegQuality bQ / bQ(结束),“* - - - - - -”);情节(jpegQuality nQ / nQ(结束),“* - - - - - -”);情节(jpegQuality pQ / pQ(结束),“* - - - - - -”);传奇(“BRISQUE”“NIQE”“PIQE”);ylabel (“度量值”)包含(“JPEG质量”)举行

图中包含一个轴对象。axis对象包含3个line类型的对象。这些对象分别代表BRISQUE、NIQE、PIQE。

使用视频评估对不同压缩和内容的响应

在流媒体视频等应用程序中,需要在可能无法访问原始样本的接收器处评估质量指标。此外,每个帧的内容可能有很大差异。让我们模拟这样一个场景来评估这些指标的性能特征。

创建一个VideoReader对象,从视频中读取帧“rhinos.avi”.这个视频有114帧。

vidObjR =视频阅读器(“rhinos.avi”);vidObjW = VideoWriter(“varyingCompressed.avi”);打开(vidObjW)

创建一个可变压缩比调度来模拟实时可变比特率传输

numFrames = vidObjR.NumFrames;varyingQuality = sin(2*pi*(1:numFrames)*0.01);varyingQuality = round(rescale(varyingQuality)*100);varyingQuality = max(varyingQuality,1);% min JPEG质量为1图绘制(varyingQuality);标题(JPEG质量表);ylabel (“JPEG质量”)包含(“帧索引”

图中包含一个轴对象。标题为JPEG Quality Schedule的axes对象包含一个line类型的对象。

对于视频中的每一帧,根据JPEG质量时间表压缩帧。计算压缩帧的度量,并将压缩帧添加到输出视频中进行验证。

pQ = 0 (1,numFrames);nQ = 0 (1,numFrames);bQ = 0 (1,numFrames);Ind = 1;hasFrame(vidObjR) im = readFrame(vidObjR);根据计划压缩它tempFile =“rhinos_compressed_frame.jpg”;tempFile imwrite (im,“质量”varyingQuality(印第安纳州));frame = imread(tempFile);writeVideo (vidObjW框架);bQ(ind) = brisque(框架);nQ(ind) = niqe(帧);pQ(ind) = piqe(帧);Ind = Ind +1;结束关闭(vidObjW);

可视化趋势,期望它模仿压缩计划。重新调整度量以关注趋势,并反转质量计划以获得压缩比趋势。质量度量仍然可以在不访问原始参考框架的情况下给出感知质量的有用指示。

图保存情节(重新调节(bQ));情节(重新调节(nQ));情节(重新调节(pQ));反转JPEG质量以获得压缩比情节(1-rescale (varyingQuality),“k”“线宽”2)传说(“BRISQUE”“NIQE”“PIQE”的压缩比);标题(“不同压缩和内容的质量度量趋势”);ylabel (“度量值”)包含(“帧索引”)举行

图中包含一个轴对象。标题为“不同压缩和内容的质量度量趋势”的轴对象包含4个类型为行的对象。这些对象代表BRISQUE, NIQE, PIQE,压缩比。

另请参阅

|||||

相关的话题