实验3.2 数字图像的灰度变换

实验3.2 数字图像的灰度变换

实验目的

1.掌握数字图像变换的一般方法;

2.理解数字图像变换的本质。

实验器材

计算机、灰度变换实验应用程序、VisualBasic6.0中文版。

实验原理

灰度变换是处理数字图像常用的一种技术。其做法是对原图像各像素的灰度值按一定的数学模型做变换,目的是改变原始图像各像素间的对比度(不改变原始图像矩阵、尺寸和像素坐标)。

灰度变换分为线性变换和非线性变换两大类。

1.线性变换(属直线变换)

满足的数学关系为线性变换函数和截断式线性函数等,具体内容如下:

(1)线性变换函数g(x,y)=kf(x,y)+b,其中f为原图像的像素值,g为变换后图像的像素值,k为选定的倍数(斜率),b为常数(截距)。

(2)截断式线性变换函数g(x,y)图示[f(x,y)-a]+m,其中f(x,y)为原图像坐标(x,y)点像素的像素值,g(x,y)为变换后坐标(x,y)点的像素值,(a,b)是原图像f(x,y)对应(限定)的灰度范围,(m,n)是限定灰度变换后图像g的灰度范围。可见,截断式线性函数变换是把图像值对应的灰度区间(a,b)变换为(m,n)。

本实验采用简单的y=kx+b型线性变换模型,其中x为原图像的像素值,y为变换后图像的像素值,k为选定的倍数(斜率),b为常数(截距)。

2.非线性变换

非线性变换属曲线变换,如对数变换、指数变换和其他曲线函数变换等。本实验采用对数变换[数学模型为y=Aln(kx),其中A是倍数,k是系数]和指数变换(数学模型为y=Aekx,其中A是倍数,k是系数)。对数变换在低值区可实现灰度扩展或增强,高值区实现对比度压缩或减小。正指数变换,在低值区可压缩或减小对比度,高值区实现对比度扩展或增强;而负指数变换则与正指数变换的作用效果相反,且有灰度反转作用。

经上述数学模型,由原图像像素值x求出的新图像的像素值y就改变了原图像的对比度(可能增大对比度,也可能减小对比度)。

此外,还有直方图调整(修改)法,此法也能改变图像对比度。任何一幅数字图像都对应一个确定的灰度直方图,直方图修改在本质上也属按一定的数学模型做变换。本实验采用直方图均衡化处理方法,即把原图像的直方图灰度均匀扩展,改变直方图的分布。

本模拟实验提供的原始图像多为低像素值(x值小)图像(这些图像看上去是模糊图像,看不出图像的结构),少数是高像素值图像。所以实验的工作主要是调整参数A,k,b等数值,变x值为y值,改变低值对比度图像,使原低对比度图像变换后能清晰地展现原图像相关部分的结构或全部的图像结构。

实验内容与步骤

1.基本实验部分

(1)线性及非线性变换:

①打开微机。

②启动灰度变换应用程序。

③进入实验,屏幕上呈现实验操作所用的界面,如图3-5及图3-6所示。熟悉界面上各部分结构、名称及文字描述和某些要求等。

图示

图3-5

④在原图像名框中输入选定的一个原图像名称(用鼠标点击界面上的“帮助”键可出现本实验提供的各个原图像的名称,均用小写英文字母表示),然后用鼠标点击界面上的“显示图像”键,则在原图像框中显示出原图像(注:看上去多数图像可能是模糊的)。

图示

图3-6

⑤在界面上提供的两个线性变换的参数(k1,b1及k2,b2)的输入框中,同时分别输入两个线性变换的参数k1,b1及k2,b2的数值(可选定数值)。

⑥在界面上提供的两个非线性变换的参数(A及k)的输入框中,同时分别输入两个非线性变换的参数A及k的数值(选定数值)。

注意:在上两步中输入的变换参数k1,b1及k2,b2和A,k后,由原图像像素值x求得的变换图像的像素值y要控制在0~255之间,这是因为本实验提供的图像均为256灰阶图像(对应0~255之间的数字)。

⑦上面的两步输入完成经检查无误后,在界面上找到“运行程序”键,并用鼠标点击,于是编制好的灰度变换程序开始运行,同时进行四个变换求解四个变换图像的像素值(此时屏幕左上方出现提示“正在运行程序,请稍候!”字样,程序运行大概需数秒的时间)。

⑧程序运行结束后,界面左上方会出现提示“程序运行结束,请显示图像”。此时在界面上再用鼠标点击“显示图像”键,则在界面上四个变换图像的图像框中就显示出经变换后的图像。(https://www.daowen.com)

⑨观察四个变换后的图像(两个线性变换和两个非线性变换)的变换效果(变换后的图像是否清晰展示了原图像的结构)。

⑩如果对哪一个变换结果不满意,则调整参数值,重复上述过程,重新运行程序重新做变换,反复进行参数的调整,反复进行变换,直到满意为止。

图示选用其他原图像(在原始图像名称输入框中改变原图像名称),重复上述过程(从第4步开始至第10步)。

实验中需格外注意的是:本实验采用的图像均为256灰阶图像,对应的灰度值为0~255之间的整数,这意味着由原图像像素值x求出的变换后图像的像素值y一般应为0~255之间的数,若y≤0,则一律按y=0计,图像中对应像素点表现为黑;若y≥255,则一律按y=255计,图像中对应像素点表现为白。所以,变换后图像中某区域为黑,表明该区域内变换后的像素值都≤0;变换后图像中某区域为白,表明该区域内变换后的像素值都≥255。若要改变上述情况,则需调整变换参数A,k和b的数值,重新运行程序求解。

应明确,不是任意一种变换对任意一幅图像变换的效果都好、都全面。

(2)直方图修改:

直方图修改一:修改原图像灰度直方图整体。

通过调整原图像直方图也可达到改变图像整体对比度的效果,如图3-7、图3-8所示。

图示

图3-7

①进入直方图1修改窗体(用鼠标点击“灰度变换”界面上的“转直方图1”键,屏幕上显示出直方图1界面),查看界面上各部分结构、文字说明及要求等。

图示

图3-8

②在界面上的图像名输入框中输入原图像名(可用鼠标点击“帮助”键查寻存在的用小写字母表示的各个原图像名称),如图3-7、图3-8所示。

③在图3-8的两个输入框中分别输入修改直方图灰度的下限值和上限值(0~255之间的数)。

④用鼠标点击“显示图像”键,则原图像框中显示出原图像。

⑤用鼠标点击“修改直方图”键,则调整程序开始运行,并先后显示出原图像的直方图和调整后的直方图及图像(前后大概需数秒钟)。

⑥观察修改前后的直方图及对应图像。

⑦若直方图调整的效果不好,可修改调整直方图下限和上限值,然后重新用鼠标点击“修改直方图”键,重新运行调整程序。这个过程要重复上述步骤,可反复调整,直到结果满意为止。

直方图修改二:修改原图像灰度直方图局部。

通过调整直方图灰度区间的局部可达到改变图像局部对比度的效果。

①进入直方图2修改窗体(用鼠标点击界面上的“转直方图2”键,屏幕上显示出直方图2界面),查看并熟悉界面上的各部分结构、文字说明及要求等。

②在界面上的图像名输入框中输入原图像名(可用鼠标点击“帮助”键查寻存在的用小写字母表示的各个原图像名称)。

③用鼠标点击“显示图像”键,则原图像框中显示出原图像。

④用鼠标点击“读原直方图”键,则先后在界面上显示出原图像、原图像的直方图和直方图所对应的灰度区间(分别在“低端值”和“高端值”文字下方的显示框中显示出来。请注意:在显示框中显示的高、低端灰度的数值不要改动)。

上述工作完成之后,再做修改直方图局部灰度分布的工作,操作如下:

⑤在选择直方图修改灰度区间内(上一步骤中在显示框中显示出的“低端值”和“高端值”之间的灰度值)选定,并输入修改直方图灰度区间的灰度值(在下限值和上限值文字下面的白框中输入)。

⑥用鼠标点击“修改直方图”键,则修改直方图程序开始运行(大概需数秒钟)。程序运行结束后,则在界面上显示出修改后的直方图和对应的修改直方图后的图像。

⑦观察修改后的直方图和对应图像。若对所得图像不满意,可改变(调整)修改直方图上下限灰度值,重新运行修改程序(用鼠标点击“修改直方图”键,反复调整,直到满意为止)。

2.选做部分

(根据学生掌握知识程度酌情选做以下各项)

(1)学生自己设计一个具有某种效果的灰度变换数学模型。

(2)学生自己设计并编写一个“灰度变换”应用软件。