上面讲的是抖动处理的方法,当然也可以使用最佳匹配的算法,以获得更好的显示效果。
方法如下:
1. 统计一个bmp中各个颜色出现的频率
2. 将颜色频率按从高到底进行排序(sorted color table - SCT)
3. 将显示器256色的调色板设置为SCT表中的前256项 (将这256项记为SCT256表)
4. 对原24bit bmp中的每个像素点进行如下处理:
根据该像素的RGB值,在SCT256中查找一个最佳匹配的颜色值,并取得该颜色值在SCT256中的编号(8bit)
将这个8bit的编号作为颜色值,绘制到屏幕的相应位置
5. 正确处理完24bit bmp中的每一个像素,就ok了
这实际上就是将24bit色bmp转换为256色bmp的一种简单算法,效果也不错,原理也很简单。选择最佳匹配色也很容易,就是选泽颜色空间中,距离最小的,距离函数直接使用欧式距离就非常理想。这个算法是我自己独立思考出来的,可以说是原创。
RockCarry
2007-2-12
方法如下:
1. 统计一个bmp中各个颜色出现的频率
2. 将颜色频率按从高到底进行排序(sorted color table - SCT)
3. 将显示器256色的调色板设置为SCT表中的前256项 (将这256项记为SCT256表)
4. 对原24bit bmp中的每个像素点进行如下处理:
根据该像素的RGB值,在SCT256中查找一个最佳匹配的颜色值,并取得该颜色值在SCT256中的编号(8bit)
将这个8bit的编号作为颜色值,绘制到屏幕的相应位置
5. 正确处理完24bit bmp中的每一个像素,就ok了
这实际上就是将24bit色bmp转换为256色bmp的一种简单算法,效果也不错,原理也很简单。选择最佳匹配色也很容易,就是选泽颜色空间中,距离最小的,距离函数直接使用欧式距离就非常理想。这个算法是我自己独立思考出来的,可以说是原创。
RockCarry
2007-2-12
[此贴子已经被作者于2007-2-12 11:43:36编辑过]