BItmap 灰度颜色修改

 bmp 图片灰度值修改显示.
原计划是将8bits 256色灰度图片改为2bits 4色度的灰度图片.无奈能力有限,对MFC 也不

懂,网上down的代码也没有这样的功能,只有现改. 颜色改成4灰度后,并且已经创建新图片

文件成功,但是打开图片始终提示的是"invalid...."不能成像.
报告boss后,被balabala....批评,又是"you don't know". 先完成第一步: 将图片改为4

色显示.

bmp图片文件包括: 文件头:BITMAPFILEHEADER; 包含文件大小,数据偏移量等信息.
                 bitmap 图片信息:1.BITMAPINFO.包含bitmap headerInfo,如高,

宽,bit位,颜色个数等值; 2.调色板(颜色表).
                 bitmap data, 在头文件后就是文件的数据信息了.文件头中的偏移量

标志数据的起始位置.

关于文件颜色表和data的关系:
data中的每个byte都保存着图片像素点颜色信息:

8bits图片来说,总共有256色,0~255为index, 每个像素点的byte值就是颜色表中每个颜

色的index.
4bits图片:16色, data中1byte要保存两个piexl的颜色index.低位的保存在byte高位.
1bits图片:2色,  data中1byte要保存8个piexl的颜色index.低位的保存在byte高位.

data数据中的byte与颜色表mapping.


256色改为4色显示,采用两种方式来测试:
第一种直接设置值:
1. 直接用0,85,170,255 4色来设置颜色域,保存为colortable的值.
2. 扫描图像的每个像素点得到当前像素点的rgb值,灰度图片的rgb中的r,g,b一样
3. 用得到的rgb值与colortable中的4个颜色比较,取abs小的值为当前像素点值.
成像效果和原图类似.

第二种图像抖动处理:
从网上找了个dephi的抖动处理代码修改.
1.扫描图像,得到8bits图像中颜色信息,并且同时计算每种颜色使用的time.
2.对颜色使用times进行排序,这里采用:快速排序算法;
3.取使用频率最高的4色保存到colortable;
4.和第一种方法中3一样.
成像效果和原图差距较大.但是显示对比没有第一种强

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值