2012-01-09 84 views
0

我想在24位bmp图像上找到蓝色区域。我怎样才能找到蓝色通道?访问蓝色通道的方式是什么?bmp 24位文件格式的蓝色通道

+1

你试过了什么?你如何访问位图?手动?通过图书馆?请张贴一些代码。 – 2012-01-09 10:03:14

回答

0

24位像素(24bpp)格式支持16,777,216个不同颜色 并且每3字节存储1个像素值。每个像素值定义像素的红色,绿色和蓝色样本(RGBAX 表示法中的8.8.8.0.0) 。具体按顺序(蓝色,绿色和红色,每个样本每个 8位)。

...从here

2

24位位图(.bmp)图像的标头为54个字节。之后是pixeldata。每个像素使用3个字节:蓝色,绿色,红色。

要看到这一点,在油漆中制作一个1x1像素的图像,并使一个像素为蓝色。如果在hexeditor中查看.bmp文件,则会看到第55个字节的值为FF(蓝色),而之后的2个为00(不绿色,不显示红色)。当然,如果你编写一个读取所有字节的C程序,你也可以看到这一点。如果从第55个字节打印值直到结束,您将看到相同的结果。

pixeldata需要对齐,这叫做stride。步幅被计算为如下:

stride = (width * bpp)/8; 

在一个3x3 BMP,步幅将(3 * 24)/ 8 = 9。这个值需要由4上舍入到一个数整除(12在这种情况下) ,因此每行需要3个额外的字节才能正确对齐位。所以,如果所有的字节是蓝色的,54字节后,你将有:

FF 00 00 FF 00 00 FF 00 00 00 00 00 
FF 00 00 FF 00 00 FF 00 00 00 00 00 
FF 00 00 FF 00 00 FF 00 00 00 00 00 

对于一个4×4 BMP,跨度=(4 * 24)/ 8 = 12。12是被4整除,所以没有多余的需要的字节。对于5x5 bmp,stride =(5 * 24)/ 8 = 15,因此每行需要1个额外的字节。

要了解更多关于bmp文件格式的信息,请查看this wikipedia page。希望这可以帮助!

相关问题