(x, y)处的灰度为 f,而改变后的图像为 g,则对图像增强的方法可表述为将在(x,y)处 的灰度 f 映射为 g。在灰度直方图均衡化处理中对图像的映射函数可定义为:g = EQ (f),这个映射函数 EQ(f)必须满足两个条件(其中 L 为图像的灰度级数): (1)EQ(f)在 0≤f≤L-1 范围内是一个单值单增函数。 这是为了保证增强处理没有 打乱原始图像的灰度排列次序, 原图各灰度级在变换后仍保持从黑到白(或从白到黑) 的排列。 (2)对于 0≤f≤L-1 有 0≤g≤L-1,这个条件保证了变换前后灰度值动态范围的 一致性。 累积分布函数(cumulative distribution function,CDF)即可以满足上述两个 条件,并且通过该函数可以完成将原图像 f 的分布转换成 g 的均匀分布。此时的直方 图均衡化映射函数为: gk = EQ(fk) = (ni/n) = pf(fi) , (k=0,1,2,……,L-1) 上述求和区间为 0 到 k,根据该方程可以由源图像的各像素灰度值直接得到直方 图均衡化后各像素的灰度值。在实际处理变换时,一般先对原始图像的灰度情况进行 统计分析,并计算出原始直方图分布,然后根据计算出的累计直方图分布求出 fk 到 gk 的灰度映射关系。在重复上述步骤得到源图像所有灰度级到目标图像灰度级的映
2
武汉理工大学《图像处理程序设计》课程考核说明书
射关系后,按照这个映射关系对源图像各点像素进行灰度转换,即可完成对源图的直 方图均衡化。
1.3 设计
方案及实现
功能
利用 Visual C++中提供的 MFC 框架
设计一个简单的应用程序框架,具有图像显示, 图像直方图均衡, 直方图均衡后图像等菜单栏, 再利用 C++具有面向对象程序设计的性质, 编写程序代码实现 MFC 框架中对应菜单栏中的图像处理的功能,即可得到一个简易的图像 处理系统,达到课程考核题目的要求。 本次课程考核设计了一个简单的图片处理
系统,主要具有以对话框的形式显示原始图 片(bmp 格式)、显示原图像的直方图、图像直方图均衡化、显示均衡化处理后的直方图的 功能。
2 实现步骤
步骤 1:创建单
文档应用项目 启动 VC,新建——工程——MFC APP Wizard[exe].定义工程名称 VC,确定在选择单
文档模 式完成,实现出单文档项目的建立。 步骤 2:主框架菜单的添加 在 VC 的工作空间下方点 Resources 找到 VC 资源目录,从中看到 Menu 菜单项,点击 打开。然后看到主框架,双击一项或查看属性在标明里面可以修改显示字符。按此次设计 要求,在主框架一项上修改为图像处理,在其弹出打上勾,在弹出框里一次编辑“显示原 图像”“显示直方图”“显示均衡化后直方图”“显示直方图均衡化后的图像” 、 、 、 。ID 定义 留到依次设计此 command 功能的定义,以防弄混。 实现主框架菜单的添加。 步骤 3:BMP 图像的打开 在主框架菜单第一项中,系统有一默认的文件,其下拉框有打开,对其进行类向导, 选择在 CVcview 下,可观察到
工作空间的 class view 中的 CVcview 下会出现 ONFileOpend 的类,由于应用 OnPaint,此时在 CVcview 出点右键,Add windows Messsages Hander— 然后选择 WM_PAINT,添加 On paint,此时可对 ONFileOpen 和 Onpaint 写入代码实现 BMP
3
武汉理工大学《图像处理程序设计》
课程考核说明书
图像文件的打开。 在完成写入代码的操作以后需将 tools 这一工具函数文件的、引入到工程中,先将 tools,cpp 与 tool..h 粘贴进入工程目录下,然后在工作空间中选择 FileView 一栏分别 在 SourcesFile 和 HeaderFile 下添加 cpp 和 h 文件。完成 tools 的添加。此时需注意在
程序开头打入 include“tools.h”. 从而实现图像 BMP 文件的打开。 步骤 4:显示原图像的功能实现 在 Menu 中找到显示原图像这一 command,首先定义 ID 为 ID_XIAN_SHI,对其建立类 向导如 FileOpen。然后再其中写入代码。先可用 MessageBox( “ok”)进行操作检验。成 功后,建立 dlg,在 Resources 中