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

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


这是正确的做法吗?即由于无损压缩会生成非常详细的图像,因此由锯齿引起的伪影会更加明显,因此尽管使用了正确的压缩方法,但可能会找到平衡点,尽管这会损害图像质量。 >
我刚刚将此JPEG保存在mspaint中(3.46KB): br />


这里是相同的JPEG,压缩率为50%(注意大小不同,为1.29KB):



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



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



评论

只是好奇,您想要jpg的原因是什么,文件较小吗?如果可以帮助您解决特定情况,您是否了解dxt压缩或距离场纹理?

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

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

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

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

#1 楼

JPEG压缩涉及三个主要步骤:色度二次采样。图像从RGB转换为YCbCr色彩空间,其中亮度或亮度(Y)与色度或色彩分量Cb和Cr分开存储。 Y分量保持全分辨率,但Cb和Cr降采样,通常在每个轴上降为一半分辨率。这利用了这样一个事实,即人类视觉系统对亮度的精细细节要比对颜色的细节更为敏感。
频率量化。通过将Y,Cb和Cr图像分解为8x8的块并将离散余弦变换(傅里叶变换的变体)应用于每个块,可以将它们转换为频率表示。结果是一个数字矩阵,该数字矩阵描述了块中不同空间频率的幅度。然后可以对这些数字进行量化(四舍五入为选定的精度位数)。不同的量化级别用于不同的频率,这利用了我们的视觉系统对高频的较低灵敏度。这是JPEG编码器质量设置起作用的地方:较低的质量使用较粗糙的量化。
熵编码。量化的DCT值通过熵编码器传递,熵编码器通过使用较少的比特来表示更常见的值(类似于zip文件),无损地压缩比特流。步骤1和2是有损的一个,并且每个都产生自己的工件类型(尽管有一些重叠)。色度二次采样趋于使不同颜色区域之间的锐利边缘模糊。这在矢量艺术中尤为明显,在矢量艺术中,鲜艳的形状会在其边缘缠结出锯齿状的锯齿。频率量化通常会使精细细节模糊,并且还会在低质量设置下创建块状伪像,因为DCT是逐块进行的。在文字上特别明显。

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

评论


$ \ begingroup $
非常感谢您对内森+1的详细解释。我知道压缩算法对于JPEG有其局限性,但我只是想了解压缩量与其他选项(在保存时)是否存在适当的平衡,这些选项可使伪像变得不太明显。我用样本编辑了问题。
$ \ endgroup $
–脚掌
15年8月5日在10:51