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系统中,则没有格式限制,只不过要求掩码之间不能有重叠。(注:这种格式的图像使用起来是比较麻烦的,不过因为它的显示效果接近于真彩,而图像数据又比真彩图像小的多,所以,它更多的被用于游戏软件)。

时间: 2024-10-29 16:24:45

RGB565与RGB555位图文件格式的标志识别的相关文章

YOLOv3目标检测实战:交通标志识别

在无人驾驶中,交通标志识别是一项重要的任务.本项目以美国交通标志数据集LISA为训练对象,采用YOLOv3目标检测方法实现实时交通标志识别. 具体项目过程包括包括:安装Darknet.下载LISA交通标志数据集.数据集格式转换.修改配置文件.训练LISA数据集.测试训练出的网络模型.性能统计(mAP计算和画出PR曲线)和先验框聚类. YOLOv3可以实时地进行端到端的目标检测,以速度快见长.本课程将手把手地教大家使用YOLOv3实现交通标志识别.本课程的YOLOv3使用Darknet,在Ubun

RGB565与RGB555标志识别位图文件格式

近日从本地16比特位图读出象素彩色数据,并填充ANDROID的BITMAP数据.发现,使用CAVAS当屏幕显示,照片显示的颜色不正确,找了很多资料,原来发现两个原因: 1.将位图的颜色分量掩码弄错了,当BITMAPINFOHEADER.biCompression是BI_BITFIELDS,此时位图才为565格式的位图,掩码存放在原来调色板的位置,而当前读取的这张位图BITMAPINFOHEADER.biCompression是BI_RGB,此时位图应该为555的位图,所以掩码应该採用RGB555

BMP位图文件格式详解及编程建议

BMP文件渊源流长,虽然对JPG.PNG等格式图像文件来说,确实有点土,但是毕竟BMP文件格式相对简单,容易理解,至于BMP众多的位图格式也不能责怪微软,主要是早期谁也没料到图片技术会发展的这么快,而且每次升级还要兼容,所以只能如此了(有点麻烦但并不复杂).天缘撰写本文以便留档和各位编程爱好者参考. BMP位图文件的结构主要由:BMP文件头.位图信息头.颜色表和图形数据四个部分组成,对于24位.32位则没有色彩表字段,低位图则存在色彩索引表. 一.BMP的文件头结构 BMP文件头数据结构包含有B

BMP文件格式,RGB之间格式转换 碰到坑,MARK

很多人在转储bmp文件的时候,会出现各种各样的问题,特别是抓屏的时候,经常保存下来的图片 怪怪的,偏差很大!比如下面: 有时候,明明感觉自己是对的,但往往结果很让人抓狂. 这种情况一般是对bmp文件格式理解不对,或者没有透彻导致,当然至少是显示出来,所以大部分是对的,只是某些地方出错! 网上也有很多bmp文件格式,但都说得不够透彻,导致实际总要走些弯路. bmp是常见图片格式,使用非常广泛.近期在处理ui库的时候,了解下bmp格式,也发现其中一些坑,记录下. bmp格式很简单,网上搜索一堆,百科

C语言实现将彩色BMP位图转化为二值图

CTF做了图片的隐写题,还没有形成系统的认识,先来总结一下BMP图的组成,并通过将彩色图转为二值图的例子加深下理解. 只写了位图二进制文件的格式和代码实现,至于诸如RGB色彩和调色板是什么的一些概念就不啰嗦了. BMP位图文件格式 BMP文件由文件头.位图信息头.调色板和图形数据四部分组成,真彩色图是没有调色板的.每部分的具体结构在代码中具体列出并解释. 结构体的对齐 定义文件头部各结构体时要注意对齐的问题,至于什么是结构体对齐,请看这篇博文,写的很详细http://www.cnblogs.co

[C#绘图]位图类型

位图是位的数组,它指定了像素矩阵中各像素的颜色.位图就是一个二位数组,这个二维数组的每个元素代表像素矩阵中的一个像素的值.当然这个值是由范围的,跟你给他的位数有关,你给他8位,它的值的范围就是0~255,对应到像素矩阵上就有256种颜色可选. 所以位图是一个二维的数组,数组的每个元素对应像素矩阵中的一个像素,这个元素的值决定这个像素的颜色.二维数组的每个元素可以看成一个位向量,位的个数决定元素的取值范围,决定像素的颜色数. 专用于单个像素的位数决定了可分配到该像素的颜色数. 例如,如果用 4 位

谈谈“色彩空间表示方法”——RGB、YUY2、YUYV、YVYU、UYVY、AYUV

转自:http://bbs.chinavideo.org/viewthread.php?tid=4143 还可参考http://www.fourcc.org/yuv.php 小知识:RGB与YUV----摘自<DirectShow实务精选> 作者:陆其明 计算机彩色显示器显示色彩的原理与彩色电视机一样,都是采用R(Red).G(Green).B(Blue)相加混色的原理:通过发射出三种不同强度的电子束,使屏幕内侧覆盖的红.绿.蓝磷光材料发光而产生色彩.这种色彩的表示方法称为RGB色彩空间表示(

css所有属性(table,行列组)总结

概述: CSS 规则由两个主要的部分构成:选择器,以及一条或多条声明: CSS声明总是以分号(;)结束,声明组以大括号({})括起来: 一.注释: CSS注释以 "/*" 开始, 以 "*/" 结束 eg:    /*p{color:red;text-align:center;}*/ 二.插入css样式表的方式?link 和@import 的区别是? 1.外部样式:使用 标签链接到样式表. 标签在(文档的)头部 eg : <link rel="sty

IDF实验室解题学习笔记1

1.图片里的英文 图片可以有很多种打开方式,破解该题,需将图片下载下来. 对于图片,我们可以使用图片编辑软件,进行各种调明暗,变色调等操作. 我们还可以使用2进制或者16进制的文件打开方式打开.该图使用16进制方式打开后,可以察觉到rar文件类型的标记,所以我们可以将其使用rar方式打开. 知识点:文件的不同打开方式:16进制文件中对于各种文件格式的标志的识别,CSDN上有相关介绍. 地址:http://blog.csdn.net/adparking/article/details/559990