VC_编程实现直方图均衡化图像增强算法
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实现直方图均衡化的函数主要代码如下 : BOOL W INAP I Equalize ( LPSTR lpD IB s, LONG lW idth, LONG lHeight) { unsigned char3 lpSource; / / 指向源图像的指针 LONG lTmp; / / 临时变量 LONG t, s; / / 循环变量 BYTE bM ap table [ 256 ]; / / 灰度映射表 LONG lDegreeCount[ 256 ]; / / 灰度计数表
(1) EQ ( f)在 0≤f≤L - 1范围内是一个单值增 加函数 。这是为了保证增强处理没有打乱原始图像
的灰度排列次序 ,原图各灰度级在变换后仍保持从 黑到白 (或从白到黑 )的排列 。
(2) 对于 0 ≤f≤L - 1,有 0 ≤g≤L - 1,这个条 件保证了变换前后灰度值动态范围的一致性 。
摘要 :对数字图像空间域增强方法中的直方图均衡进行分析 ,并用 VC + + 6. 0进行算法实现 。实 验表明 ,该程序可以快速 、准确地对灰度图像进行均衡化 ,达到了使图像对比度增强 、图像质量提高的预 期目的 。
关键词 : V isual C + + ;图像增强 ;直方图均衡化 ; D IB 文件 中图分类号 : TN911173 文献标识码 : A 文章编号 : 1671 - 7864 (2007) 02 - 0003 - 03
The A lgor ithm of Image Enhancem en t in H istogram Equa liza tion by VC + +
L源自文库I Zhi2mei ( Guilin College of Aerospace, Guilin, 541004, China)
Abstract: This paper analyzes the histogram equalization in the enhancem ent of digital spatial dom ain by use of VC + + 6. 0 algorithm. Experim ents demonstrate that this p rogram can quickly and accurately realize the equalization for gray level image, and this enhancing the image contrast and reaching the goal of imp roving image quality. Key words:V isual C + + ; incage enhancement; histogram equalization; D IB
0 引言
图像增强是图像处理的最基本手段 , 它往住是 各种图像分析与处理时的预处理过程 。直方图均衡 化也叫直方图均匀化 ,就是把给定图像的直方图分 布改变成均匀分布的直方图 ,直方图均衡化算法是 图像增强空间域方法中的最常用 、最重要的算法之 一。
目前图像处理在算法实现中主要应用 M atlab 仿真工具 ,但 M atlab运行效率较低 ,且可移植性和 实用性均不太理想 。VC + +在程序运行效率 、内存 使用的可控性和编程的灵活性上均具有较大的优 势 。本文主要对空间域增强法中的直方图均衡进行 分析并用 VC + + 6. 0进行算法实现 。采用 VC + + 6. 0 集成开发环境 ,以达到算法能够快速有效地执 行 ,同时增强算法的可移植性 。
return TRUE;
} 在程序中把打开图像 、初始化 D IB 对象并获取
指向 D IB 对象的指针 、获取 D IB 对象的宽度和高度 等操作放到视图类中 ,并将指向图像 D IB 像素的指 针 lpD IB s、图 像 的 高 D IBW idth ( lpD IB ) 、宽 D IB 2 Height ( lpD IB )作为参数传递给 Equalize ( )函数 ,这 种方法能使程序的封装性和可移植性更好 ,体现了 面向对象编程技术的优越性 。
累计分布函数 ( cumulative distribution function, CDF)可以满足上述两个条件 ,并且通过该函数可以 完成将原图像 f的分布转换成 g的均匀分布 。此时 的直方图均衡化映射函数为
gk = EQ ( fk) = ( ni/ n) = pf ( fi) ,
k
∑ gk = EQ ( fk ) = ( ni / n) i =0
第 6卷 第 2期 2007年 4月
漯河职业技术学院学报 Journal of Luohe Vocational Technology College
Vol. 6 No12 Ap r12007
VC + +编程实现直方图均衡化图像增强算法
李志梅
(桂林航天工业高等专科学校 计算机系 ,广西 桂林 541004)
图 1 灰度图像均衡化处理流程
根据上述的算法描述 ,要实现灰度图像的直方 图均衡化必须首先统计原始图像的各级灰度值 ,在 程序中定义了一个数组 lDegreeCount [ 256 ]来统计 原始图像的各级灰度值 ,然后对得到的灰度值做灰 度映射 ,将映射后的结果存到一个新的灰度映射关 系数组 bM ap table [ 256 ]中 ,根据这个数组就可以确 定出原始图象的某个灰度级经过变换后对应于的灰 度级 ,最后将变换后的结果保存到 D IB 中 。经过这 样的处理后 ,就可把原始图像中密集分布的灰度值 映射到经过均衡化后的新灰度级上 ,增加了对比度 , 改善了视觉效果 。
4
漯河职业技术学院学报
2007年
分布 ,然后根据计算出的累计直方图分布求出 fk到 gk的灰度映射关系 。在重复上述步骤得到原始图 像所有灰度级到目标图像灰度级的映射关系后 ,按 照这个映射关系对原始图像各点像素进行灰度转 换 ,即可完成对原始图像的直方图均衡化 。
2 算法的实现
利用 VC + +实现的灰度图像均衡化处理的流 程如图 1所示 。
[责任编缉 吴保奎 ]
} for ( t = 0; t < lHeight; t + + ) / / 每行 { for( s = 0; s < lW idth; s + + ) / / 每列 { lpSource = ( unsigned char 3 ) lpD IB s + lL ineB ytes 3 ( lHeight - 1 - t) + s; 3 lpSource = bM ap table [ 3 lpSource ]; / / 根据映射表计算新的灰度值 } }
LONG lL ineB ytes; / / 图像每行的字节数 lL ineB ytes = W IDTHB YTES ( lW idth 3 8) ; / / 计 算图像每行的字节数
for ( t = 0; t < 256; t + + ) { lDegreeCount[ i ] = 0; } for ( t = 0; t < lHeight; t + + ) { for ( s = 0; s < lW idth; s + + ) / /计算各个 灰度值的计数 { lpSource = ( unsigned char 3 ) lpD IB s + lL ineB ytes 3 t + s; lDegreeCount[ 3 ( lpSource) ] + + ; / / 该灰度 值的计数加 1 } } for ( t = 0; t < 256; t + + ) / / 计算灰度映射表 { lTmp = 0; / / 初始为 0 for ( s = 0; sj < = t ; s + + ) { lTmp + = lDegreeCount[ s]; } bM ap table [ t ] = (BYTE) ( lTmp 3 255 / lHeight / lW idth) ; / / 计算灰度值新的映射表
3 实验结果
图 2、图 3分别是 Lena图像的原始图像和原始 图像的直方图 ,图 4、图 5分别是均衡化后的 Lena图 像和均衡化后的直方图 。通过对比可以看出 ,原始 Lena图像的灰度主要分布在中高灰度级上 ,在低灰
第 2期
李志梅 : VC + +编程实现直方图均衡化图像增强算法
5
度级上图像的像素数几乎为零 。经过直方图均衡化 处理后图像变的清晰了 ,处理后的 LENA 图像直方 图分布更均匀 ,在每个灰度级上都有像素点 。
( k = 0, 1, 2, ……, L - 1)
k
∑ = Pf ( fi ) i =0
上述求和区间为 0 到 k,根据方程可以由原始
图像的各像素灰度值直接得到直方图均衡化后各像
素的灰度值 。在实际处理变换时 ,一般先对原始图 像的灰度情况进行统计分析 ,并计算出原始直方图
收稿日期 : 2007 - 01 - 14 作者简介 :李志梅 (1972 - ) ,女 ,宁夏陶乐人 ,桂林航天工业高等专科学校讲师 ,湖南大学硕士研究生 。
图 2 原始 Lena图像
图 4 原始图像的直方图
图 3 均衡化后的 Lena图像
图 5 均衡化后的直方图
参考文献 :
[ 1 ] 容观澳. 计算机图像处理 [M ]. 北京 :清华大学出版社 , 2000. [ 2 ] 阮秋琦. 数字图像处理学 [M ]. 北京 :电子工业出版社 , 2001. [ 3 ] 李耀辉 ,刘保军. 基于直方图均衡的图像增强 [ J ]. 华北科技学院学报 , 2003, (2) : 65 - 67. 6. [ 4 ] 皋军. 图像的灰度直方图均衡化的实现 [ J ]. 盐城工学院学报 , 2001, (4) : 35 - 36. [ 5 ] 杨淑莹. VC + +图像处理程序设计 [M ]. 清华大学出版社 , 2005.
1 灰度图像直方图均衡化算法分析
直方图均衡化的基本思想是把原始图像的直方 图变换为均匀分布的形式 ,这样就增加了像素灰度 值的动态范围 ,从而达到了增强图像整体对比度的 效果 。设原始图像在 ( 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,这个条 件保证了变换前后灰度值动态范围的一致性 。
摘要 :对数字图像空间域增强方法中的直方图均衡进行分析 ,并用 VC + + 6. 0进行算法实现 。实 验表明 ,该程序可以快速 、准确地对灰度图像进行均衡化 ,达到了使图像对比度增强 、图像质量提高的预 期目的 。
关键词 : V isual C + + ;图像增强 ;直方图均衡化 ; D IB 文件 中图分类号 : TN911173 文献标识码 : A 文章编号 : 1671 - 7864 (2007) 02 - 0003 - 03
The A lgor ithm of Image Enhancem en t in H istogram Equa liza tion by VC + +
L源自文库I Zhi2mei ( Guilin College of Aerospace, Guilin, 541004, China)
Abstract: This paper analyzes the histogram equalization in the enhancem ent of digital spatial dom ain by use of VC + + 6. 0 algorithm. Experim ents demonstrate that this p rogram can quickly and accurately realize the equalization for gray level image, and this enhancing the image contrast and reaching the goal of imp roving image quality. Key words:V isual C + + ; incage enhancement; histogram equalization; D IB
0 引言
图像增强是图像处理的最基本手段 , 它往住是 各种图像分析与处理时的预处理过程 。直方图均衡 化也叫直方图均匀化 ,就是把给定图像的直方图分 布改变成均匀分布的直方图 ,直方图均衡化算法是 图像增强空间域方法中的最常用 、最重要的算法之 一。
目前图像处理在算法实现中主要应用 M atlab 仿真工具 ,但 M atlab运行效率较低 ,且可移植性和 实用性均不太理想 。VC + +在程序运行效率 、内存 使用的可控性和编程的灵活性上均具有较大的优 势 。本文主要对空间域增强法中的直方图均衡进行 分析并用 VC + + 6. 0进行算法实现 。采用 VC + + 6. 0 集成开发环境 ,以达到算法能够快速有效地执 行 ,同时增强算法的可移植性 。
return TRUE;
} 在程序中把打开图像 、初始化 D IB 对象并获取
指向 D IB 对象的指针 、获取 D IB 对象的宽度和高度 等操作放到视图类中 ,并将指向图像 D IB 像素的指 针 lpD IB s、图 像 的 高 D IBW idth ( lpD IB ) 、宽 D IB 2 Height ( lpD IB )作为参数传递给 Equalize ( )函数 ,这 种方法能使程序的封装性和可移植性更好 ,体现了 面向对象编程技术的优越性 。
累计分布函数 ( cumulative distribution function, CDF)可以满足上述两个条件 ,并且通过该函数可以 完成将原图像 f的分布转换成 g的均匀分布 。此时 的直方图均衡化映射函数为
gk = EQ ( fk) = ( ni/ n) = pf ( fi) ,
k
∑ gk = EQ ( fk ) = ( ni / n) i =0
第 6卷 第 2期 2007年 4月
漯河职业技术学院学报 Journal of Luohe Vocational Technology College
Vol. 6 No12 Ap r12007
VC + +编程实现直方图均衡化图像增强算法
李志梅
(桂林航天工业高等专科学校 计算机系 ,广西 桂林 541004)
图 1 灰度图像均衡化处理流程
根据上述的算法描述 ,要实现灰度图像的直方 图均衡化必须首先统计原始图像的各级灰度值 ,在 程序中定义了一个数组 lDegreeCount [ 256 ]来统计 原始图像的各级灰度值 ,然后对得到的灰度值做灰 度映射 ,将映射后的结果存到一个新的灰度映射关 系数组 bM ap table [ 256 ]中 ,根据这个数组就可以确 定出原始图象的某个灰度级经过变换后对应于的灰 度级 ,最后将变换后的结果保存到 D IB 中 。经过这 样的处理后 ,就可把原始图像中密集分布的灰度值 映射到经过均衡化后的新灰度级上 ,增加了对比度 , 改善了视觉效果 。
4
漯河职业技术学院学报
2007年
分布 ,然后根据计算出的累计直方图分布求出 fk到 gk的灰度映射关系 。在重复上述步骤得到原始图 像所有灰度级到目标图像灰度级的映射关系后 ,按 照这个映射关系对原始图像各点像素进行灰度转 换 ,即可完成对原始图像的直方图均衡化 。
2 算法的实现
利用 VC + +实现的灰度图像均衡化处理的流 程如图 1所示 。
[责任编缉 吴保奎 ]
} for ( t = 0; t < lHeight; t + + ) / / 每行 { for( s = 0; s < lW idth; s + + ) / / 每列 { lpSource = ( unsigned char 3 ) lpD IB s + lL ineB ytes 3 ( lHeight - 1 - t) + s; 3 lpSource = bM ap table [ 3 lpSource ]; / / 根据映射表计算新的灰度值 } }
LONG lL ineB ytes; / / 图像每行的字节数 lL ineB ytes = W IDTHB YTES ( lW idth 3 8) ; / / 计 算图像每行的字节数
for ( t = 0; t < 256; t + + ) { lDegreeCount[ i ] = 0; } for ( t = 0; t < lHeight; t + + ) { for ( s = 0; s < lW idth; s + + ) / /计算各个 灰度值的计数 { lpSource = ( unsigned char 3 ) lpD IB s + lL ineB ytes 3 t + s; lDegreeCount[ 3 ( lpSource) ] + + ; / / 该灰度 值的计数加 1 } } for ( t = 0; t < 256; t + + ) / / 计算灰度映射表 { lTmp = 0; / / 初始为 0 for ( s = 0; sj < = t ; s + + ) { lTmp + = lDegreeCount[ s]; } bM ap table [ t ] = (BYTE) ( lTmp 3 255 / lHeight / lW idth) ; / / 计算灰度值新的映射表
3 实验结果
图 2、图 3分别是 Lena图像的原始图像和原始 图像的直方图 ,图 4、图 5分别是均衡化后的 Lena图 像和均衡化后的直方图 。通过对比可以看出 ,原始 Lena图像的灰度主要分布在中高灰度级上 ,在低灰
第 2期
李志梅 : VC + +编程实现直方图均衡化图像增强算法
5
度级上图像的像素数几乎为零 。经过直方图均衡化 处理后图像变的清晰了 ,处理后的 LENA 图像直方 图分布更均匀 ,在每个灰度级上都有像素点 。
( k = 0, 1, 2, ……, L - 1)
k
∑ = Pf ( fi ) i =0
上述求和区间为 0 到 k,根据方程可以由原始
图像的各像素灰度值直接得到直方图均衡化后各像
素的灰度值 。在实际处理变换时 ,一般先对原始图 像的灰度情况进行统计分析 ,并计算出原始直方图
收稿日期 : 2007 - 01 - 14 作者简介 :李志梅 (1972 - ) ,女 ,宁夏陶乐人 ,桂林航天工业高等专科学校讲师 ,湖南大学硕士研究生 。
图 2 原始 Lena图像
图 4 原始图像的直方图
图 3 均衡化后的 Lena图像
图 5 均衡化后的直方图
参考文献 :
[ 1 ] 容观澳. 计算机图像处理 [M ]. 北京 :清华大学出版社 , 2000. [ 2 ] 阮秋琦. 数字图像处理学 [M ]. 北京 :电子工业出版社 , 2001. [ 3 ] 李耀辉 ,刘保军. 基于直方图均衡的图像增强 [ J ]. 华北科技学院学报 , 2003, (2) : 65 - 67. 6. [ 4 ] 皋军. 图像的灰度直方图均衡化的实现 [ J ]. 盐城工学院学报 , 2001, (4) : 35 - 36. [ 5 ] 杨淑莹. VC + +图像处理程序设计 [M ]. 清华大学出版社 , 2005.
1 灰度图像直方图均衡化算法分析
直方图均衡化的基本思想是把原始图像的直方 图变换为均匀分布的形式 ,这样就增加了像素灰度 值的动态范围 ,从而达到了增强图像整体对比度的 效果 。设原始图像在 ( x, y)处的灰度为 f,而改变后 的图像为 g,则对图像增强的方法可表述为将在 ( x,
y)处的灰度 f映射为 g。在灰度直方图均衡化处理 中 ,对图像的映射函数可定义为 : g = EQ ( f) ,这个 映射函数 EQ ( f)必须满足两个条件 (其中 L 为图像 的灰度级数 ) :