关于MFC当中使用VC(C++)8位BMP提取Y通道平均值的笔记

第一点、关于8位bmp图片,首先拿到图片如果是彩色的那么该图片调色板并没有进行灰度化,要进行灰度化转换才能够使bmp图片变成灰度图片。

关于调色板进行灰度调整的代码如下:

		for(i=0;i<256;i++)					
		{  
			tempRgbArr[i].rgbRed	=	i;
			tempRgbArr[i].rgbGreen	=	i;
			tempRgbArr[i].rgbBlue	=	i;

			tempRgbArr[i].rgbReserved	=	0;
		} 
简要说明下:tempRgbArr[]数组是临时变量,那么要进行三色分量进行一致处理,然后使透明色为‘0’,我也不知道为什么是‘0’,但是我看了很多灰度图片的二进制文件发现透明值都是‘0’。然后的位图数据处理我现在还不清楚。

假如拿到手的bmp图片已经是8位的灰度图,那么只要读出来然后在进行位图数据相加变成和之后除以总的像素点就可以得到Y通道的平均值了。


第二点、关于Y通道,这是对于YUV格式来说的,Y表示的是图片的亮度值,UV表示的是图片的色彩值。那么灰度图顾名思义就是去掉了色彩的bmp图片。拿到手之后的灰度图它的位图数据就是Y通道的数据。


第三点、关于8位bmp数据格式:文件头+信息头+调色板+位图数据。关于后两者的关系我十分纠结,网上说调色板是存放色彩用的,图片用的色彩都在调色板里面,而位图数据则是进行索引调色板用的,位图数据存放的是索引值。而我的上级跟我说这完全是扯淡,位图数据就是像素值。好吧,我现在手头上有一张8位bmp灰度图,然后用photoshop7查看了数据,发现位图数据就是像素值,我不想说什么,这个还需要日后的考证。

以上笔记完全原创,如有雷同真的是巧了。如有问题欢迎留言交流。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值