对《Visual C++实践与提高——数字图像处理与工程应用篇》一书的一个疑问
该书提到:位图的一个像素值所占的字节数:当biBitCount=1时,8个像素占1个字节;当biBitCount=4时,2个像素占1个字节;当biBitCount=8时,1个像素占1个字节;当biBitCount=24时,1个像素占3个字节,此时图像为真彩图像。当图像不是真彩色时,图像文件中包含颜色表,位图的数据表示对应像素点在颜色表中相应的索引值......
当看到这里我感到很疑惑。我认为颜色表的存在是为了提供一个索引。一般是因为在真彩色出现之前,由于技术上的原因,计算机在处理时并没有时并没有达到每像素24位的真彩色水平,为此人们创造了索引颜色。但是假如当biBitCount=4时,2个像素占1个字节,就是说图像是一幅黑白图像,因为像素值不是0就是1;当biBitCount=8时,1个像素占1个字节,就是图像是一幅灰度图像。在这两种情况下,像素的位已足以表达所有的像素值,那还要颜色表何用?
因此我觉得“当图像不是真彩色时,图像文件中包含颜色表,位图的数据表示对应像素点在颜色表中相应的索引值”似乎是有错误的,因为我觉得索引图像才需要颜色表啊。
[解决办法]
> > "但是假如当biBitCount=4时,2个像素占1个字节,就是说图像是一幅黑白图像,因为像素值不是0就是1 "
不理解为什么biBitCount=4时,成了一幅黑白图像了而且像素值也成了0和1了
[解决办法]
你说的没错,只有需要索引颜色的,才需要颜色列表的
[解决办法]
http://community.csdn.net/Expert/topic/5511/5511406.xml?temp=.3269159
索引图像处理的一些心得。
[解决办法]
就是说只要不是真彩色图像,就一定是索引图像。颜色表中始终是r,g,b三个分量,占用3字节。后面用索引。我这样理解对吗?
对的 颜色表的结构永远是四字节的,R G B 各一个字节 另外留出的为将来系统作准备.
颜色表的项数则由 biBitCount和bilrused决定,一般biclrused=0,表示颜色表的项数全部用完,颜色表的项数就是2^biBitCount