同一张图,同一像素,如何分辨图片质量?

知乎日报 野合菌 232℃ 评论

同一张图,同一像素,如何分辨图片质量?

图片:Yu Wang / CC BY

野合菌,Θ??Θ 蛤?蛤!

简单的说,JPEG 属于有损压缩格式,一般压缩率越高,损失的信息就越多。

JPEG 不是按像素点来存储图片的,而是通过波的叠加。

JPEG 的算法的核心就是通过在图片的频率空间(frequency domain)减少不重要信息(特别是高频率信息)来实现的。当然,就算是不重要的信息,减少信息必然会引入噪声,使图像质量下降。

例如下面几张图,星星越少压缩率越高,图片大小越小的同时图片质量越差。你可以看到下图中,星星少的图片相对的边缘会更加模糊。当然,在一定的压缩率下肉眼是无法直接发觉画质的降低的(例如三星和四星)。

关于频率空间

所谓的频率空间,就是将图片进行二维离散傅里叶变换(2DDFT)得到的图片。当然,一般的 DFT 得到的都是复数,而 JPEG 使用的 2DDCT 得到的都是实数,光是这样就可以通过微量损耗大幅减少空间使用。

再来看你的这些图:

耳机少女.jpg 156.57KB
耳机少女2.jpg 152.60KB
耳机少女3.jpg 52.21KB

三张图同样显示:
宽度 480 像素
高度 640 像素
水平分辩率 72 DPI
垂直分辩率 72 DPI
位深度 24
帧数 1

例如这张(为了方便我转了单色,彩色图片一般可以作为 RGB3 张图考虑)

在频率空间中大概长这样:

当然,稍微简单点,频率单一的图例如这个

在频率空间就是这样的

所以细节越多越难压缩

如果细节比较少,本身要缩率就可以极大提高

关于引入噪声

删掉频率空间中的信息会引入噪声,删的越多噪声越大。

把你的图片反色后 exposure 增加后发上来,你可以发现本来空白的地方其实是并不是真正的空白,这些本来数值为 0 的区域被噪音充满,就是压缩失真的证据之一。当然,这样压缩肉眼也是无法直接发现的。

再把图一和图三取差值后和白色 hard mix 一下,可以发现两图在高频区域其实有很大的不同。图三的压缩率比图一大,所以两者噪声的区别也就非常大。不过很可见,不做处理肉眼是很难区分的。

这样的压缩算法同样存在于:

视频,高清和渣画质的区别。

MP3 文件,高音质和低音质的区别。

关于频率空间压缩

这里简单粗暴的解释一下。

再看这张图和它的频率空间,仔细看可以发现这个频率空间是 180 度中心对称的!因为这个对称,所以一般频率空间压缩可以直接无损减少一半的图片大小。

虽然你这个图片本身已经压缩过,但我不妨来阉割掉更多一些频率空间来看看效果。

先来涂黑一小圈,从面积上这起码已经裁剪了一半信息了,但是你可以看到图片的质量并没有特别大的影响:

再裁掉一圈,从面积上这起码已经裁剪了>4/5 的信息了,但是你可以看到图片的质量的影响并不大(可以点开看大图):

再裁掉更多,从面积上这起码已经裁剪了>14/15 的信息了,但是你可以看到图片的质量的影响非常大,但是明显不影响辨认(可以点开看大图)。此外,图片高对比的周围出现了波纹样的噪音,这是 JPEG 噪音的主要特征之一:

最后我就留一点点(按面积大约小于 3%)信息,图片的特征已经逐渐淡去,但是勉强还可以辨认,通过后期处理甚至有希望恢复:

当然到一定程度,已经完全无法识别了。

大概就是这样。

转载请注明:微图摘 » 同一张图,同一像素,如何分辨图片质量?

喜欢 (0)or分享 (0)
发表我的评论