RGB565与RGB555标志识别位图文件格式
近日从本地16比特位图读出象素彩色数据,并填充ANDROID的BITMAP数据。发现,使用CAVAS当屏幕显示,照片显示的颜色不正确,找了很多资料,原来发现两个原因:
1.将位图的颜色分量掩码弄错了,当BITMAPINFOHEADER.biCompression是BI_BITFIELDS,此时位图才为565格式的位图,掩码存放在原来调色板的位置,而当前读取的这张位图BITMAPINFOHEADER.biCompression是BI_RGB,此时位图应该为555的位图,所以掩码应该採用RGB555的掩码数据。
2.在把RGB555的位图颜色数据 转换为RGB888的数据时,首先将位图的数据像素值与颜色分量掩码进行与运算,然后因为RGB555是对颜色数据进行了有损的压缩编码,仅仅剩下了5位数据,而当转换为8位的原始数据时,必需要进行数据补偿,能够默认使用0进行不足的位数补偿,以达到8位的原始颜色分量长度,也有种说法。是採用5位数据的低几位进行数据填充,据说效果更好,失真更少。
biBitCount=16 表示位图最多有216种颜色。每一个色素用16位(2个字节)表示。这样的格式叫作高彩色,或叫增强型16位色,或64K色。
它的情况比較复杂,当biCompression成员的值是BI_RGB时,它没有调色板。
16位中。最低的5位表示蓝色分量,中间的5位表示绿色分量,高的5位表示红色分量,一共占用了15位,最高的一位保留。设为0。
这样的格式也被称作555 16位位图。假设biCompression成员的值是BI_BITFIELDS,那么情况就复杂了,首先是原来调色板的位置被三个DWORD变量占领,称为红、绿、蓝掩码。
分别用于描写叙述红、绿、蓝分量在16位中所占的位置。在Windows
95(或98)中。系统可接受两种格式的位域:555和565,在555格式下,红、绿、蓝的掩码各自是:0x7C00、0x03E0、0x001F,而在565格式下。它们则分别为:0xF800、0x07E0、0x001F。你在读取一个像素之后,能够分别用掩码“与”上像素值,从而提取出想要的颜色分量(当然还要再经过适当的左右移操作)。在NT系统中,则没有格式限制。仅仅只是要求掩码之间不能有重叠。(注:这样的格式的图像使用起来是比較麻烦的,只是由于它的显示效果接近于真彩。而图像数据又比真彩图像小的多,所以,它很多其它的被用于游戏软件)。
版权声明:本文博客原创文章。博客,未经同意,不得转载。
RGB565与RGB555标志识别位图文件格式的更多相关文章
- 人工智能深度学习框架MXNet实战:深度神经网络的交通标志识别训练
人工智能深度学习框架MXNet实战:深度神经网络的交通标志识别训练 MXNet 是一个轻量级.可移植.灵活的分布式深度学习框架,2017 年 1 月 23 日,该项目进入 Apache 基金会,成为 ...
- 位图文件格式及linux下C语言来操作位图文件
说到图片,位图(Bitmap)当然是最简单的,它是Windows显示图片的基本格式,其文件扩展名为*.BMP.由于没有经过任何的压缩,故BMP图片往往很大.在Windows下,任何格式的图片文件都要转 ...
- BMP位图文件格式详解及编程建议
BMP文件渊源流长,虽然对JPG.PNG等格式图像文件来说,确实有点土,但是毕竟BMP文件格式相对简单,容易理解,至于BMP众多的位图格式也不能责怪微软,主要是早期谁也没料到图片技术会发展的这么快,而 ...
- TSR交通标志检测与识别
TSR交通标志检测与识别 说明: 传统图像处理算法的TSR集成在在ARM+DSP上运行,深度学习开发的TSR集成到FPGA上运行. 输入输出接口 Input: (1)图像视频分辨率(整型int) (2 ...
- DIB位图文件的格式、读取、保存和显示(转载)
一.位图文件结构 位图文件由三部分组成:文件头 + 位图信息 + 位图像素数据 1.位图文件头:BitMapFileHeader.位图文件头主要用于识别位图文件.以下是位图文件头结构的定义: type ...
- BMP文件格式分析
前两天要做一个读取bmp文件的小程序,顺便查找了一些关于BMP格式的文章,现在post上来. 简介 BMP(Bitmap-File)图形文件是Windows采用的图形文件格式,在Windows环境下运 ...
- Windows下bmp文件格式
6.1 BMP文件格式 6.1.1 简介 位图文件(Bitmap-File,BMP)格式是Windows采用的图像文件存储格式,在Windows环境下运行的所有图像处理软件都支持这种格式.Window ...
- BMP文件格式及读写
转 http://blog.csdn.net/pkueecser/article/details/5579604 http://blog.csdn.net/pkueecser/article/deta ...
- 浅析BMP位图文件结构(含Demo)
浅析BMP位图文件结构(含Demo) 作者:一点一滴的Beer http://beer.cnblogs.com/ 关于BMP位图格式在网上可以找到比较详细的相关文档,有兴趣的可以搜索标题为“BMP ...
随机推荐
- [Recompose] Transform Props using Recompose --mapProps
Learn how to use the 'mapProps' higher-order component to modify an existing component’s API (its pr ...
- Lucene学习总结之七:Lucene搜索过程解析 2014-06-25 14:23 863人阅读 评论(1) 收藏
一.Lucene搜索过程总论 搜索的过程总的来说就是将词典及倒排表信息从索引中读出来,根据用户输入的查询语句合并倒排表,得到结果文档集并对文档进行打分的过程. 其可用如下图示: 总共包括以下几个过程: ...
- php中usort自定义排序如何使用
php中usort自定义排序如何使用 一.总结 一句话总结:多写一个规则函数,而这个函数的写法和普通函数一样,调用的时候规则函数用函数名的字符串. 1.用户自定义规则函数有哪三个? usort — 使 ...
- IOC功能以及相关的配置
功能: 控制反转,将对象的创建权反转给Spring可以解决程序耦合性高的问题,大概的意思就是将程序运行时所需要的资源.数据,全部让Spring供给,防止程序与程序之间联系过高,而出现耦合性高的问题. ...
- 【codeforces 742B】Arpa’s obvious problem and Mehrdad’s terrible solution
time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard ou ...
- gradle导出依赖的jar包
gradle导出依赖的jar包 http://blog.csdn.net/yuhentian/article/details/50426896
- Android开发和測试实践 - 接入友盟统计
这两年一直在做无线的測试,兴许还会继续去做无线的測试,可是之前由于时间的原因一直都没有非常细致的了解到代码层面. 最近抽出时间自己做了些app的开发,决定假设想把移动的測试做好做深入.有一定的app开 ...
- 阿里云Java镜像:基本配置和总体说明
本文中的内容,来自阿里云镜像系统自带的说明. 下次不想用镜像了,感觉也没有节省多少工作量. 一.软件 1.nginx /usr/local/nginx 2.tomcat-7 /var/tomcat/ ...
- DOM 的classList 属性
1.添加1个或多个class add(class1, class2, ...) 2.移除class remove(class1, class2, ...) 3.判断指定的类名是否存在 contains ...
- redis持久化,主从及数据备份
http://blog.csdn.net/lang_man_xing/article/details/38386113 现在在项目里已经大量使用redis了,为了提高redis的性能和可靠性我们需要知 ...