如何高效压缩三色图片
How to compress three-color pictures efficiently
在我的应用中,有很多双色和三色图片。双色图片是黑白的,我把图片转成单色模式,从8位变成1位。三色图片是黑、白、红。有没有类似的把图片转成2bit的机制?
您似乎在寻找一种 indexed color 存储模型,具有 2 位索引值,因此每个字节存储 4 个像素。
来自链接的维基百科文章:
A 2-bit indexed color image. The color of each pixel is represented by a number; each number (the index) corresponds to a color in the color table (the palette).
另一种处理方法是将 3 色黑白红图像编码为两个 2 色图像:
- 一张黑白图像,其中 1 代表黑色
- 红色/非红色图像,其中 1 代表红色
例如,颜色可以映射如下:
- 黑色 -> (1, 0)
- 白色 -> (0, 0)
- 红色 -> (?, 1) 在哪里?可以是 0 或 1。
然后可以分别压缩/解压缩两个 2 色图像。 3色<->2色转换可以通过简单的像素过滤和组合操作进行。如果需要在 GPU 上完成转换,后者可能会有所帮助。
(这种表示的信息密度与Andreas的索引颜色存储模型相同,2位表示原图中的每个像素。)
在我的应用中,有很多双色和三色图片。双色图片是黑白的,我把图片转成单色模式,从8位变成1位。三色图片是黑、白、红。有没有类似的把图片转成2bit的机制?
您似乎在寻找一种 indexed color 存储模型,具有 2 位索引值,因此每个字节存储 4 个像素。
来自链接的维基百科文章:
A 2-bit indexed color image. The color of each pixel is represented by a number; each number (the index) corresponds to a color in the color table (the palette).
另一种处理方法是将 3 色黑白红图像编码为两个 2 色图像:
- 一张黑白图像,其中 1 代表黑色
- 红色/非红色图像,其中 1 代表红色
例如,颜色可以映射如下:
- 黑色 -> (1, 0)
- 白色 -> (0, 0)
- 红色 -> (?, 1) 在哪里?可以是 0 或 1。
然后可以分别压缩/解压缩两个 2 色图像。 3色<->2色转换可以通过简单的像素过滤和组合操作进行。如果需要在 GPU 上完成转换,后者可能会有所帮助。
(这种表示的信息密度与Andreas的索引颜色存储模型相同,2位表示原图中的每个像素。)