1.颜色压缩
颜色压缩(Color Reduction)最简单的理解就是减少表示图像的颜色数目,我们都知道,8位位深的3通道RGB真彩图像包括了1600多万(16777216)的颜色数目,其实在某些应用中用不到这么多数量(例如图像传输(transmission)、分割(segmentation)、压缩(compression))的颜色。这也是一个研究的小方向,想了解更多,可以阅读文章Adaptive Color Reduction,Color reduction and estimation of the number of dominant colors by using a self-growing and self-organized neural gas。
在这里,我们实现一个很简单的方法:
I_old为输入的像素值,I_new为输出的像素值,divideWidth代表要减少的度,我们可以理解为divideWidth为128的时候,对于灰度图像就做的是一个阈值为128的二值化。
上点图更直观一点,左边为灰度原始图像,右边为输出图像:
当divideWidth为64时:
根据以上描述,实际上这个公式我们可以建立一个映射表来避免重复计算,对于0-255的有限的输入值,建议输出值的映射表:
// color space divide width
const in divideWidth = 128;
uchar table[256];
// first, we should build the converting table
for(int i=0; i < 256; i++)
{
table[i] = (uchar)(divideWidth * (i / divideWidth