减色算法
1. 简介
减色算法(ColorQuantization)是一种应用在色彩空间中用于减少图像离散色彩值的一类算法,旨在通过减少图像的离散色彩值从而减少了每个色彩值的表示比特数。一方面达到压缩图像的效果,另一方面使得一些以固定有限比特数表示像素的显示设备也能显示每个像素更多表示比特的图像。
2. 中位切割算法
中位切割算法(Median Cut)是最知名、应用最广泛的减色算法,常见的图像处理软件如 Photoshop、GIMP 等都使用了这个算法或其变种。
2.1 原理
假设有一张 RGB 图像,想要降低图像中色彩数目到 色。中位切割算法流程如下:
- 将图片的所有像素放到同一个区域(RGB 三维空间中)
- 对所有区域进行以下操作:
- 计算此区域内所有像素的 RGB 三元素最大值与最小值的差
- 选出相差最大的那个颜色(R 或 G 或 B)
- 根据那个颜色去排序此区域内所有像素
- 分割前一半和后一半的像素到两个不同区域(即「中位切割」)
- 重复第二步直到产生了 个区域
- 将每个区域的像素值平均起来,就得到 色
2.2 实现
假设有一张 RGB 图像,其每个像素的每个分量(R、G、B)均用 比特表示,要想将其色彩数目由 降低到 ,简单伪代码部分实现如下:
- 统计每对
<R,G,B>
像素值的像素数量
1 | Global FREQUENCIES [0..255][0..255][0..255] |
- 分割一个区域。假设极差最大的色彩分量为 B,该区域 R、G、B 分量的范围分别为
[Rl,Rr]
、[Gl,Gr]
、[Bl,Br]
:
1 | Global FREQUENCIES [0..255][0..255][0..255] |
附录
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 お前はどこまで見えている!
评论
WalineTwikoo