计算机视觉life”,选择“星标”
快速获得最新干货
本文来源于抖音多媒体评测实验室,文章仅用于学术分享。
什么是图像质量
图片和视频作为信息载体已经变得越来越重要,于是图像质量的评估变成了一个广泛又基础的问题。
对于图像质量有两种定义。
定义一:不同成像系统采集,处理,储存,压缩,传输信号的准确度。
定义一:不同成像系统采集,处理,储存,压缩,传输信号的准确度。
定义二:符合人眼感知的角度评价图像质量:图像所有视觉上重要属性的加权混合。
定义二:符合人眼感知的角度评价图像质量:图像所有视觉上重要属性的加权混合。
定义一是从信号处理的角度,关注成像系统中信号的准确性。
定义二是从人眼视觉的角度,关注观测者的感受,审美水平不同的观测者,反馈的结果也不同。
那么从图像质量的定义上,就引申出了两种图像质量的评测方法,客观评价和主观评价。
与图像质量相关的产品,评测方式都已经从单纯的客观评价转化为主客观相结合的评价算法。尤其是注重观者感受的领域,主观评价的权重已经超过客观评价的权重。比如手机,无人机,美颜/滤镜等算法……
其中在手机行业鼎鼎有名的DXO mark,也是通过主客观结合的方式进行打分。
主观评价以人作为观测者,最重要的优势是能够真实的反映人的视觉感知,要知道人类的视觉感知系统相当复杂,一部分指标甚至涉及到心理学。
客观评价方法借助于某种数学模型,给出基于数字计算的结果。可重复,可量化。缺点是场景相对固定,不易对复杂场景进行打分。另外有些指标与人类视觉感知不匹配,这也是制定行业标准的协会(IEEE/ISO)成员正在改进的方向。
*本文测试方法主要应用在 对成像系统的整体或部分进行评价。
客观评价
传统的客观评价方式比较固定,并且需要较为严苛的光源与测试环境。
测试流程基本可以概括为三个部分:
拍摄图卡(特定光源)→输入测试软件→测试结果
展开全文
可以看到除去拍摄图卡部分,其余两个过程是很容易实现自动化的。
所以客观评价的目标是用计算的方式代替人类视觉系统去观看和认知图像。只要通过不同的测试卡和光源组合,就可以实验室中模拟各种环境,并且得到可信的测试结果。
目前世界上主流的测试系统有三家:imatest,DXO和Image Engineering。
三个测试系统测试覆盖的内容基本相同,测试方法和图卡有各自的优势。
下面介绍一些客观评价中常用的维度和测试方法,帮大家快速了解客观评价是怎么进行的。
清晰度
所有用户拿到一张照片或者看到一段视频的时候首先看到的是照片清楚不清楚,几乎在所有成像系统中清晰度(解析力)都是第一重要的维度。如何评价一个成像系统的解析力也是大家一直在探讨的问题。常见的清晰度指标有MTF,SFR,TVline。
MTF
MTF,Modulation Transfer Function。中文为调制传递函数。在各个摄像头镜头中经常采用MTF描述镜头的MTF曲线,表明镜头的能力。这些曲线是通过理想的测试环境下尽量减少其它系统对镜头的解析力的衰减的情况下测试得出的。 当然,MTF也可以涵盖对整个成像系统的解析力评价。
为了让大家快速感知MTF是什么,举一个大家非常熟悉的例子。下图是视力检测的图卡。清晰的图像,黑白边界分明,模糊的图像,黑色白色混在一起,黑色似乎变淡了。如果我们把视力的测量对应到对镜头解析力的测量,视力表就变成了线对,最初的MTF测量就是通过测试不同频率的线对实现的。
线对图的上部分为理想图像,下半部分为模拟的实拍的图像。
其实这个线对大家都见过,每周二没有电视节目的时候,都会用一张图卡代替。而这张图卡,就包含了MTF测试内容。
MTF是通过找线对中最大亮度点和最小亮度点的对比度来计算的。
计算公式为MTF=(最大亮度-最小亮度)/(最大亮度+最小亮度)。
所以MTF的计算不会出现大于1的情况。
当我们测试了很多不同频率下的MTF值,通过将这些值和空间频率进行一一的对照,也就知道了在什么频率纹理下的解析能力如何。
对于MTF的概念,讲到这里相信大家有了一个初步的概念。那么MTF通常的门限是什么呢?
视力表中,当我们将将能看清E开口方向的时候,会去查对应的视力数值来表示我们的视力。MTF也是类似,MTF“看清开口”的标准一般是跌落至50%或30%,此时去查对应频率,这个频率越高,表明清晰度越好。
通常,会以MTF50 or MTF30会作为清晰度的指标。
指标名称
描述
评价
MTF50/30
MTF50/30是当MTF数值下降至最大值的50%/30%时,对应的频率。
随着软件锐化程度的提高而增加;可能会产生误导。
MTF50P/30P
MTF50P/30P是当MTF从峰值(MTF>1)下降至的50%/30%时,对应的频率。
MTF怎么又能大于1了,这个我们在SFR里面讲,MTF50p这个值主要是为了降低锐化带来的影响。
另外这里需要补充一点。由于图片分辨率的限制,一个黑白线对,最少也要两个像素才能表示,所以一个像素为0.5周期。0.5cycles/pixel即为奈奎斯特频率。如果MTF50的频率大于了奈奎斯特频率,那么在实际图像中,这个频率的细节会出现混叠,而不是真正达到MTF=50的清晰程度。
上图是imatest测试出来的MTF结果,细心的同学可能发现了,这个MTF的结果是通过SFR图卡得到的。说好的线对在哪里?其实由于线对图卡的种种缺点,(个人感觉主因是图卡精细度要求太高)。已经被其他计算方式代替了。既然这里用到了SFR图卡,那么我们继续来说SFR。
SFR
SFR(Spatial Frequency Response)空间频率响应,是用于测量随着空间频率的线条增加对单一影像的所造成影响。简而言之SFR就是MTF的另外一种测试方法。这种测试方法在很大程度上精简了测试流程。SFR的最终计算是希望得到MTF曲线。SFR的计算方法和MTF虽然不同但是在结果上是基本一致的,也就是说得到了SFR的值,就有了MTF。
图像清晰度国际测量标准中(ISO12233),给出了五种测试图卡。第一张TVline 直接人眼读取。另外四种均是通过计算SFR来获得MTF。这五张图卡如下:
1.斜边法
上图中第二到第四张图卡,都是斜边法的计算方式。它只需要一个黑白的斜边即可换算出约略相等于所有空间频率下的MTF。
其中核心的计算步骤:
SFR是通过对斜边进行超采样,得到一条更加细腻的黑白变换的直线(ESF)。边缘扩展函数ESF(Edge Spread Function)。大家可以把下面的图想象成一条线。
之所以SFR的测试图是一张斜边,是希望通过斜边中的多条线进行超采样,得到一条灰度变换更加平滑的线。这样减少在后面进行频域转换之后值上的误差。
然后通过这条直线求导,得到变化率(LSF)。然后对将这个变化率进行傅里叶变换就能得到SFR。
这里回答一个问题,为什么用斜边法测量的MTF会大于1。
因为图像被锐化后,超采样得到的ESF不是平滑的,图像的边界会有明显的rining现象存在。正是由于过度锐化现象,使得MTF大于1。
左侧为正常图像,右侧为过度锐化对应图像(大概30%的过度锐化)。
2.西门星图
这个图卡的计算方式类似线对,ISO提供了对应的公式将星图转换为线对。从而推导出MTF 或SFR。
这种计算方式的好处是可以看到各个方向的MTF。
并且不易被锐化影响。
3.利用NPS(噪声功率谱)计算MTF——枯叶图:
枯叶图MTF,有一种叫法叫texture MTF。
用枯叶图计算出来的MTF,与其他模式(尤其是倾斜边缘)相比,它们受边缘锐化的影响较小,因此可以提供纹理细节的估计值,这些估计值与感知观察的相关性更好。
*NPS为噪声ACF的傅里叶变换
理论公式为SF =MTF^2 *SG
SG输入信号的NPS
SF输出信号的NPS
TVline
TVline 就比较易于理解了,可以肉眼就可以读数得到,并且可以直接转换成MTF。
由于无法自动化读数,现在基本上已经被淘汰了。
ISO文档里的图例:虚线以上的认为是清晰的部分,虚线以下认为模糊。
acutance —— 由MTF衍生出来的计算方式
MTF已经能够反映清晰度的情况。但仍然存在不符合人眼感知的情况。于是ISO和IEEE两个组织均提出了新的指标:acutance。其公式中加入了人类视觉感知的参数。
简单来说就是两点。
1.观测距离和显示器参数。
2.人眼不同频率的细节感受不一致,对比敏感度函数CSF。
同时通过实验表明,当acutance超过0.8851后,大众将无法感知清晰度的提升(实际的观测距离不一定和标准一致,)。
*the CPIQ document defines an “ objective metric ” ( OM = 0.8851 – acutance for acutance = 0.8851; OM = 0 otherwise) that increases with increasing blur. It claims that perceived quality does not improve for acutance greater than 0.8851. The result of a rather complicated equation shows that a change in OM of 0.02 (2%) corresponds roughly to 1 JND.
测量清晰度,通常有两个目标。量化清晰度且符合人眼感知,量化因锐化导致的artifact。
所以在客观评测中我们通常选用指标如下:
SFR:
acutance
MTF50/MTF50P
overshoot/undershoot
枯叶图:
acutance
MTF50/MTF50P
同时会将枯叶图和SFR的MTF曲线进行比较。
噪声
噪声的定义:成像系统中不想要的信号响应变化。
也就是说,不应该出现在图像里的内容,我们统统可以成为噪声。在大多数情况下,噪声被认为是质量下降。
噪声的分类维度很多。
按频率分:high/mid/low frequency noise
按颜色分:luma noise / chroma noise
按时空分:spatial noise / temporal noise
*仔细想下,这些分类其实都是为了方便后处理噪声。
还可以按噪声的形状:块状/椒盐噪声。按产生原因:sensor noise, power noise。
噪声的数学表达
噪声通常以RMS(标准差)噪声来衡量。测量噪声通常需要一些带有灰阶的图卡。以24色卡举例。
#19~#24为白到黑灰阶可以计算出图像不同intensity的噪声水平。
假设在计算#22色块噪声水平,
那么计算首先会对#22色块取均值,之后做标准差
取均值:
μ=1/n(∑Xi) ;i =1 ,n
标准差:
σ=((1/(n-1))*(Σ(μ-Xi)²);i=1,n
噪声的指标SNR信噪比
由于噪声和信号总是混在一起,如果一张图片去除噪声的同时也消除了信号,那么也不是优质的图像。所以为了评判图像的好坏,经常用SNR信噪比来表示。
刚才说我们用均匀的灰块图卡来测量噪声,也就是把灰块的均值当做理想的信号。
噪声就是该区域的标准差。
计算所选区域的SNR = 均值/标准差
我们一般用dB表示:
所以SNR(dB)= 20 log 10(S / N)。
SNR最显著的缺点就是容易被降噪算法作弊。一张SNR很高的图片可能涂抹严重。另外相同SNR的两张图,噪声感受可能差别很大。
Visual noise
SNR不能反映出观测者的噪声感知。相同的SNR,人眼噪声水平感受区别巨大。
为了解决这个问题。IE在ISO15739标准中提出了Visual noise来表示人眼对噪声的感知。
加入了三个参数。
1.观测距离和显示器参数。
2.人眼不同频率的噪声感受不一致,对比敏感度函数CSF。
3.人眼对彩噪和亮噪感受不一致,V = σL* + 0.852 σu* + 0.323 σv*
计算流程如下:
噪声的频谱
在噪声的分类中讲到,有按照噪声形态进行区分。实际上,噪声的形态也是非常重要的噪声指标。细碎的噪声更容易被人眼接受,甚至在一些胶片摄影玩家眼中适当的噪声增加了照片的质感。
下图是三种形态的噪声,很明显第一张图的噪声更容易被人眼接受。
imatest提供在噪声的测试中提供了噪声的频谱图。有助于我们分析噪声的频率,可能的情况下,高频噪声优于低频噪声。
色彩
除了印刷品/机器视觉/染色等严格依赖色彩准确性的领域。色彩的好坏已经无法单纯靠客观数值反应,而且还出现了调调饱和度,改改滤镜这种影响色彩准确性,反而更讨喜的现象。
于是在对成像系统的客观评价中,色彩通常不会设置严格的指标。主要通过主观感受来判断色彩好坏。
*这里需要注意,如果评价对象为图像算法或者成像系统中的某些模块(比如锐化,降噪,tonemapping),色彩不应发生明显变化。
我们一般描述一个颜色,除了用相近的自然景物代替(天蓝色,番茄色,橘色),还会说深浅(饱和度),明暗(明度),偏红还是偏绿(色调)。
饱和度,明度,色调也就构成了色彩的三要素。常见的色彩空间如HSV,HSL,每一个坐标轴也分别对应了一个色彩要素。
CIE Lab中的色差计算
建立色彩空间,是为了方便的表示色彩。那么有了两个颜色的坐标,就可以开始进行色差计算。
这时我们遇到了第一个问题,应该如何选择色彩空间。
标准的制定者考虑了两点。
1.色彩空间必须符合人眼视觉,能够比较线性的色彩。
2.要在设备无关的色彩空间中进行计算,不能因为换了个显示方式,影响色差计算。
于是CIE Lab就在这样的需求中诞生了。L表示亮度,ab分别表示色彩分量。
当时认为CIE Lab是一个如果均匀线性空间,于是初代的色差公式就是两个颜色在色彩空间中的欧式距离:
delta_Eab = sqrt(delta_L.^2 + delta_a.^2 + delta_b.^2);
delta_Cab = sqrt(delta_a.^2 + delta_b.^2);
其中delta E为整体色彩,deltaC 排除了亮度的影响(不计算L值)
之后色差公式在应用中逐渐被认识到一些缺点仍然存在。CIE 2000年又再次更新了标准。这次的公式更加符合人眼感知。
公式如下:
中间变量的计算过程被我省略了,只展示了最终的公式。有兴趣的同学可以到附录下载CIE 2000色差公式matlab函数。
LCH中的色彩三要素
我们在CIE Lab中已经得到了色差,能够表示色彩准确度。
如果再细分维度,要是能把色彩三要素都测量出来就好了。所以很方便的,我们把Lab转到LCH色彩空间。L值表示亮度,C表示chroma 饱和度,H表示色相hue。
直接相减。就得到了对应的delta Luma/Chroma/hue。
sRGB转换到CIE Lab /LCH
sRGB是设备相关的色彩空间,为能在显示器上正确的显示,sRGB经过了gamma的处理。所以要把sRGB转换成Lab,首先要抵消gamma的影响,然后转换到XYZ色彩空间,再由XYZ色彩空间转换到Lab。
X = r_gamma * 0.4124564 + g_gamma * 0.3575761 + b_gamma * 0.1804375
Y = r_gamma * 0.2126729 + g_gamma * 0.7151522 + b_gamma * 0.0721750
Z = r_gamma * 0.0193339 + g_gamma * 0.1191920 + b_gamma * 0.9503041
Xn = 0.95047; %95.047;
Yn = 1.0; %100.0;
Zn = 1.08883; %108.883;
l = 116 * labfun(Y/Yn) - 16;
a = 500 * (labfun(X/Xn)-labfun(Y/Yn));
b = 200 * (labfun(Y/Yn)-labfun(Z/Zn));
Lab2LCH
这部分比较简单。Lab中的L和LCH中的L值完全一样。
c = math.sqrt(a ** 2 + b ** 2)
h = (math.atan2(b, a) * 180 / math.pi + 360) % 360
h = h * math.pi / 180
色差公式计算,RGB转lab/LCH已经用excel做好了工具。后续文章会单独讲解并提供出来;
麦克亚当椭圆MacAdam Ellipsis
MacAdam建立了一个实验,其中训练有素的观察者以大约48 cd / m 2的固定亮度观察了两种不同的颜色。一种颜色(“测试”颜色)是固定的,但另一种颜色可由观察者调整,观察者被要求调整该颜色,直到它与测试颜色匹配为止。当然,这种匹配并不是完美的,因为人眼像任何其他乐器一样,准确性有限。MacAdam发现,观察者进行的所有匹配在CIE 1931色度图上都变成了椭圆形。在色度图上的25个点进行测量,发现图中椭圆的大小和方向根据测试颜色而有很大不同。下面的色度图显示了MacAdam为特定观察者测量的这25个椭圆。
通过这个实验,再次证明了detal E公式的一些缺点:不太符合人眼认知。
同时我们也得到了一些更重要的结论:
1.人眼对颜色的敏感性,不同颜色是不一样的。
2.如果将这个范围量化出来映射到Lab空间,全部以椭圆形呈现,且方向不一致。
那么如果我们想把颜色的误差限制在一个范围,那么这个范围在Lab上应该是椭圆形的。下面我们一起看看DXO的客观测试是怎么做的。
DXO色彩客观标准
DXO的色彩测试分为三个部分,色彩准确性,白平衡,色彩均匀性。其中均匀性与硬件强相关(color shading)这里不做介绍。
色彩准确性:
在dxo测试中,色差依然被定义在Lab空间下计算。
其中整体色差为主要参考值。
Delta E <8 被认为色卡颜色与理论颜色相似
Delta E<15 被认为色卡颜色与理论颜色不同,但可接受,供应商有自己的选择
Delta E>15 色彩还原效果很差,可能有曝光和白平衡问题
另外饱和度和色调的差异,DXO也在lab中进行表示计算。
彩度差:
色调差:
白平衡:
作为颜色保真的副产物,DxO的分析软件提供了一种白平衡的度量方法,白平衡误差的评估使用颜色保真度误差平均值和最大值(灰色块上的值),但是不包括黑色和白色。
Delta E <5 精确的白平衡
Delta E <8 正确的白平衡
Delta E <11 感知上存在错误,但是可以接受
Delta E >11错误的白平衡
另外除了delta E的标准,DXO也引入了类似麦克亚当椭圆的机制作为限制(门限没有引用国际标准,是DXO内部经验的积累总结)。限定了色差的方向。
报告色彩部分展示(数据为台湾厂商2017年的旗舰机型)
曝光
曝光和色彩一样,很难用客观参数来定义正确的亮度。下面这两张图,亮度差别很大,左图人像更优,但是白纸和衣服过曝。右图动态范围更好,但是人像稍暗。我们很难评价出哪幅图片的亮度更好。亮度还原准确,不一定感受也好。
18%灰卡
首先我们来谈谈怎么去准确还原亮度。
假设一个物体100%漫反射可见光,那在人类的眼中该物体就应该是绝对的白色。
如果一个物体0%反射可见光,拿在人类眼中,就应该是绝对的黑色。
如果我们把绝对黑色和绝对白色还原到8bit的图片里,那白色就是255,黑色就是0。
那中间亮度就是122。如果人眼对光线的感受也是线性的,那50%反射率的物体,就应该是中性灰。
不过通过实验测定,18%反射率的物体,才是人眼感知上的中间亮度。
于是在客观评价中,如果18%灰卡在图像中正好达到显示亮度范围的中间值,就被认为是准确的曝光。
全局对比度和局部对比度
对比度一般能代表图像中的明暗对比强弱。黑白对比强烈的图片,看起来更加通透,有冲击力。
Contrast ratio:
Global Contrast = (Lmax-Lmin)/(Lmax+Lmin)
下面两张图的全局对比度接近,但是感官上差异很大。是因为局部对比度的差异。
我们把一张图分为很多小块,分别计算每个小块的对比度再求和平均,就是局部对比度。
动态范围 dynamic range
通俗来讲,动态范围是用来里描述画面中从最暗的阴影部分到最亮的高光部分的光量强度分布范围。缺省情况下用分贝(db)表示,也可以用比特(bit)表示。例如描述一个场景说它的动态范围很广,意思就是说,这个场景中从阴影部分到高光部分之间的曝光数值相差很大,画面的对比度高,层次丰富。当你拍摄一张照片的时候,实际上有两个动态范围是你需要考虑的:第一个是你要拍摄的场景的动态范围,第二个是你的相机的感光元件的动态范围。
动态范围一般用透射式36阶动态范围卡测试。但是这张图卡设计的太过理想,如果测试设备没有对中性灰测光,或者一些hdr算法通过检测过曝区域大小动态改变包围曝光EV时,测试结果很难和主观对应。
所以在DXO评测中,通常使用结合实景的客观测试环境。
缺点不能量化图片的DR,只能量化当前环境的DR。
客观评价中,测试维度和测试方法仍然有很多局限待改进。
而且严重依赖实验室场景,无法对线上视频形成监控。只能应用在成像系统或者算法的评测中。
下篇文章会继续介绍主观评价。
附录:1.CIE 2000色差公式函数 matlab 链接
http://www2.ece.rochester.edu/~gsharma/ciede2000/dataNprograms/deltaE2000.m
独家重磅课程!
1、 重磅来袭!基于LiDAR的多传感器融合SLAM 系列教程:LOAM、LeGO-LOAM、LIO-SAM
2、系统全面的相机标定课程: 单目/鱼眼/双目/阵列 相机标定:原理与实战
3、视觉SLAM必备基础课程: 视觉SLAM必学基础:ORB-SLAM2源码详解
4、深度学习三维重建课程: 基于深度学习的三维重建学习路线
5、激光定位+建图课程: 激光SLAM怎么学?手把手教你Cartographer从入门到精通!
6、视觉+IMU定位课程 视觉惯性里程计58讲教程全部上线!IMU预积分/残差雅克比推导、边缘化约束、滑窗BA!
7、手把手图像三维重建课程: 系统学三维重建42讲全部上线!掌握稠密匹配、点云融合、网格重建、纹理贴图!
全国最棒的SLAM、三维视觉学习社区↓
技术交流微信群
投稿、合作也欢迎联系:simiter@126.com
扫描关注视频号,看最新技术落地及开源方案视频秀 ↓
— 版权声明 —
本公众号原创内容版权属计算机视觉life所有;从公开渠道收集、整理及授权转载的非原创文字、图片和音视频资料,版权属原作者。如果侵权,请联系我们,会及时删除。