




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、基于灰度查找表的图像增强专业:班级:学号:姓名:2006-6-25 日期:一. 实习目的和意义1学习基于灰度查找表的图像增强(灰度线性变换)算法的方法,掌握其减少计算量的原理;2实用VC编程语言实现基于灰度查找表灰度线性变换算法;3巩固和提高VC编程的能力。二实习原理和方法 实习原理是对影像点灰度进行线性变换,从而达到图象增强的目的。灰度点运算的基本算法为:pDatai=pDatai*a+b。对于一幅1024*768的BMP位图对于上式的运算次数为:1024*768若建立灰度查找表,GrayMin=<I<=GrayMaxLookTablei,对于上式的运算次数为GrayMax- G
2、rayMin+1次,大大减少加法运算的次数对于图像上每个像素变换后的灰度直接在LookTable中寻找。所以应该先建立一个影像的灰度查找表,然后对每个像素点进行灰度处理时直接调用查找表之中对应值,以此大大减少加法计算量。三实习过程和步骤1用MFC AppWizard创建以“学号姓名”命名的项目:选择Multiple Docunment;选择视图类基类CScrollView;2根据给定DIBAPI.H,DIBAPI.CPP,MyFile.CPP文件,完成位图读写显示。3添加菜单和对话框,设置对话框的控件,界面如下图所示:4建立菜单的消息的响应函数,注意Slider控件的范围,由于其数据类型是整型
3、的,所以在设置其范围时应该扩大一定倍数,然后在实际计算时在除以这个倍数,这样可以提高滑块的精度,可以间接的得到小数点后几位数值。代码如下:void Cxxls:OnCustomdrawSlider1(NMHDR* pNMHDR, LRESULT* pResult) UpdateData(TRUE); UpdateData(FALSE);*pResult = 0;5编写功能函数1)基于灰度查找表的图像线形变换首先创建一个灰度查找表,代码如下:int max=p0;int min=p0;for(int a=0;a<heightDIB;a+)for(int b=0;b<widthDIB;
4、b+)if (pLineBytes*a+b >= max)max = pLineBytes*a+b;if (pLineBytes*a+b <= min)min = pLineBytes*a+b;int LookTable256;int i,j;for(i=min-1;i<max;i+)j=int(i*la);LookTablei = j+lb;if(LookTablei>255)LookTablei=255;if(LookTablei<0)LookTablei=0;通过调用灰度查找表,对图像进行线形变换,代码如下:int t;for(int x=0;x<he
5、ightDIB;x+)for(int y=0;y<widthDIB;y+)t = pLineBytes*x+y;pLineBytes*x+y=LookTablet-1;2)显示灰度直方图统计各灰度级像素出现的频率,具体代码如下:void CMy200332590087View:OnHistgram()/ TODO: Add your command handler code hereCMy200332590087Doc *pDoc = GetDocument();HDIB hdib;hdib=pDoc->GetHDIB();if (hdib=NULL)MessageBox(&quo
6、t;请先打开一幅BMP图象!","系统消息",MB_ICONINFORMATION|MB_OK);return;LPSTR pDIB=(LPSTR)LocalLock(hdib);LPBYTE pData=(LPBYTE):FindDIBBits(pDIB);BITMAPINFOHEADER *lpDIBHdr;/位图信息头结构指针;BYTE *lpDIBBits;/指向位图像素灰度值的指针;lpDIBHdr=( BITMAPINFOHEADER *)GlobalLock(hdib);/得到图像的位图头信息lpDIBBits=(BYTE*)lpDIBHdr+siz
7、eof(BITMAPINFOHEADER)+256*sizeof(RGBQUAD);CZhifangtu dialog;int i,j;int wImgWidth=:DIBWidth(pDIB);int wImgHeight=:DIBHeight(pDIB);/a数组用来存放各个灰度级出现的概率;float a256;for(i=0;i<256;i+)ai=0;/统计各个灰度级出现的次数;for(i=0;i<wImgHeight;i+)for(j=0;j<wImgWidth;j+)a*(lpDIBBits+WIDTHBYTES(wImgWidth*8)*i+j)+; /统计各
8、个灰度级出现的概率;for(i=0;i<256;i+)ai=ai/(wImgHeight*wImgWidth);/得到每个灰度级的出现概率 memcpy(dialog.num,a,256*sizeof(float);dialog.DoModal();UpdateData(TRUE);利用VC的画线函数绘制一个直方图,具体代码如下: void CZhifangtu:OnPaint()CRect rect(0,10,310,205);/矩形区域对象;CWnd *pWnd;/得到图片框的窗口指针;pWnd=GetDlgItem(IDC_ZFT);/得到对话框内的"Frame"
9、;控件的指针 pWnd->GetClientRect(&rect);/得到"Frame"控件窗口的"视"区域; int i;CPaintDC dc(pWnd);/得到"Frame"控件的设备上下文;/画直方图的x、y轴;dc.MoveTo(0,rect.Height();dc.LineTo(rect.Width(),rect.Height();dc.MoveTo(0,rect.Height();dc.LineTo(0,0);/ 绘制X轴箭头dc.MoveTo(rect.Width(),rect.Height();dc.L
10、ineTo(rect.Width()-10,rect.Height()-10);dc.MoveTo(rect.Width(),rect.Height();dc.LineTo(rect.Width()-10,rect.Height()+10);/ 绘制Y轴箭头dc.MoveTo(0,0);dc.LineTo(10,10);dc.MoveTo(0,0);dc.LineTo(-10,10);/画直方图/num内部数组变量/存放的是图像各个灰度级出现的概率;/该数组的各个分量在显示具体图像的直方图时设置;for(i=0;i<256;i+)/根据图像上的各个灰度级出现的概率/在坐标上对应的画出一根
11、直线/从而各个表示各灰度级出现概率的直线构成了图像的直方图;CPen myPen(PS_SOLID,1,RGB(0,255,0);dc.SelectObject(&myPen);dc.MoveTo(i+1,rect.Height();dc.LineTo (i+1,(rect.Height()-rect.Height()*numi*10);/此处num分量乘以"10"是为了放大个灰度级上对应的出现概率直线,增强显示效果;四实习分析与评价1、位图显示2、线形变换3、直方图显示实习要求基本达到了,图像处理效果良好,但是还有两点不足,一是直方图显示方面由于时间关系仅仅绘制了
12、坐标轴没有绘制坐标值,应该通过TEXTOUT语句完成;二是未能实现图像的实时处理和直方图的实时更新,这一点需要了解SLIDER控件的数据通信操作,由于本人变成水平有限,未能完成。五实习总结与体会本次基于灰度查找表的图像线性变换实习仅有三次实习时间,但由于有上个学年数字图像处理的编程基础,所以实习过程中并未碰到很大的障碍,比较顺利的完成了实习的基本要求。回想本次编程实习,首先碰到的一个问题是算法的理解,就是基于灰度查找表的图像计算如何能减少计算量,这一点实习原理中已说得很清楚,但是,就灰度查找表的构建问题,我刚开始对老师给出的方法提出了质疑。我想构建灰度查找表并不需要寻找出图像中的灰度最大和最小值,而在灰度0到255的区间里全部赋值即可,这样还可以减少计算图像灰度最值的过程,不需要遍历图像一遍。但后来仔细思考了一下,利用灰度最值可以减少灰度运算时的查找量,应该是一种通行的方法,所以最后仍然使用了老师给出的算法。 在具体的编程过程中,线性变换和灰度直方图的显示都并不难,但是,要实现图像的实时处理和直方图的实时更新就不容易了。由于对SLIDER控件不熟悉,我并没有在实习安排的时间内完成这个功能。但是我参看了一些同学编写的实习处理的程序,看到有一种方法是在OnCus
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 学校教科研工作心得体会
- 部编版一年级语文口语表达教学计划
- 2024学年四年级法治教育提升计划
- 文化旅游有限合伙企业注册流程
- 苏教版七年级生物课堂互动计划
- 医院后勤人员年度总结范文
- 个人职业发展路径计划
- 体育赛事资助领导小组成员及职责
- 销售经理社交媒体营销职责
- 酒店弱电系统整合进度计划及保障措施
- 云计算服务器租赁合同范本
- 老年性白内障的护理查房
- 护理静疗持续改进案例
- 开封市第二届职业技能大赛工业4.0项目技术文件(世赛选拔项目)
- 2023大学生商业计划书(15篇)
- 形势与政策(贵州财经大学)知到智慧树章节答案
- 2024江苏社区工作者试题汇编
- 交互式多媒体智慧黑板 投标方案(技术方案)
- 中国执业医师法课件
- 2024年兜底协议模板
- 人力资源和社会保障一体化公共服务平台政务服务管理规范
评论
0/150
提交评论