matlab对比度拉伸代码,图像增强常用代码

主要内容、基本要求、主要参考资料等:

主要内容:

在图像形成、传输或变换的过程中,由于受到一些客观因素的影响,会使图像产生失真,如图像对比度降低和图像模糊等等。因此需要利用图像增强技术改善这种情况。寻找一幅灰度分布不均的原始图像,在MATLAB环境下对图像进行增强处理。要求利用灰度变换、直方图均衡化和直方图规定化对图像进行增强,显示增强前后的结果并比较增强的效果。

基本要求:

1、 学会 MATLAB 的使用,掌握 MATLAB 的程序设计方法。

2、熟悉数字图像处理的基本知识。 3、利用灰度变换中的线性变换、分段线性变换、非线性变换对图像进行增强。

4、利用直方图均衡化和直方图规定化对图像进行增强

5、显示增强前后的图像,并对比增强的效果。

主要参考资料:

1、包振华.基于MATLAB的灰度级线性变换图像增强[J].武汉职业技术学院学报.2006,3

2、 汪志云. 基于直方图的图像增强及其MATLAB实现[J].计算机工程与科学.2006,2

3、 贾永红. 数字图像处理[M].武汉大学出版社.2003,9

完 成 期 限:2010.6.21—2010.6.25

指导教师签名:

课程负责人签名:

2010年 6月 18日

1 MATLAB的使用及其程序设计方法

1.1 MATLAB简介

1.1.1 MATLAB的概况

MATLAB是矩阵实验室(Matrix Laboratory)之意。除具备卓越的数值计算能力外,它还提供了专业水平的符号计算,文字处理,可视化建模仿真和实时控制等功能。

MATLAB的基本数据单位是矩阵,它的指令表达式与数学,工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完相同的事情简捷得多.

开放性使MATLAB广受用户欢迎.除内部函数外,所有MATLAB主包文件和各种工具包都是可读可修改的文件,用户通过对源程序的修改或加入自己编写程序构造新的专用工具包.

1.2 MATLAB的使用

MATLAB 的M 文件是文件名后缀为M 的文件,有两种形式,一种是程序文件,一种是函数文件。

1.2.1 MATLAB的程序文件

MATLAB 的应用程序。

调用方法:只需在MATLAB 命令窗口直接输入文件名即可。

M文件建立方法:

1、在MATLAB中,选择菜单:“File”→“New” →“M-file”

2、在编辑窗口中输入程序内容

3、选择菜单“File” →“Save”,存盘。

1.2.2 MATLAB的函数文件

MATLAB 的内部函数是有限的,有时为了研究某一个函数的各种性态,需要为MATLAB 定义新函数,为此必须编写函数文件.

函数文件的第一行必须以特殊字符function 开始,格式为:

function  = 

函数值的获得必须通过具体的运算实现,并赋给因变量.

说明:

函数文件名必须与函数名一致。

程序文件也以M文件保存。

1.3 MATLAB 的程序设计方法

由关系运算符构成的表达式称为关系表达式。

1.3.1 逻辑运算符

关系操作符

说明

<

小于

<=

小于或等于

>

大于

>=

大于或等于

= =

等于

~=

不等于

由逻辑运算符构成的表达式称为逻辑表达式。

1.3.2 控制流

MATLAB 提供四种决策或控制语句:

if-else-end 语句、 switch 语句、 for 语句、while 语句

前两种属于分支结构,后两种属于循环结构。这些结构通常包含大量的MATLAB 命令,故常出现在MATLAB 程序中,而不是直接应用在MATLAB 提示符下。

2 数字图像处理的基本知识

2.1 数字图像处理的概念

2.1.1 图像的定义

图像:对客观对象的一种相似性的、生动性的描述或写真。

模拟图像:一种空间坐标和亮度(或色彩)都是连续变化的图像。

数字图像:一种空间坐标和灰度均不连续的、用离散数字(一般用整数)表示的图像。

2.1.2 图像的基本属性

亮度:也称为灰度,它是颜色的明暗变化,常用0%~100%(由黑到白)表示。以下三幅图是不同亮度对比。

对比度:是画面黑与白的比值,也就是从黑到白的渐变层次。比值越大,从黑到白的渐变层次就越多,从而色彩表现越丰富。

直方图:表示图像中具有每种灰度级的象素的个数,反映图像中每种灰度出现的频率。图像在计算机中的存储形式,就像是有很多点组成一个矩阵,这些点按照行列整齐排列,每个点上的值就是图像的灰度值,直方图就是每种灰度在这个点矩阵中出现的次数。

2.1.3 数字图像处理的概念

数字图像处理是指将图像信号转换成数字信号并利用计算机对其进行处理的过程。图像处理最早出现于 20世纪50年代,当时的电子计算机已经发展到一定水平,人们开始利用计算机来处理图形和图像信息。数字图像处理作为一门学科大约形成于20世纪60年代初期。早期的图像处理的目的是改善图像的质量,它以人为对象,以改善人的视觉效果为目的。图像处理中,输入的是质量低的图像,输出的是改善质量后的图像,常用的图像处理方法有图像增强、复原、编码、压缩等。

2.2 数字图像处理的内容

数字图像处理所包含的内容相当丰富,根据抽象程度的不同,数字图形处理可分为三个层次:侠义图像处理、图像分析、和图像理解。如图1所示。

数字图像处理主要研究的内容有以下几个方面:

1、图像变换由于图像阵列很大,直接在空间域中进行处理,涉及计算量很大。

2、图像编码压缩图像编码压缩技术可减少描述图像的数据量(即比特数),以便节省图像传输、处理时间和减少所占用的存储器容量。

3、图像增强和复原图像增强和复原的目的是为了提高图像的质量,如去除噪声,提高图像的清晰度等。

4、图像分割图像分割是数字图像处理中的关键技术之一。

5、图像描述图像描述是图像识别和理解的必要前提。

自20世纪60年代第三代数字计算机问世以后,数字图像处理技术出现了空前的发展,在该领域中需要进一步研究的问题主要有如下五个方面:

1、在进一步提高精度的同时着重解决处理速度问题;

2、加强软件研究,开发新的处理方法,特别要注意移植和借鉴其他学科的技术和研究成果,创造新的处理方法;

3、加强边缘学科的研究工作,促进图像处理技术的发展;

4、加强理论研究,逐步形成处理科学自身的理论体系;

5、时刻注意图像处理领域的标准化问题。

2.3 数字图像处理的特点及其应用

2.3.1 数字图像处理的基本特点

1、数字图像处理的信息大多是二维信息,处理信息量很大。

2、数字图像处理占用的频带较宽。与语言信息相比,占用的频带要大几个数量级。

3、数字图像中各个像素是不独立的,其相关性大。

4、由于图像是三维景物的二维投影,一幅图象本身不具备复现三维景物的全部几何信息的能力,很显然三维景物背后部分信息在二维图像画面上是反映不出来的。

5、数字图像处理后的图像一般是给人观察和评价的,因此受人的因素影响较大。

2.3.2 数字图像处理的主要应用

图像是人类获取和交换信息的主要来源,因此,图像处理的应用领域必然涉及到人类生活和工作的方方面面。随着人类活动范围的不断扩大,图像处理的应用领域也将随之不断扩大。

主要应用:航天和航空技术,生物医学工程,通信工程,机器人视觉,视频和多媒体系统,科学可视化,电子商务。

总之,图像处理技术应用领域相当广泛,已在国家安全、经济发展、日常生活中充当越来越重要的角色,对国计民生的作用不可低估。

2.3.3 数字图像处理的主要优点

1、再现性好。

2、处理精度高。

3、适用面宽。

4、灵活性高。

3 利用基本灰度变换对图像进行增强

灰度变换原理:灰度变换是一种空域处理方法,其本质是按一定的规则修改每个像素的灰度,从而改变图像的动态范围实现期望的增强效果。灰度变换按映射函数可分为线性、分段线性和非线性等多种形式。

3.1 线性灰度变换

线性灰度变换是将输入图像灰度值的动态范围按线性关系公式拉伸扩展至指定范围或整个动态范围。可突出感兴趣目标,抑制不感兴趣的目标。在实际运算中,原图像f(x,y)的灰度范围为[a,b],使变换后图像g(x,y)的灰度扩展为[c,d],则采用下述线性变换来实现:

线性灰度变换对图像每个灰度范围作线性拉伸,将有效地改善图像视觉效果。

源代码如下:

1、利用灰度调整函数变换图像

A=imread('e:\7.tif','tif'); %读入图像

B=imadjust(A,[0.1,0.8],[0,1]); %灰度调整

imwrite(B,'E:\ 1.tif'); %图像保存

subplot(2,2,1);imshow(A); %显示调整前后图像及其直方图

subplot(2,2,2);imhist(A);

subplot(2,2,3);imshow(B);

subplot(2,2,4);imhist(B);

2、利用灰度调整算法变换图像

clear;

a=60; %图像变换参数设定

b=180;

c=0;

d=255;

A=imread('pout.tif','tif'); %读入图像

[m,n]=size(A);

A=double(A);

for i=1:1:m %灰度调整

for j=1:1:n

if (A(i,j)>=a)&(A(i,j)

B(i,j)=(A(i,j)-a)*(d-c)/(b-a)+c;

end

end

end

uint8(A); uint8(B);

imwrite(B,'E:\2.tif'); %图像保存

subplot(2,2,1); imshow(A); %显示调整前后图像及其直方图

subplot(2,2,2); imhist(A);

subplot(2,2,3); imshow(B);

subplot(2,2,4); imhist(B);

3.2 分段线性灰度变换

为了突出图像中感兴趣的研究对象,常常要求局部拉伸某一范围的灰度值,或对不同范围的灰度值进行不同拉伸处理,即分段线性拉伸,数学表达式如下:

源代码如下:

clear;

a=80; %图像变换参数设定

b=160;

Mf=255;

c=50;

d=200;

Mg=255;

A=imread('pout.tif','tif'); %读入图像

[m,n]=size(A);

A=double(A);

for i=1:1:m %灰度调整

for j=1:1:n

if A(i,j)

B(i,j)=(c/a)*A(i,j);

elseif (A(i,j)>=a)&(A(i,j)

B(i,j)=(A(i,j)-a)*(d-c)/(b-a)+c;

else

B(i,j)=(A(i,j)-b)*(Mg-d)/(Mf-b)+d;

end

end

end

uint8(A); uint8(B);

imwrite(B,'E:\3.tif'); %图像保存

subplot(2,2,1); imshow(A); %显示调整前后图像及其直方图

subplot(2,2,2); imhist(A);

subplot(2,2,3); imshow(B);

subplot(2,2,4); imhist(B);

3.3 非线性灰度变换

非线性灰度变换在整个灰度范围内采用统一的变换函数,利用变换函数的数学性质实现对不同灰度值区间的扩展和压缩。

1、对数扩展。对数变换常用来扩展低值灰度,压缩高值灰度,这样可以使低值灰度的图像细节更容易看清,从而达到增强的效果。还可使图像灰度分布与人视觉特性相匹配。其具体形式为:

式中:[f(x,y)+1]是为了避免对零求对数;C为尺度比例系数,用于调节动态范围。

源代码如下:

clear;

A=imread('pout.tif','tif'); %读入图像

B=log(A+1); %灰度调整

imwrite(B,'e:\4.tif'); %图像保存

subplot(2,2,1); imshow(A); %显示调整前后图像及其直方图

subplot(2,2,2); imhist(A);

subplot(2,2,3); imshow(B);

subplot(2,2,4); imhist(B);

2、指数扩展。指数扩展的基本形式为:

式中:a为可以改变曲线的起始位置;c为可以改变曲线的变化速率,指数扩展可以对图像的高亮度进行大幅扩展。

源代码如下:

clear;

a=0.45; %图像变换参数设定

b=255;

c=255;

A=imread('pout.tif','tif');

[m,n]=size(A);

B=im2double(A);

for i=1:1:m

for j=1:1:n

B(i,j)=uint8(b^(c*(B(i,j)-a))-1);

end

end

imwrite(B,'E:\4.tif'); %图像保存

subplot(1,2,1); imshow(D); %显示调整前后图像及其直方图

subplot(1,2,2); imhist(D);

4 利用直方图均衡化和直方图规定化对图像进行增强

4.1 利用直方图均衡化对图像进行增强

通过灰度变换将一幅图像转换为另一幅具有均衡直方图的图像,即在一定灰度范围内具有相同的象素点数的图像的过程。其“中心思想”是把原始图像的灰度直方图从比较集中的某个灰度区间变成在全部灰度范围内的均匀分布。直方图均衡化就是对图像进行非线性拉伸,重新分配图像像素值,使一定灰度范围内的像素数量大致相同。直方图均衡化就是把给定图像的直方图分布改变成“均匀”分布直方图分布。

主要缺点:

1、变换后图像的灰度级减少,某些细节消失;

2、某些图像,如直方图有高峰,经处理后对比度不自然的过分增强。

算法如下:

为讨论方便,以r和s分别表示归一化了的原图像灰度和经直方图修正后的图像灰度。即

在[0,1]内设有变换

S=T(r)

且该函数单调递增,,于是有反变换

有概率论知,如果已知随即变量r的概率密度,而随机变量s是r的函数。则s的概率密度可以有求出。

从上式可以看出通过变换函数可以控制图像灰度级的概率密度函数,从而改变图像灰度层次,这就是直方图修正技术的基础。

因为归一化规定

有1式有

两边积分得

上式就是所求得的变换函数。它表明当变换函数是原图像直方图累积分布函数时,能达到直方图均衡化的目的。

离散形式可表示为:

可见均衡后的各像素的灰度值可直接由原图像的直方图算出。

在实际处理变换时,一般先对原始图像的灰度情况进行统计分析,并计算出原始直方图分布,然后根据计算出的累计直方图分布求出到的灰度映射关系。在重复上述步骤得到源图像所有灰度级到目标图像灰度级的映射关系后,按照这个映射关系对源图像各点像素进行灰度转换,即可完成对源图的直方图均衡化。

源代码如下:

Clear;

A=imread(‘pout.tif’);

B=imadjust(A);

imwrite(B,'E:\5.tif'); %图像保存

subplot(2,2,1); imshow(A); %显示调整前后图像及其直方图

subplot(2,2,2); imhist(A);

subplot(2,2,3); imshow(B);

subplot(2,2,4); imhist(B);

4.2 利用直方图规定化对图像进行增强

在实际应用中,希望能够有目的地增强某个灰度区间的图像, 即能够人为地修正直方图的形状, 使之与期望的形状相匹配,这就是直方图规定化的基本思想。换句话说,希望可以人为地改变直方图形状,使之成为某个特定的形状,直方图规定化就是针对上述要求提出来的一种增强技术,它可以按照预先设定的某个形状来调整图像的直方图。直方图规定化是在运用均衡化原理的基础上,通过建立原始图像和期望图像之间的关系,选择地控制直方图,使原始图像的直方图变成规定的形状,从而弥补了直方图均衡不具备交互作用的特性。直方图规定化就是针对上述思想提出来的。

其增强原理及步骤如下:

1、先对原始的直方图均衡化:

2、同时对规定的直方图均衡化:

3、由于都是均衡化,故令,则:。

源代码如下:

Clear;

A=imread(‘E:\7.tif’,’tif’); %读入待处理图像

B=imread(‘pout.tif’); %读入规定图像

[count,hagram]=imhist(B);

C=imadjust(A, hagram); %直方图规定化

imwrite(C,'E:\5.tif'); %图像保存

subplot(3,2,1); imshow(A); %显示调整前后图像及其直方图

subplot(3,2,2); imhist(A);

subplot(3,2,3); imshow(B);

subplot(3,2,4); imhist(B);

subplot(3,2,3); imshow(C);

subplot(3,2,4); imhist(C);

5 参考文献

1、包振华.基于MATLAB的灰度级线性变换图像增强[J].武汉职业技术学院学报.2006,3

2、汪志云. 基于直方图的图像增强及其MATLAB实现[J].计算机工程与科学.2006,2

3、贾永红. 数字图像处理[M].武汉大学出版社.2003,9

你可能感兴趣的:(matlab对比度拉伸代码)