直方图图像增强实验报告
数字图像处理作业直方图图像增强【摘要】在自然界中很多图像可能都不符合人的视觉特点,因此有必要根据图像的特点采用一定的方法增强图像的视觉感知效果。本次作业通过直方图来增强图像,主要是对直方图进行修正来达到视觉转换。具体方法为直方图均衡、直方图匹配以及图像分割技术。其中,直方图均衡是调整图像的对比度使其增强;直方图匹配是将所要处理图像的直方图与已知直方图进行类似匹配的方法;而图像分割是将一副图像的前景与背景区别开来的技术。1. 把附件图像的直方图画出:【注】:由于源图像中的附图均是以索引图的形式给出,因此在画直方图之前需要将其转换成灰度图。如果调色板缺失,需要先将调色板中缺失的色彩信息补全之后,再用 matlab 工具箱提供的图像类型转换函数(G=ind2gray(A,map)% 将索引图转换成灰度图)进行类型转换。利用 MATLAB 工具箱,我们可以直接通过函数 imhist( )来画出图像的直方图。处理结果如下:0100020003000citywall.bmp为 为 为 为 为0 100 2000500010000citywall1.bmp为 为 为 为0 100 2000500010000citywall2.bmp为 为 为 为0 100 2000100020003000elain.bmp为 为 为 为 为0 100 200050001000015000elain1.bmp为 为 为 为0 100 200050001000015000elain2.bmp为 为 为 为0 100 20000.511.52x 104elain3.bmp为 为 为 为0 100 2000100020003000lena.bmp为 为 为 为 为0 100 200012x 104lena1.bmp为 为 为 为0 100 2000200040006000lena2.bmp为 为 为 为0 100 200050001000015000 lena4.bmp为 为 为 为0 100 2000246x 104woman.bmp为 为 为 为 为0 100 200024x 105woman1.bmp为 为 为 为0 100 200012x 105woman2.bmp为 为 为 为0 100 2002. 把所有图像进行直方图均衡;输出均衡后的图像和源图像进行比对;分析改善内容;【分析】:直 方 图 均 衡 化 是 图 像 处 理 领 域 中 利 用 图 像 直 方 图 对 对 比 度 进 行调 整 的 方 法 。 该方法通过灰度变换将一幅图像转换为另一幅具有均衡直方图,即在每个灰度级上都具有相同的象素点数的过程。直 方 图 均 衡 化 则 通 过 使 用 累 积 函 数 对 灰 度 值 进 行 “调 整 ”以 实 现 对 比 度的 增 强 。处 理 结 果 如 下 :为 为 为 为 elain.bmp为 为 为 为 为05001000150020002500300035004000450050000 100 200为 为 为 为 citywall1.bmp为 为 为 为 为05000100000 100 200为 为 为 为 citywall2.bmp为 为 为 为 为05000100000 100 200为 为 为 为 elain.bmp为 为 为 为 为0200040000 100 200为 为 为 为 elain1.bmp为 为 为 为 为0500010000150000 100 200为 为 为 为 elain2.bmp为 为 为 为 为0500010000150000 100 200为 为 为 为 elain3.bmp为 为 为 为 为00.511.52x 1040 100 200为 为 为 为 elain.bmp为 为 为 为 为0200040000 100 200为 为 为 为 lena1.bmp为 为 为 为 为012x 1040 100 200为 为 为 为 lena2.bmp为 为 为 为 为02000400060000 100 200为 为 为 为 lena4.bmp为 为 为 为 为0500010000150000 100 200为 为 为 为 woman.bmp为 为 为 为 为012345678910x 1040 100 200为 为 为 为 woman1.bmp为 为 为 为 为024x 1050 100 200为 为 为 为 woman2.bmp为 为 为 为 为012x 1050 100 200可 见 , 处 理 后 图 像 的 对 比 度 有 一 定 程 度 的 增 强 , 但 同 时 直 方 图 均 衡 也 存在 着 以 下 缺 点 : 1) 变 换 后 图 像 的 灰 度 级 减 少 , 某 些 细 节 消 失 ; 2) 某 些 图 像 , 如 直 方 图 有 高 峰 , 经 处 理 后 对 比 度 不 自 然 的 过 分 增 强 。3.进一步把图像按照对源图像直方图的观察,各自指定不同源图像的直方图,进行直方图匹配,进行图像增强;分析:直 方 图 匹 配 : 是 指 使 一 幅 图 像 的 直 方 图 变 成 规 定 形 状 的 直 方 图 而进 行 的 图 像 增 强 方 法 。 将 图 像 直 方 图 以 标 准 图 像 的 直 方 图 为 标 准 作 变 换 ,使两 图 像 的 直 方 图 相 同 和 近 似 ,从 而 使 两 幅 图 像 具 有 类 似 的 色 调 和 反 差 。均 衡 后 的 图 像 , 灰 度 值 减 少 , 图 像 对 比 度 明 显 增 强 , 但 是 导 致 很 多 地 方的 细 节 模 糊 , 看 不 清 楚 ; 而 且 有 些 地 方 过 分 增 强 , 严 重 干 扰 清 晰 度 。利 用 Matlab 工 具 箱 实 现 图 像 直 方 图 匹 配 , 就 用 imhist( )函 数 和 histeq( )函 数 。处 理 结 果 :为为为为为为为为citywall1.bmp(为为为为citywall.bmp)020004000600080001000012000为为为为为citywall1.bmp为为为为0 50 100 150 200 250为为为为为citywall2.bmp(为为为为citywall.bmp)02000400060008000100001200014000 为为为为为citywall2.bmp为为为为0 50 100 150 200 250为 为 为 为 为 elain1.bmp(为 为 为 为 elain.bmp)020004000600080001000012000140001600018000为 为 为 为 为 elain1.bmp为 为 为 为0 100 200为 为 为 为 为 elain2.bmp(为 为 为 为 elain.bmp)020004000600080001000012000140001600018000为 为 为 为 为 elain2.bmp为 为 为 为0 100 200为 为 为 为 为 elain3.bmp(为 为 为 为 elain.bmp)00.20.40.60.811.21.41.61.82x 104为 为 为 为 为 elain3.bmp为 为 为 为0 100 200为 为 为 为 为 lena1.bmp(为 为 为 为 elain.bmp)00.511.522.5x 104为 为 为 为 为 lena1.bmp为 为 为 为0 100 200为 为 为 为 为 lena2.bmp(为 为 为 为 elain.bmp)0100020003000400050006000为 为 为 为 为 lena2.bmp为 为 为 为0 100 200为 为 为 为 为 lena4.bmp(为 为 为 为 elain.bmp)050001000015000为 为 为 为 为 lena4.bmp为 为 为 为0 100 200为 为 为 为 为 woman1.bmp(为 为 为 为 woman.bmp)012345x 105为 为 为 为 为 woman1.bmp为 为 为 为0 100 200为 为 为 为 为 woman2.bmp(为 为 为 为 woman.bmp)00.511.522.5x 105为 为 为 为 为 woman2.bmp为 为 为 为0 100 2004.利用直方图对图像 elain 和 woman 进行分割;【分析】:利用直方图对图像进行分割,我们可以采用阈值分割法。阈值分割的实质是利用图像的灰度直方图信息获得用于分割的阈值。它是用一个或几个阈值将图像的灰度级分为几个部分,认为属于同一部分的像素是同一个物体。该方法特别适用于目标和背景占据不同灰度级范围的图像。其灰度级直方图呈明显的双峰值。然后在峰谷处的灰度值就可以作为阈值来对图像进行分割。直方图统计的是灰度值出现的频数,那些在第一个峰值附近的灰度值和第一个峰值接近,在第二个峰值附近的灰度值和第二个峰值接近,所以以2个峰值的中间的峰谷对应的灰度值为阈值。大于阈值的点归为一类,小于阈值的点归为一类,这样就把图像分割成2类。以上是比较理想的情况 , 比如本实验中elain.bmp的直方图,就可以看成是双峰型。因此,对于这幅图像,可以根据观察直方图来确定阈值。但实际中很难找到这样的图像。一幅通常有多个物体和背景所组成 ,假如,其灰度级直方图能呈现出多个明显的峰值,则仍可以选峰值间峰谷处的灰度值作为阈值,此时有多个阈值将图像进行分割,这样就是多峰值阈值选择。 比如有3个峰值,可以去两个峰谷处的灰度值 T1,T2 作为阈值。同样,可以将阈值化后的图像变成二值图像 。阈值分割的主要方法有:迭代法、最大类间方差法、动态阈值法、最大熵法等。本次实验中,采用了阈值迭代法。迭代的方法产生阈值,可以通过程序自动计算出比较合适的分割阈值。其计算方法是这样的:1.选择阈值 T,通常可以选择图像的平均灰度值来作为初始值;2.通过初始阈值 T,把图像的平均灰度值分成两组 R1 和 R2;3.计算两组平均灰度值 1 和 2;4.重新选择阈值 T,新的 T 的定义为:T=(1+2)/2;循环做第二步到第四步 , 一直到两组的平均灰度值 1 和 2 不再发生改变, 那么我们就获得了所需要的阈值。算法描述:1.取得原图得数据区指针以及图像的高和宽;2.进行直方图统计;3.设定初始阈值 T=127;4.分别计算图像中小于 T 和大于 T的两组平均灰度值;5.迭代计算阈值,直至两个阈值相等;6.根据计算出的阈值,对图像进行二值化处理。 【处理结果】:对于 elain.bmp,观察其直方图,并经过试探,发现当阈值为 115 时,分割效果较为理想。0 50 100 150 200 250050010001500200025003000elain.bmp为 为 为 为为为为为为为elain.bmp 为为为为115为对于 woman.bmp,采用迭代法进行取阈值。处理结果如下图:0 50 100 150 200 25001234567x 104 woman.bmp为 为 为 为为 为 为 为 为 为 为 为 为 为 为 为 为 为 woman.bmp为 为 为 为 为 为 woman.bmp 为 为 为 为 90为将分割结果与基于直接观察直方图法取阈值的结果进行对比,可知,迭代算法的效果更好一些。 【附录】1、源代码:第一题%画源图像的直方图以 citywall.bmp 为例:I=imread('E:大三下图像处理英文课件 作业第三次 源图像 citywall.bmp','bmp');Figure;subplot(2,2,