主要内容

比较无参考图像质量指标

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

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

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

  • NIQE -自然图像质量评估器

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

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

评估单个图像对变化压缩的响应

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

将图像读入工作区。

我= imread (“llama.jpg”);

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

jpegQuality = 10:10:100;numObservations =元素个数(jpegQuality);compressedFrames =细胞(1、numObservations);numObservations = 1:numObservations q = jpegQuality(ind)tempFile = [“llama_compression_”num2str (q),“jpg”];tempFile imwrite (im,“质量”问);compressedFrames{印第安纳}= imread (tempFile);结束

检查压缩的图像。

tiledlayout(1、3);h1 = nexttile;imshow (compressedFrames{1})标题(的JPEG质量:10) nexttile imshow(压缩帧{7})“JPEG质量:70”) title(标题)输入图像的) linkaxes

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

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

h1。XLim = [650700];h1。YLim = [490550];

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

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

pQ = 0 (1, numObservations);nQ = 0 (1, numObservations);bQ = 0 (1, numObservations);bQ(ind) = brisque(compressedFrames{ind});nQ(印第安纳州)= niqe (compressedFrames{印第安纳});pQ(印第安纳州)= piqe (compressedFrames{印第安纳});结束

随着JPEG质量的增加,可视化指标的得分。将分数归一化,使每个分数对于未压缩的图像具有相同的值。对于这三个指标,较低的分数对应较高的图像质量。

JPEG质量的BRISQUE分数为50、60和70,比未压缩JPEG图像的BRISQUE分数低得不现实。因此,对于类似于此测试图像的图像,NIQE和PIQE是更可靠的度量。

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

Figure包含一个轴对象。坐标轴对象包含3个类型为line的对象。这些物体代表活泼、NIQE、PIQE。

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

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

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

vidObjR = VideoReader (“rhinos.avi”);vidObjW = VideoWriter (“varyingCompressed.avi”);打开(vidObjW)

创建一个可变压缩比计划来模拟实时的可变比特率传输

numFrames = vidObjR.NumFrames;varyingQuality =罪(2 *π* (1:numFrames) * 0.01);varyingQuality =圆(重新调节(varyingQuality) * 100);varyingQuality = max (varyingQuality, 1);JPEG质量的% min为1图绘制(varyingQuality);标题(“JPEG质量计划”);ylabel (“JPEG质量”)包含(“帧索引”

Figure包含一个轴对象。标题为JPEG质量进度的轴对象包含一个类型为line的对象。

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

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

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

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

Figure包含一个轴对象。轴对象与标题趋势的质量指标与变化的压缩和内容包含4个类型线的对象。这些对象代表BRISQUE、NIQE、PIQE、Compression Ratio。

另请参阅

|||||

相关的话题