图片压缩
# 图片压缩
# 图像压缩过程
# JPG
JPEG格式图像编解码 (opens new window)
影像算法解析——JPEG 压缩算法 (opens new window)
JPEG压缩算法的过程有:
色彩模型变换(bitmap的RGB转YUV),离散余弦变换、量化、Z字形编码、游程编码、Huffman编码
“优化” JPEG压缩的一些方式 (opens new window)
1 开启霍夫曼压缩
# 2 量化表的改进:
PEG算法提供了两张标准的量化系数矩阵,分别用于处理亮度数据Y和色差数据Cr以及Cb。
- 普通压缩 JPEG 与 量化压缩 JPEG 的质量差别(图 1 vs 图 2,目前还没有看见国内的图片服务支持 JPEG 的自动量化压缩)
- 自适应量化表的 JPEG 压缩技术 (opens new window)
# PNG
png=调色板+索引.
调色板可以有4字节/3字节/1字节,对应1600 万色到只有 256 色.
一般来说,ps导出一个32bit/24bit的png图,传到tinypng压缩后,会变成8bit:
png算法本身是无损的,但是如果通过降低调色板色值来压缩是就是有损的了.
# 像素格式
PNG也支持很多种类型的像素格式,你可以选择一种最佳的:
- Indexed(索引色) = 1个频道,可以为1,2,4,8 bpc
- Grayscale(灰度) = 1个频道,可以为1,2,4,8,16 bpc
- Gray+Alpha(带透明通道的灰度) = 2个频道,可以为8或16 bpc
- Truecolor(RGB 真彩色) = 3个频道,可以为8或16 bpc
- RGBA(RGBA 带透明通道的真彩色) = 4个频道,可以为8或16 bpc
# GIF
庖丁解牛:GIF图片原理和储存结构 (opens new window)
# 图像质量评价
参考
无参考评价图像质量(主观评价客观化) (opens new window)
指标/维度:
此处不关注图片本身质量,只关注jpg压缩过程中量化表所得压缩质量
# 1 单图质量评价
# 量化相关的质量
已知图像和量化表,反向估算量化因子,得到图片质量的估计值.
可使用库: https://github.com/sephiroth74/Android-Exif-Extended 里的
int jpeg_quality = exif.getQualityGuess()
# 工业上可用的两个质量评价指标
亮度: 计算平均亮度或者ROI的平均亮度, 绝对值可用.
模糊程度(高斯模糊): opencv的拉普拉斯算子计算可得.可用于相对比较.
# 压缩前后质量比对评价
# Butteraugli
Butteraugli 项目是一个图片差异比较库,用于测试图片的心理视觉误差阈值,即查看者开始注意到图片质量下降的点。换句话说,此项目试图量化您的压缩图片的失真程度。
# SSIM (Structural SIMilarity) 结构相似性
PNSR一般用于视频质量快速评价 图像质量评价指标之 PSNR 和 SSIM (opens new window)