图像灰度化的方法及编程实现
更新时间:2023-06-04 04:56:01 阅读量: 实用文档 文档下载
图像灰度化
第15卷 第1期
2004年3月 广西工学院学报 Vol115 No11
JOURNALOFGUANGXIUNIVERSITYOFTECHNOLOGY Mar12004
文章编号 100426410(2004)0120023204
位图图像灰度化的方法及编程实现
游达章1,张建钢2,甘 勇3
(11湖北工学院机械工程学院,湖北武汉 430068;
21武汉科技学院机械系,湖北武汉 430000;31桂林电子工业学院机械系,广西桂林 541004)
摘 要:图像灰度化是许多数字图像处理的初始和基础工作,本文对灰度化的基本原理作了简要阐述,同时分别介绍了8位和24位彩色位图灰度化的具体方法,并给了实现详细代码。
关 键 词:灰度化;位图;方法;代码
中图分类号:TP31714 文献标识码:A
,,广泛运用在纺织、机械、信息科学、生物、、轮廓提取、图像增强等等热点问题的相关技术工作,。本文对彩色图像到灰度图像转变的实现方法作了详细的阐述。
1 彩色图像和灰度图像的基本概念及相互关系
位图图像一般分为单色图像、灰度图像和彩色图像。单色图像只有黑色和白色两种颜色,整个图像由单纯的黑色点和白色点组成。彩色图像的像素点是由R(红色)、G(绿色)、B(兰色)三元色混合而成的,不同含量的R、G、B组成不同的颜色,每一个记录单个像素的位数据单元可表示任意一种颜色。根据这个记录单个像素信息的位数据单元所占位数大小,可分为8位、16位、24位和32位等几种位图。8位位图是指图像一个像素点的颜色信息用8个位(一个字节)来表示;同样,16位位图用16个位(二个字节)来表示,其中R、G、B分别占5位,另外1位他用;24位位图用24个位(三个字节)来表示,其中R占8位、G占8位、B占8位。灰度图像与单色图像的区别是加上颜色深度的概念,单纯的看,灰度图也是黑白的,就像黑白电视显示的图像一样,但是点与点之间黑的程度是不一样的,这就是深度。如果称不同深度的颜色为一色的话,灰度图像就不止只有黑色和白色两种颜色,一般使用的灰度图为256级灰度图,就是说图像由256种不同灰度级的颜色组成[1]。
本文主要介绍对8位和24位两种最常使用彩色位图灰度化的方法。先简单介绍一下位图的结构,这对灰度化的方法有着重要的影响。位图文件结构按顺序一般包括位图文件头结构BITMAPFI位LEHEADER、图信息头结构BITMAPI位图颜色表GBQUAD和图像位数据4部分。对于8位位图的文件NFOHEADER、
结构,这4部分都包括。而24位位图则只包括文件头结构、信息头结构和位数据三部分。这是因为8位位图带有颜色表信息,对于8位位图,WINDOWS采用调色板技术来记录颜色信息,首先在颜色表结构中储存256种给定的彩色颜色,然后在数据位中用一个8位二进制数(值从0~28(256))来表示颜色表中的某一种具体的颜色,这个8位二进制数的实质就是一个索引,在显示颜色时通过这个索引来调用颜色板种对应颜色的R、8位G、8位B来表示,即一G、B值。而24位位图没有颜色表,如前所述,24位位图颜色信息由8位R、
个像素的颜色信息在数据位中直接用3个字节来表示,显示时直接使用R、G、B值,而不需要利用调色板来收稿日期:2004201213
作者简介:游达章(19752),男,湖北洪湖人,湖北工学院讲师,研究生。
图像灰度化
24广西工学院学报 2004年3月索引。因此,8位位图只能显示256种颜色,叫伪彩色,24位能显示224(约1600万)种颜色叫做真彩色。 彩色图像中像素点的R、蓝色为G、B分量是不等的,如红色用RGB结构来表示为RGB(255,0,0)、
而灰度像素点的R、RGB(0,0,255)。G、B的分量是相等的,既颜色中的含量R=G=B,用RGB表示为(0,0,
(1,1,1)……(255、0)、255、255),其中RGB(0,0,0)为黑色,RGB(255,255,255)为白色,界于两者之间的为
[2]灰度颜色。彩色位图与灰度位图的像素点的R、G、B分量之间有如下对应关系:R
G
B灰度=01299 01587 01
01299 01587 01114301299 01587 01RGB彩色
有了这个公式,就能将一副彩色图像转化为灰度图。又由于8位和24位位图颜色管理有基于调色板和不基于调色板的区别,它们的灰度化方法也不相同,下面分别介绍。
2 8位位图的灰度化
8位位图的文件结构中带有颜色表,表项改变为灰度级颜色,:图像颜色表中第100项的颜色,R(:
G
B=00 0111401299 01587 01114301299 01587 0134167 经过计算,R=132(近似值),G=132,B=132,于是将颜色表的第100项改设为RGB(132,132,132)。 灰度化8位位图的颜色表后,还要创建一个逻辑调色板,并将此逻辑调色板设为系统调色。这是因为图像的显示与WINDOWS编程有很大的关系,WINDOWS的应用程序都有自己的调色板,如果没有,默认为系统调色板。8位位图灰度化以后,要准确的显示,就要创建自己的逻辑调色板,并实现它,否则图像显示失真[3]。
实现代码(主要):
灰度化调色板。m_pPalette为调色板结构指针,设为已知,且指向调色板首地址。m_Palette为一逻辑调色板对象
for(inti=0;i<255;i++)
{
intgray=0.303m_pPalette[i].rgbRed+0.593m_pPalette[i].rgbGreen+0.113m_pPalette [i].rgbBlue;m_pPalette[i].rgbRed=m_pPalette[i].rgbGreen=m_pPalette[i].rgbBlue=gray; 创建逻辑调色板
LOGPALETTE3pLogPal=(LOGPALETTE3)newchar
[sizeof(LOGPALETTE)+2563sizeof(PALETTEENTRY)];
pLogPal2>palPalEntry[i].peRed=pLogPal2>palPalEntry[i].peGreen=pLogPal2>palPalEntry [i].peBlue=gray;
}
m_Palette.CreatePalette(pLogPal);
delete[]pLogPal;
实现逻辑调色板
CPalette3pOldPalette;
pOldPalette=pDC_>SelectPalette(&m_Palette,FALSE);
pDC2>RealizePalette();
pDC2>SelectPalette(pOldPalette,FALSE)
图像灰度化
显示图像。m_pBIH为图像信息头结构,m_pDibBits为指向位数据首地址指针,已知
StretchDIBits(pDC2>m_hDC,nX,nY,nWidth,nHeight,0,0,m_pBIH2>biWidth,m_pBIH2> biHeight,m_pDibBits,(BITMAPINFO3)m_pBIH,BI_RGB,SRCCOPY);
3 24位位图的灰度化
24位位图的灰度化有两种方案,第一种是将图像位数据中的数据编码方式改变,直接变为灰度颜色,因为24位位图用3个字节来记录颜色信息,且不需要调色板操作,操作相对简单。具体实现方法为:找到位数据初始地址指针m_pDibBits,设置一指针变量m_pLine,分配内存空间,从m_pDibBits开始将每三个字节读取每个像素的R、G、B值,计算灰度后再每三个字节依次填入到分配的内存中,最后将m_pLine值赋予m_pDibBits。代码如下:
inti;
intm_heith=GetHeight();intm_width=GetWidth();
unsignedchar3m_pLine=newunsignedchar[heith_w3 m_pLine=m_pDibBits;
for(i=m_heith-1;i>=0;i-)
{
tj_w-1;j+)
intgray=
3(m_pDibBits+i3m_width33+j33+0)30.30+3(m_pDibBits+i3m_ width33+j33+1)30.59+3(m_pDibBits+i3m_width33+j33+2)30.11; 3(m_pLine+i3m_width33+j33+0)=3(m_pLine+i3m_width33+j33 +1)=3(m_pLine+i3m_width33+j33+2)=gray;
}
}
m_pDibBits=m_pLine;
第二种方法是将24位真彩色位图变为8位的灰度图,这个转变要复杂一些。在此介绍基本的原理和主要的步骤。首先得创建位图的颜色表,共256个,顺序排列,如(0,0,0),(1,1,1)、……(255,255,255)。然后根据这个颜色表来创建一个逻辑调色板,实现这个逻辑调色板为系统调色板。这两部分代码如同8位处理。第三步就要改写位数据了。像第一种方法一样,只不过分配内存是原来的1 3,此时R=G=B,只用一个字节记录即可,从m_pDibBits依次读取每个像素的R、G、B值,计算灰度后再将这个灰度值直接每字节顺序填入到分配的内存中。第四步就要改变文件信息头中相关信息,此时该图像大小已应变为:信息头结构大小+颜色表结构大小+256(RGBQUAD)结构大小+图像大小。3;所以其信息头中的biSizeImage应为原来的1 biBitCount应为8。这样就完成由24位到8位的转变。此方法比较第一种,虽然操作复杂,但能节约空间。4 结束语
目前对灰度图像的运用越来越多,本文对8位和24位两种最常用的位图图像灰度化作了详细的介绍。同时,对推导其他类型图像的灰度化方法,对灰度数据的保存和写位图文件,以及利用灰度图像开发等其他工作奠定了基础。文中代码在VC++610上经调试、运行通过。
图像灰度化
[ 参 考 文 献 ]
[1]李于剑1VisualC++实践与提高——图形图像编程篇[M]1北京:中国铁道出版社,20011
[2]何 斌,马天予1VisualC++数字图像处理(第二版)[M]1北京:人民邮电出版社,20021
[3]阮秋琦1数字图像处理学[M]1北京:电子工业出版社,20011
Awayofgrayingtheimageofabitmap
andtherealizationofprogramming
123YOUDa2zhang,ZHANGJian2gang,GANYong
(1.MechanicalEngineeringDepartment,Hubei,China;
2.Dept.ofMachinery,WuhanInstituteof,HChina;3.Dept.ofMachinery,Guof,iGuilin541004,China)
Abstract:Tingandfoundamentalworkofprocessingdigitalimages.Thearticlebbasicprinciplesofgraying,andintroducesaspecificwayofgraying82bitand242bitcolourbitmaps.AndthedetailVC++codesaregiven.
Keywords:graying;bitmap;method;code
(责任编辑 赖君荣)
(上接第22页)
AmethodofenquiringindexbasedonXML
YUANQing2neng,TANGPei2he
(Dept.ofComputerEngineering,GuangxiUniversityofTechnology,Liuzhou545006,China)
Abstract:InaccordancewiththecharacteristicsofXMLfile,amethodofbuildingupanindexforXMLfileisgiven.Thestructureofdataandthealgorithmusedinthemethodhavetheadvantagesofimprovingtheaccuracyofenquiring,havinglessindexredundancyandquicklyenquiringundertheconditionofmakingfulluseofthecontextinformationinthetagofXMLfile.
Keywords:XML;tag;index;invertedlist;enquir
(责任编辑 赖君荣)
正在阅读:
图像灰度化的方法及编程实现06-04
学而思新概念语法整理04-06
出黑板报作文300字06-25
“十三五”重点项目-工业用垫项目可行性研究报告 - 图文11-08
水利工程实习心得体会01-01
夏日中的滋味作文500字06-29
试论英语视听说课程中的文化导入01-25
- 教学能力大赛决赛获奖-教学实施报告-(完整图文版)
- 互联网+数据中心行业分析报告
- 2017上海杨浦区高三一模数学试题及答案
- 招商部差旅接待管理制度(4-25)
- 学生游玩安全注意事项
- 学生信息管理系统(文档模板供参考)
- 叉车门架有限元分析及系统设计
- 2014帮助残疾人志愿者服务情况记录
- 叶绿体中色素的提取和分离实验
- 中国食物成分表2020年最新权威完整改进版
- 推动国土资源领域生态文明建设
- 给水管道冲洗和消毒记录
- 计算机软件专业自我评价
- 高中数学必修1-5知识点归纳
- 2018-2022年中国第五代移动通信技术(5G)产业深度分析及发展前景研究报告发展趋势(目录)
- 生产车间巡查制度
- 2018版中国光热发电行业深度研究报告目录
- (通用)2019年中考数学总复习 第一章 第四节 数的开方与二次根式课件
- 2017_2018学年高中语文第二单元第4课说数课件粤教版
- 上市新药Lumateperone(卢美哌隆)合成检索总结报告
- 灰度
- 图像
- 编程
- 实现
- 方法
- 5.印广法师专访系列之五:了义法与不了义法、法华道场宗旨
- 地下矿山安全标准化各项制度汇编(终稿)
- 郑东新区2013年小学科学教师课堂达标笔答试题
- 电泳涂漆铝型材铜加速乙酸盐雾试验研究
- 银行2010述职报告全集(31页)
- 这是我的战争屠杀攻略 实用技巧介绍
- 2014年一级建造师法律法规真题答案解析
- 数学广角—数与形
- 江苏省扬州市江都区七校联谊2016届九年级上学期期中考试数学试题
- 大型仪器设备协作共享绩效考核调查表
- ICU护理核心制度与量化评分
- 塔河一中2011年学校寒假安全教育讲话稿
- 检修安装公司安全职责规范(标准版)
- 多分辨率图像增强技术研究与实现
- 发耳镇志成文武学校课程设置实施方案
- 第六章 数组作业
- 优秀大学生采访稿
- 如何编制发改委立项用热镀焊管项目可行性研究报告(甲级-发改委-经信委-商务局-备案-核准)
- 网络教育《复变函数》作业及答案
- cocoa异步请求 and libxml2.dylib