真彩图转256色图

     我们知道,真彩图中包含最多达2^24种颜色,怎样从中选出256种颜色,又要使颜色的失真比较小,这是一个比较复杂的问题。一种简单的做法是将R:G:B以3:3:2表示,即取R,G的高3位,B的高两位,组成一个字节,这样就可以表示256种颜色了,但不难想象,这种方法的失真肯定很严重。

我们下面介绍的算法能够比较好地实现真彩图到256色图的转换。它的思想是:准备一个长度为4096的数组,代表4096种颜色。对图中的每一个象素,取R、G、B的最高四位,拼成一个12位的整数,对应的数组元素加1。全部统计完后,就得到了这4096种颜色的使用频率。其中,可能有一些颜色一次也没用到,即对应的数组元素为零(假设不为零的数组元素共有PalCounts个)。将这些为零的数组元素清除出去,使得前PalCounts个元素都不为零。将这PalCounts个数按从大到小的顺序排列(这里我们使用起泡排序)。这样,前256种颜色就是用的最多的颜色,它们将作为调色板上的256种颜色。对于剩下的PalCounts-256种颜色并不是简单地丢弃,而是用前256种颜色中的一种来代替,代替的原则是找有最小平方误差的那个。再次对图中的每一个象素,取R、G、B的最高四位,拼成一个12位的整数,如果对应值在前256种颜色中,则直接将该索引值填入位图数据中,如果是在后PalCounts-256种颜色中,则用代替色的索引值填入位图数据中。

时间: 2024-10-11 11:06:45

真彩图转256色图的相关文章

【数字图像】C++8位和24位BMP位图的平滑、锐化、二值化处理,以及24位真彩图的灰度化

头文件: typedef unsigned char BYTE; typedef unsigned short WORD; typedef unsigned int DWORD; typedef long LONG; //BMP文件头(14字节) typedef struct tagBITMAPFILEHEADER { //WORD bfType;//位图文件的类型,必须为BM(在结构体中读取会发生错误,所以在函数中读取) DWORD bfSize;//位图文件的大小,以字节为单位 WORD b

位图种类及其定义

1 位图种类 位图的表示方法:位图是由一个个像素点构成,其像素=长像素*宽像素.每个像素由RGB(A)四个分量表示,且每个分量最多可以分为256个等级,即,每个分量要用一个字节28来表示 24真彩色图(true color):是指每个像素由RGBA四个分量表示,且每个分量分为256个级别,则3个字节可以表示一个像素点.224*像素个数/8=图片大小(byte) 32位真彩图:即每个像素由RGB三个分量表示,且每个分量分为256个级别,则4个字节可以表示一个像素点.232*像素个数/8=图片大小(

图解Winhex解析BMP文件数据实例

一 实例解析 示例图片的属性: 原图: 红线处是文件头结束: 第二个红线处是位图信息头结束: 用windows画图取第(2,2)像素点的颜色:画图是从0开始计数,即第3行3列的像素: 搜索16进制的BC542F: 搜到11个: 搜到的数据都靠后:看样子位图数据是倒过来存放的: 对照上面图: 文件头 十六进制值 描 述 42 4D:BM的ASCII值,在Windows中的BMP文件标识符 76 F4 02 00 76 F4 02h=7795714,是文件的大小 - 错误,应该倒过来看: 02 f4

图像处理中几个基本的处理方法c#代码实现

图像是人类获取和交换信息的主要来源,因此,图像处理的应用领域必然涉及到人类生活和工作的方方面面.随着人类活动范围的不断扩大,图像处理的应用领域也将随之不断扩大.(1)航天和航空技术方面的应用 数字图像处理技术在航天和航空技术方面的应用,除了上面介绍的JPL对月球.火星照片的处理之外,另一方面的应用是在飞机遥感和卫星遥感技术中.许多国家每天派出很多侦察飞机对地球上有兴趣的地区进行大量的空中摄影.对由此得来的照片进行处理分析,以前需要雇用几千人,而现在改用配备有高级计算机的图像处理系统来判读分析,既

GDI+编程小结

GDI+(Graphics Device Interface Plus图形设备接口加)是Windows XP和Windows Server 2003操作系统的子系统,也是.NET框架的重要组成部分,负责在屏幕和打印机上绘制图形图像和显示信息. GDI+不但在功能上比GDI 要强大很多,而且在代码编写方面也更简单,因此会很快成为Windows图形图像程序开发的首选. 一.              GDI+的特点和新增功能 GDI+与GDI一样,都具有设备无关性.应用程序的程序员可利用GDI+这样

读取位图(bitmap)实现及其要点

位图的格式如下: 1.文件头信息块 0000-0001 :文件标识,为字母ASCII码“BM”. 0002-0005 :文件大小. 0006-0009 :保留,每字节以“00”填写. 000A-000D :记录图像数据区的起始位置.各字节的信息含义依次为:文件头信息块大小,图像描述信息块的大小,图像颜色表的大小,保留(为01). 2.图像描述信息块 000E-0011:图像描述信息块的大小,常为28H. 0012-0015:图像宽度. 0016-0019:图像高度. 001A-001B:图像的p

流媒体 3——彩色数字图像基础

1. 视觉系统的颜色感知 颜色是视觉系统对可见光的感知结果.可见光是波长在380 nm-780 nm之间的电磁波,我们看到的大多数光不是一种波长的光,而是由许多不同波长的光组合成的.(1).眼睛本质上是一个照相机.人的视网膜(human retina)通过神经元来感知外部世界的颜色,每个神经元或者是一个对颜色敏感的锥体(cone),或者是一个对颜色不敏感的杆状体(rod).(2).红.绿和蓝三种锥体细胞对不同频率的光的感知程度不同,对不同亮度的感知程度也不同,人们可以使用数字图像处理技术来降低数

matlab 数据可视化

视觉是人们感受世界.认识自然的最重要依靠.数据可视化的目的在于:通过图形,从一堆杂乱的离散数据中观察数据间的内在关系,感受由图形所传递的内在本质.MATLAB一向注重数据的图形表示,并不断地采用新技术改进和完备其可视化功能.  本章将系统地阐述:离散数据表示成图形的基本机理:曲线.曲面绘制的基本技法和指令:特殊图形的生成和使用示例:如何使用线型.色彩.数据点标记凸现不同数据的特征:如何利用着色.灯光照明.反射效果.材质体现和透明度处理渲染.烘托表现高维函数的性状:如何生成和运用标识,画龙点睛般地

c语言实现BMP图像转换为灰度图

当初是自己要装X,非要用c来写信息隐藏作业,装了X,就得付出实践.查了好久资料,到期末才把作业交了,这里总结一下. 这道题是将真彩图转换为灰度图. 关于BMP文件结构,这是困扰了我好久的问题,上网查了很久图片的知识才弄明白 BMP文件包括以下几部分(具体结构在程序中说明): 位图文件头 位图信息头 调色板 位图数据 结构体内存对齐原则 每个成员存储的起始位置要从该成员大小的整数倍开始 成员是结构体时相对与起始偏移是其内部最大元素大小的整数倍 结构体的总大小是其内部最大成员的整数倍 因此在定义头结