创建JPEG时,如何最大程度地减少伪像的出现?


10

创建JPEG图像时,似乎有两个主要因素导致数字伪像:混淆和压缩。

例:

将带有字符的PNG转换为JPEG或将矢量图像放置在照片上,将导致其边缘像素化。抗锯齿通常会在其周围产生一种模糊,但是如果图像进行有损压缩,则部分细节也会丢失,因此模糊和像素化可能会变得不太明显。

这是正确的做法吗?即,由于无损压缩会生成非常详细的图像,因此因混叠而产生的伪影会更加明显,因此尽管会损害图像质量,但通过使用正确的压缩可以找到平衡点。

编辑

我只是将此JPEG保存在mspaint(3.46KB)中:

无损

这是具有最大压缩率(最低质量,0.5KB)的相同JPEG:

有损的

这是具有50%压缩率的相同JPEG(注意大小差异为1.29KB):

半无选择

相同的50%压缩率,但保存为“渐进JPG”,保留了原始EXIF和XMP数据,并“尝试以原始JPG质量保存”(您会注意到周围没有灰色像素,为2.96KB):

半选项

最后与禁用色度二次采样的文件相同(文件大小为2.96KB):

半色度


1
只是好奇,您想要jpg的原因是什么,文件较小吗?如果它可以帮助您解决特定情况,您是否知道dxt压缩或距离场纹理?
艾伦·沃尔夫

1
我不清楚您的问题是什么。您是否想知道使用JPEG压缩是否很好?您是否想知道哪种图像可以使用JPEG很好地压缩?或者,您是否已经在使用JPEG,并且想知道如何创作图像以最大程度地减少JPEG引起的伪像?
Mokosha

@AlanWolfe我遇到过几次只能使用JPEG的情况(主要是在Web应用程序中),这就是为什么我需要将其以JPEG格式使用。谢谢,但是我对dxt压缩或距离场纹理不熟悉,从我在Wikipedia中看到的情况看,dxt算法与JPEG中使用的算法不同,您是说它们可用于创建JPEG吗?
Armfoot

@Moshoka谢谢,它与您的最后一个问题更相关:如何最大程度地减少JPEG图像中的伪像带来的“视觉影响”?
Armfoot

请记住,mozjpeg压缩器有一个特殊的技巧,可以减少这类图像的失真。(而且通常比通常的jpeg编写器更有效。)您是否尝试过?
显示名称

Answers:


9

JPEG压缩涉及三个主要步骤:

  1. 色度二次采样。图像从RGB转换为YCbCr颜色空间,其中亮度或亮度(Y)与色度或颜色分量Cb和Cr 分开存储。Y分量保持全分辨率,但Cb和Cr降采样,通常在每个轴上降为一半分辨率。这利用了这样的事实,即人类视觉系统对亮度的精细细节比对颜色的细节更为敏感。

  2. 频率量化。通过将Y,Cb和Cr图像分解为8x8的块并将离散余弦变换(傅里叶变换的变体)应用于每个块,可以将它们转换为频率表示。结果是一个数字矩阵,该数字矩阵描述了块中不同空间频率的幅度。然后可以对这些数字进行量化(四舍五入为选定的精度位数)。不同的量化级别用于不同的频率,这利用了我们的视觉系统对高频的较低灵敏度。这是JPEG编码器质量设置起作用的地方:较低的质量使用较粗糙的量化。

  3. 熵编码。量化的DCT值通过熵编码器,该熵编码器通过使用较少的比特来表示更常见的值(类似于zip文件)来无损地压缩比特流。

第1步和第2步是有损的,每个步骤都会产生自己的伪像类型(尽管有一些重叠)。色度二次采样趋于使不同颜色区域之间的尖锐边缘模糊。这在矢量艺术中尤为明显,其中色彩鲜艳的形状在其边缘拾取了锯齿状的锯齿。频率量化通常会使精细细节模糊,并且还会在低质量设置下创建块状伪像,因为DCT是逐块完成的。它在文本上特别明显。

这就是为什么JPEG通常不用于包含矢量图形或文本的图像的原因-尽管这些压缩算法非常适用于照片和其他纹理复杂且边缘不太尖锐的图像,但它的压缩算法不适用于那些情况。


非常感谢您的详细说明Nathan +1。我知道压缩算法对于JPEG有其局限性,但是我只是想了解压缩量与其他选项(在保存时)是否存在适当的平衡,从而可以减少工件的影响。我用样本编辑了问题。
Armfoot
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.