在一幅数字图像存储的矩阵一般是uchar类型,为8位256个值。如果是三通道图形,那么应该有256*256*256=16581375种不同的颜色,这1600多万种颜色,数据量会很大,影响后期的处理,这个时候,我们就需要将颜色空间进行缩减。
对于三通道图像,本来有256*256*256种颜色,这里我们取:
0-9的像素取值:0
10-19的像素取值:1
……
250-256的像素取值:25
这样可以形成一个26*26*26=17576种颜色,我们可以由此写出颜色空间压缩的算法:
intdivide = 10;
uchartable[256];
for(inti=0;i<256;i++){
table[i] = divide*(i/divide);
}
这里我们取256的原因是:三通道图像的每个通道,其都为uchar型,那么大小为0-255,一共256个数,所以我们取table的大小为256就可以覆盖所有的像素值了。
由此我们对压缩颜色空间的思路是:对于比较大的图像,我们首先做一个类似的table,里面存储计算好的新的压缩图像可能要取的值,等到需要取值的时候,只要对table进行查找操作就可以了,无需再计算。