首先,JPEG是有损压缩,且这种压缩可迭代,(肉眼看不出差别,但是图像的大小有差别)
import cv2
img1 = cv2.imread('imgresize1.jpeg')
img2 = cv2.resize(img1,(256,256))
cv2.imwrite("imgresize2.jpeg",img2)
如果我用这种方式保存图像的话,默认的压缩参数是95,
原图是1460KB,一次压缩变成46KB,再次变成15KB,即使后两者的图像分辨率都是256*256
正确的操作是把最后一句变成:
cv2.imwrite("imgresize3.jpeg",img2,[int(cv2.IMWRITE_JPEG_QUALITY), 100])
------------------------------------------------------------------------
其次,JPEG的压缩方式,是将图像分成许多个8*8的小block,对每一个block做DCT离散余弦变换,丢失大量高频信息。
(低频部分集中在每个8*8块的左上角,高频部分在右下角,所谓JPEG的有损压缩,损的是量化过程中的高频部分)
因此,在SRGAN 生成的过程中,观察到许多细小的artifact,如下图: