学单片机(嵌入式应用)的搞清楚图象处理的一些基本概念,是非常必要的,我们看看现在的示波器,很多支持USB口,就算是低档的,也可以把图象以图片的格式直接保存到大量数据存储器(U盘)中。而BMP文件就是最简单明了的图片文件了,JPG要复杂些,不过总体思路都差不多的。
1、256色位图需要注意的一些问题。
按照位图格式,256色以下(含)的位图都有调色板,也就是说除了54个字节的文件头和信息头,还有一定大小的调色板数据在里面。以256色位图为例,我们可以计算一下它的调色板有多少字节。上篇文章讲过,一个颜色的调色板数据占用4个字节,而256中颜色,一共是1024字节,所以调色板数据一共占有1024字节,加上54字节的信息,则除了真正的图象数据外,还附加有1078字节的非图象数据。这样,我们可以计算出一张200*150的图片文件大小。因为图象数据每个像素点是用一个字节表示的,所以数据占有30000字节,加上1078字节,一共是31078字节。这个是显然的。当然,这幅位图无论是一张白纸或者是复杂的图象,图片大小是不会有变化的,因为30000字节的数据是逐个像素表示的,无论像素是什么颜色,都不可以省略。
那么我们在计算一个343*260 256色的位图文件大小,343*260=89180,再加上1078等于90258,但是通过属性查看,文件大小为90518字节,和计算有较大的差距,这说明计算方法有问题。
其实,200*150的图象只是一个特例。位图规定,如果图象数据一行的数据,不是4的整数倍,则必须用数据补齐。200自然是4的整数倍,不需要补齐,而343不是,所以343必须补充到344才可以。所以实际位图的大小是344*260+1078,这就和大小吻合了。这个图片每行补1个字节,而最多是要补3个字节。所以341*260图片和343*260图片,在大小上没什么区别。
2、65536色位图格式
这里再简单介绍一下6万高彩色的位图格式。16位位图是没有调色板的,除了位图数据外,只有54个字节的信息。而图片的RGB颜色,是使用2个字节16个bit表示的,具体方法如下。
MSB X XXXXX XXXXX XXXXX LSB
不使用 R G B
可见最高位不使用,RGB颜色每个使用5位表示。使用程序把其还原出来,即可得到图片的RGB颜色,就可以显示了。
这个就是最简单的65536色555格式图片的表示方法。至于565格式的,也不复杂,我也不太用,所以我在这里就不多说了,有感兴趣的朋友可以在网上搜索一下。
3、未来内容
由于图象处理领域的确涉及太广,我只做一些我需要的东西,至于24位真彩图,我就不做了,我会主要设计到图象几何变换,灰度及二值画,三维重构等等方面。有兴趣的朋友可以关注一下。下一篇再具体讲讲怎么样使用OPENGL来重构二维图象。
文章评论(0条评论)
登录后参与讨论