




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 本科生实验报告实验课程 数字图像处理实验报告 学院名称 信息科学与技术学院 专业名称 物联网工程 学生姓名 伍文罡 学生学号 201413060205 指导教师 覃章健 实验地点 6b607 实验成绩 二 17 年 3 月 二 17 年6 月 图像灰度直方图的绘制和均衡一:实验目的1了解BMP图像的基本格式;2了解BMP图像文件的打开和存储;3利用VC编写BMP图像的打开和存储的程序;4了解对灰度图像进行直方图统计的过程;5在计算机上调试程序。二:实验原理1、灰度直方图 直方像图反映了图的像素的灰度分布是反映一幅图像中的灰度级与出现这种灰度级的像素的概率之间关系的图形。 直方图的横坐标为灰度
2、级(用r表示),纵坐标是具有该灰度级的像素个数或出现此灰度级的概率P(rk)。 设N(=ab)为一幅图像中像素总数,nk为第k级灰度的像素数;r k表示第k个灰度级。则: P(rk)= nk /N (归一化后k级灰度像素数) 定义:反映各灰度级出现频数的分布情况,进而反映图像对(清晰)度,但不反映各灰度级的空间位置分布。图像的(灰度统计)直方图是一个一维的离散函数。它的定义为:设sk为图像f(x,y)的第k级灰度值,nk是f(x,y)中具有灰度值sk的象素的个数,n是图像象素总数,则:ps(sk)= nk/n k=0,1,L-1称为图像f(x,y)的直方图。这里ps(sk)代表原始图中第k个灰
3、度级的出现概率。以nk为自变量,以ps(sk)为函数,得到的曲线就是图像的直方图,在实际中常常直接将对第k个灰度级的统计值nk作为图像的直方图。它提供了原图灰度值的分布情况,也可以说给出了一幅图所有灰度值的整体描述。对灰度图像进行直方图统计的程序流程图如图2-2所示。 图2-2 灰度图像直方图统计流程2、直方图均衡化如上面所述,一幅给定的图像的灰度级分布在0 r 1范围内。可以对0, 1区间内的任一个 r 值进行如下变换 也就是说,通过上述变换,每个原始图像的像素灰度值 r 都对应产生一个 s 值。 变换函数T(r)应满足下列条件:(1)在0r1区间内,T(r)单值单调增加;(2)对于0r1,
4、有0T(r)1。这里的第一个条件保证了图像的灰度级从白到黑的次序不变。第二个条件则保证了映射变换后的像素灰度值在允许的范围内。3、直方图规定化希望能够有目的地增强某个灰度区间的图像, 即能够人为地修正直方图的形状, 使之与期望的形状相匹配,这就是直方图规定化的基本思想。换句话说,希望可以人为地改变直方图形状,使之成为某个特定的形状,直方图规定化就是针对上述要求提出来的一种增强技术,它可以按照预先设定的某个形状来调整图像的直方图。直方图规定化是在运用均衡化原理的基础上,通过建立原始图像和期望图像之间的关系,选择地控制直方图,使原始图像的直方图变成规定的形状,从而弥补了直方图均衡不具备交互作用的特
5、性。4、BMP图像文件格式BMP图像文件是Microsoft Windows所规定的图像文件格式。随着Windows的风行全球,BMP图像文件也就成为PC机上流行的图像文件格式。BMP图像文件具有下列六项特色。(1)文件结构只能存放一幅图像。(2)可以存储单色、16色、256色和全彩色四种图像数据。(3)图像数据可选择压缩或不压缩处理(4)Windows设计了两种压缩方式:RLE4和RLE8。RLE4处理16色图像数据;而RLE8则是压缩256图像数据。(5)图像数据排列顺序,与一般图像文件有所不同。(6)调色板的数据结构特殊。三:实验准备1:一张bmg格式原图2:vc6.0 四:实验过程1:
6、读图打开VC程序文件新建工程中的MFC AppWizard(exe),在工程下面的框中输入工程名(假定工程名为111),点确定选多重文档,点下一个后面都点下一个直到完成确定,基本框架就完成了,下面就加代码。这时VC界面上左边框的下面有三个按钮:ClassView、ResourceView和FileView,ClassView里面是工程111的类:CAdoutDlg、CChildFrame、CMy111App、CMy111Doc、CMy111View和Globals;点ResourceView里面是资源类:Accelerator、Dialog、Icon、Menu、String Table、Too
7、lbar和Version;点开FileView里面是文件类:Source File、Header Files、Resource Files和ReadMe.txt。点界面的“工程”按钮添加工程新建选C+ Source File,在文件下面的框里输入文件名(如DIBAPI),点“结束”,这样在FileView中的Source Files里面就多了一个DIBAPI.cpp文件,所有的代码都加在该文件中。再点界面的“工程”按钮添加工程新建选C/C+ Header File,在文件下面的框里输入文件名(和前面的文件名必须一致),点“结束”,这样在FileView中的Header Files里面就多了一个
8、DIBAPI.h文件,该文件是DIBAPI.cpp的头文件。点开DIBAPI.h文件,里面是空白的,把代码打入文件中:上述步骤中函数是实现图像的读取、存储等图像处理的基本功能的.点开DIBAPI.cpp文件,里面是空白的,将代码加入其中:上面是DIBAPI.h头文件中声明的函数的定义下面加相应的消息映射函数,点Ctrl+W键,会出现MFC ClassWizard对话框,点Message Maps,在Class name下面的框中选择CMy111Doc,在Messages里面选中OnOpenDocument,然后点击Add Function按钮就加入了相应的消息映射函数,同样的方法以此加入OnS
9、aveDocument、DeleteContents、CanCloseFrame相应的消息函数,点“确定”即可。点开111Doc.cpp文件,里面有相应的消息映射函数定义位置,完善相应要使用的函数.点开ClassView,右键点击CMy111Doc类,点Add Member Variable出现添加成员变量对话框,在Variable Type下的框中输入变量类型名HDIB,在Variable Name中输入变量名m_hDIB,在Access中选中Public就在CMy111Doc中加入了公共成员变量m_hDIB;同样加入int类型的m_nColorIndex、COLORREF类型的m_refC
10、olorBKG公共成员变量,再添加保护成员变量(在Access中选中Protected)CSize类的m_sizeDoc、CPalette*类的m_palDIB变量。右键点击CMy111Doc类,点Add Member Function出现添加成员函数对话框,在Function Type下的框中输入函数类型名void,在Function Declaration中输入函数名InitDIBData(),在Access中选中Public就在CMy111Doc中加入了公共成员函数InitDIBData();同样方法加入void类型的公共成员函数ReplaceHDIB(HDIB hDIB)。在111Do
11、c.cpp中加入函数的代码并完善功能函数则完成了关于图像打开、显示、保存的有关步骤和代码。2:显示直方图1、 点击ResourceView,右键点击Dialog,选Insert Dialog 在属性对话框中将ID改为ID_HIST,对话框名称改为“直方图”2、 在工具栏中点“插入”“新建类”,输入类名HAHA,并选Base Class为CDialog,Dialog ID为ID_HIST。这样就将对话框和类联系起来了,在该对话框中拖入一Edit控件,将其ID设为IDC_HISTSHOW;3、 快捷键“CtrlW”,出现MFC ClassWizard对话框,在Messages栏中分别选WM_INI
12、TDIALOG和WM_Paint,再点击“Add Function”,即将对话框初始化和画图函数加入对话框类之中。4. 完善HAHA.h文件以及CHist:OnInitDialog()函数 CHist:OnPaint()函数5. 点开ResourceView中的Menu,出现IDR_MAINFRAME和 IDR_MY111TYPE,双击IDR_MY111TYPE就出现了程序界面,有文件、编辑、查看、窗口、帮助按钮。点“查看”下面的虚线框右键点“属性”,输入标题(直方图),和ID(大写英文,如ID_VIEW_HIST),这样就将按钮和程序通过ID联系起来了,点击该按钮,就会执行相应的程序。下面为
13、该按钮添加函数:点Ctrl+W ,出现MFC ClassWizard对话框,选Class name为CMy111View,在Object IDs对应的选项中选中设置的ID(如为ID_VIEW_HIST),在Messages选项中选中COMMAND,然后点击“Add Function”按钮,选默认设置,就为ID_VIEW_HIST添加了相应的函数OnViewHist()。该函数在111View.cpp文件中定义在函数void CMy111View: OnViewHist()添加代码:则,可打开图片并显示图片的灰度直方图.3. 均衡灰度均衡化的目的是使一输入图像转换为在每一灰度级上都有相同的像素点
14、(即输出的直方图是平的),它可以产生一幅灰度级分布概率均衡的图像。换句话说,经过均衡化后的图像在每一级灰度上像素点的数量相差不大,对应的灰度直方图的每一级高度也相差不大。它是增强图像的有效手段之一。研究思路是通过直方图变换公式实现:它的步骤如下图所示: ID_DYS_JHH:表示图像均衡化 相见算法void CImageProcessingView:OnDysJhh() if(numPicture=0) AfxMessageBox(载入图片后才能图像均衡化!,MB_OK,0);return;AfxMessageBox(图像均衡化!,MB_OK,0); /第一步:获取图像的数据信息/此操作可以在
15、打开图片时就进行 在直方图采样(ZFTCY)中也有该代码FILE *fpo = fopen(BmpName,rb);fread(&bfh,sizeof(BITMAPFILEHEADER),1,fpo);fread(&bih,sizeof(BITMAPINFOHEADER),1,fpo);int i,j,k;for(j=0;j256;j+) /定义数组并清零Redj=0;Greenj=0;Bluej=0;/计算4个数据unsigned char red,green,blue;int IntRed,IntGreen,IntBlue; /强制转换double sumRedHD=0,sumGreenH
16、D=0,sumBlueHD=0; /记录像素总的灰度值和for(i=0; i=0 & IntRed=0 & IntGreen=0 & IntBlue256 ) BlueIntBlue+;fclose(fpo);/*/* 图像均衡化处理 /* 利用全局变量 Red256 Blue256 Green256 /* 第一步:用3个数组Count.记录0-255灰度出现的概率,即 /* 概率=该灰度出现次数*3/总得像素 (因为分成3部分RGB) /* 第二步:i从1开始,令si=si+si-1 记录新概率数 /* 第三步:用一个数组L记录新的调色板索引值,即 /* Li=si(256-1)结果四舍五入
17、2.8即为3 /* 第四步:将老的索引值对应的概率合并,作为对应的新的索引值的概率 /* 1.原来的索引值0,1都对应了新的索引值0,则灰度索引值为0的概率 /* 为P0+P1=0.03 /* 2.新的索引值3和7找不到老的索引值与之对应,所以令Q3和Q7为0 /*/记录出现的概率,会加到1 用于相加到调色板float CountRed256,CountGreen256,CountBlue256; /记录原始数据,不会相加到1 用于计算新灰度概率float CountRedLin256,CountGreenLin256,CountBlueLin256; for( k=0 ; k256 ; k+
18、 )CountRedk=(float)(Redk)*3/m_nImage;CountRedLink=CountRedk;CountGreenk=(float)(Greenk)*3/m_nImage;CountGreenLink=CountGreenk;CountBluek=(float)(Bluek)*3/m_nImage;CountBlueLink=CountBluek;for( k=1 ; k256 ; k+ ) CountRedk=CountRedk+CountRedk-1;CountGreenk=CountGreenk+CountGreenk-1;CountBluek=CountBlu
19、ek+CountBluek-1;/*/* 此处百度到一个四舍五入浮点型的算法: /* float a=3.456; 保留到小数点后两位 /* float b=(int)(a * 100) + 0.5) / 100.0; /* output b=3.46 /*/int LRed256,LGreen256,LBlue256; /记录调色板for( k=0 ; k256 ; k+ )LRedk=(int)(CountRedk*(256-1)+0.5);LGreenk=(int)(CountGreenk*(256-1)+0.5);LBluek=(int)(CountBluek*(256-1)+0.5);/第三步:处理均衡化图像写入 打开临时的图片
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年水电年终总结模板5篇
- 2025年中国气动斜口钳市场调查研究报告
- 软件工程师工作年度总结10篇
- 全国版2025版高考地理大二轮复习高考选择题专练二动态数据分析型
- 幼儿园班级保健总结(3篇)
- 课标版2025届高考地理二轮复习专题十三区域可持续发展练习
- 2024年统计学重要试题及答案
- 2025年语文知识点考查试题及答案
- DB15T 3609-2024黑土地土壤微生物肥力评价规范
- 六年级上册演讲稿语文20篇(全文)
- 2024-2025学年高中化学上学期第十四周 化学反应速率教学实录
- 2025年初中地理中考押题卷(含解析)
- 【2025新教材】教科版一年级科学下册全册教案【含反思】
- 火锅店创业计划书:营销策略
- 交通大数据分析-深度研究
- 基础护理学试题及标准答案
- DB11-T 1754-2024 老年人能力综合评估规范
- 招聘团队管理
- 【课件】用坐标描述简单几何图形+课件人教版七年级数学下册
- 电商运营岗位聘用合同样本
- 2023年浙江省杭州市上城区中考数学一模试卷
评论
0/150
提交评论