图像空域增强算法设计——灰度变换增强
- 格式:docx
- 大小:270.70 KB
- 文档页数:19
实验三空域图像增强(灰度变换、直方图处理)一、实验目的1. 掌握灰度变换的基本原理。
2. 掌握直方图处理的基本原理。
3. 掌握Matlab中灰度变换和直方图处理的实现方法。
二、实验内容1. 灰度变换(直接正比变换)。
2. 灰度变换(截取式正比变换)。
3. 灰度变换(反比变换)。
4. 灰度变换(对比拉伸)。
5. 灰度变换(灰度切割)。
6. 灰度变换(对数变换)。
7. 灰度变换(幂次变换)。
8. 直方图处理(直方图均衡化)。
三、实验仪器、设备及材料1. 电脑一台(2G CPU、2GB RAM、50GB Disk及以上)。
2. Windows 2000 / Windows XP / Windows 7。
3. Matlab R2006b及以上版本。
4. 记录用的笔、纸。
四、实验原理1. 灰度变换灰度变换是一种点操作,根据原始图像中每个像素的灰度值,按照某种映射规则将其转化为另一灰度值。
其原理是将原图像f(x , y)中的每个像素的灰度按EH操作直接变换以得到目标图像g(x , y)。
若以s表示f(x , y),以t表示g(x , y),则灰度变换原理如下图所示:2. 直方图处理直方图变换可以清晰图像细节,突出目标物体,改善亮度比例关系,增强图像对比度。
直方图变换基于概率论。
直方图均衡化主要用于增强动态范围偏小的图像的反差。
其基本思想是把原图像的直方图转换为均匀分布的形式,增加像素灰度值的动态范围,增强图像整体对比度。
五、实验步骤1. 灰度变换(直接正比变换)(1) 程序源代码:close allclear15clcdisp('====E4_4_1.m====');I=imread('rice.png');subplot(3,3,1),imshow(I),ylabel('原图像');subplot(3,3,2),imhist(I);%方法1-系统函数J=imadjust(I,[40/255 204/255],[0 1]); %图像的最小灰度值为40,最大灰度值为204subplot(3,3,4),imshow(J),ylabel('变换图像(方法1)');subplot(3,3,5),imhist(J);%方法2-编程实现%把灰度值范围从[40,204]映射到[0,255]f0=0;g0=0; %分段曲线的第1个点f1=40;g1=0; %分段曲线的第2个点f2=204;g2=255; %分段曲线的第3个点f3=255;g3=255; %分段曲线的第4个点subplot(3,3,9),plot([f0,f1,f2,f3],[g0,g1,g2,g3]),xlabel('f'),ylabel('g'),axis([0 255 0 255]);%绘制变换曲线r1=(g1-g0)/(f1-f0); %曲线1的斜率b1=g0-r1*f0; %曲线1的截距r2=(g2-g1)/(f2-f1); %曲线2的斜率b2=g1-r2*f1; %曲线2的截距r3=(g3-g2)/(f3-f2); %曲线3的斜率b3=g2-r3*f2; %曲线3的截距[m,n]=size(I);K=double(I);for i=1:mfor j=1:nf=K(i,j);g(i,j)=0;if(f>=f0)&(f<=f1)g(i,j)=r1*f+b1; %曲线1的方程y=r1*x+b1elseif (f>=f1)&(f<=f2)g(i,j)=r2*f+b2; %曲线2的方程y=r2*x+b2elseif (f>=f2)&(f<=f3)g(i,j)=r3*f+b3; %曲线3的方程y=r3*x+b3endendendendend16subplot(3,3,7),imshow(uint8(g)),ylabel('变换图像(方法2)');subplot(3,3,8),imhist(uint8(g));(2) 观察并记录实验结果:作为实验报告的内容(3) 将“分段曲线的第2个点”更改为“f1=150;g1=0;”,观察并记录实验结果,分析产生该结果的原因:作为实验报告的内容。
图像增强中灰度变换1、理论原理灰度变换方法是图像增强的重要手段,它使图像的动态范围加大,使图像的对比度扩展,图像更加清晰,特征更加明显。
简单的说,灰度变换就是指对图像上各个像素点的灰度值x 按某函数T(x)变换到v 。
例如为了提高图像的清晰度,需要将图像的灰度级整个范围或其中某一段(A ,B)扩展或压缩到(A+,B*);需要显示出图像的细节部分等都要求采用灰度变换方法。
灰度变换有时又被称为图像的对比度增强。
假定输入图像中的一个像素的灰度级为z ,经过T(Z)函数变换后输出图像对应的灰度级为z+,其中要求z 和z*都要在图像的灰度范围之内。
根据T(x)形式,可以将灰度变换分为线性变换和非线性变换。
此外,直方图均衡化方法也是很好的图像增强方法之一。
具体应用中采用何种T(x),需要根据变换的要求而定。
1.1线性灰度变换1)目的:为了突出感兴趣的目标或灰度区间,相对抑制那些不感兴趣的灰度区间,可以采用分段线性变换。
2)数学表达式 图5-9[]⎪⎩⎪⎨⎧≤≤+---≤≤+---≤≤=f f g M y x f b d b y x f b M d M b y x f a c a y x f a b c d a y x f y x f a c y x g ),(]),(][)()([),(),(])()([),(0),()(),(调整折线拐点的位置及控制分段直线的斜率,可对(从而)任意灰度区间进行扩展或压缩。
图5-9 分段线性变换关系1.2 灰度非线性变换(1) 对数变换f f (x, y ) Mg g (x , y )1)cb y x f a y x g ln ]1),(ln[),(++= a 、b 、c 作用:调整曲线的位置和形状 图5-17图5-17 图像的对数变换关系2)效果:低灰度范围扩展 高灰度范围压缩,使图像分布均匀,与视觉特性相匹配(2) 指数变换1)1),(]),([-=-a y x f c b y x ga 、b 、c 作用:调整曲线的位置和形状2)效果 高灰度范围扩展2、实验1线性灰度变换方法给定图像”6.jpg ”,采用MATLAB 编程,对其进行线性对比度展宽处理。
成绩评定表课程设计任务书摘要空域增强在数字图像处理中起到对图像灰度的拉伸、压缩变换的作用,目前这种方法在处理图像灰度值方面得到广泛的运用。
MATLAB这种语言可移植性好、可扩展性强,再加上其中有丰富的图像处理函数,所以利用MATLAB软件来对图像进行空域增强在数字图像处理的应用中具有很大的优势。
图像变换增强是利用一系列的变换方法使图像的对比度得到提升,也就达到了增强图像的目的--更便于观察,更容易区分不同灰度的图像。
根据函数的性质,灰度变换的方法有线性灰度变换、分段线性灰度变换、非线性灰度变换。
对于灰度局限在某一个很小范围内的数字图像,如果用线性函数对图像的每一个像素进行线性扩展,扩大像素的对比度,将有效地改善视觉效果。
本文利用MATLAB软件对灰度图像分别进行了线性灰度变换增强,非线性灰度增强和分段线性灰度增强,达到了提高图像对比度,增强图像效果的目的,证明了图像变换增强在数字图像处理中的重要作用。
关键词:MATLAB;灰度图像;线性变换;非线性变换目录1设计目的 (1)2设计方案 (1)2.1 灰度变换增强的概念 (1)2.2 灰度变换增强流程 (2)3设计内容 (3)3. 1 线性灰度变换的概述 (3)3. 2 分段线性灰度变换的概述 (3)3. 3非线性灰度变换的概述 (4)4程序代码设计 (5)4.1线性灰度变换增强 (5)4.1.1线性变换增强流程 (5)4.1.2线性变换增强设计 (5)4.2分段线性灰度变换程序代码 (6)4.2.1分段线性变换增强流程 (6)4.2.2分段线性变换增强设计 (6)4.3非线性灰度变换程序代码 (8)4.3.1非线性变换增强流程 (8)4.3.2非线性变换增强设计 (8)5仿真结果与分析 (9)5.1线性灰度变换仿真结果 (9)5.2分段线性灰度变换仿真结果 (10)5.3非线性灰度变换仿真结果 (11)5.4结果分析 (11)结论 (12)参考文献 (13)1 设计目的空域增强在数字图像处理中起到对图像灰度的拉伸、压缩变换的作用,目前这种方法在处理图像灰度值方面得到广泛的运用。
3 利用基本灰度变换对图像进行增强灰度变换原理:灰度变换是一种空域处理方法,其本质是按一定的规则修改每个像素的灰度,从而改变图像的动态范围实现期望的增强效果。
灰度变换按映射函数可分为线性、分段线性和非线性等多种形式。
3.1 线性灰度变换线性灰度变换是将输入图像灰度值的动态范围按线性关系公式拉伸扩展至指定范围或整个动态范围。
可突出感兴趣目标,抑制不感兴趣的目标。
在实际运算中,原图像f(x,y)的灰度范围为[a,b],使变换后图像g(x,y)的灰度扩展为[c,d],则采用下述线性变换来实现:c a y x f ab cd y x g +---=]),([),(线性灰度变换对图像每个灰度范围作线性拉伸,将有效地改善图像视觉效果。
源代码如下: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);0100200500010020050010002、利用灰度调整算法变换图像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:nif (A(i,j)>=a)&(A(i,j)<b)B(i,j)=(A(i,j)-a)*(d-c)/(b-a)+c;endendenduint8(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);0100200500010020020004000600080003.2 分段线性灰度变换为了突出图像中感兴趣的研究对象,常常要求局部拉伸某一范围的灰度值,或对不同范围的灰度值进行不同拉伸处理,即分段线性拉伸,数学表达式如下:⎪⎪⎪⎩⎪⎪⎪⎨⎧≤<+---≤<+---≤≤=MfyxfbdbyxfbMfdMgbyxfacayxfabcdayxfyxfacyxg),(]),([),(]),([),(),(),(源代码如下: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)<aB(i,j)=(c/a)*A(i,j);elseif (A(i,j)>=a)&(A(i,j)<b)B(i,j)=(A(i,j)-a)*(d-c)/(b-a)+c; elseB(i,j)=(A(i,j)-b)*(Mg-d)/(Mf-b)+d; end end enduint8(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);010020005001000100200020004000600080003.3 非线性灰度变换非线性灰度变换在整个灰度范围内采用统一的变换函数,利用变换函数的数学性质实现对不同灰度值区间的扩展和压缩。
图像增强实验报告篇一:图像处理实验报告——图像增强实验报告学生姓名:刘德涛学号:2010051060021指导老师:彭真明日期:2013年3月31日一、实验室名称:光电楼329、老计算机楼309机房二、实验项目名称:图像增强三、实验原理:图像增强是为了使受到噪声等污染图像在视觉感知或某种准则下尽量的恢复到原始图像的水平之外,还需要有目的性地加强图像中的某些信息而抑制另一些信息,以便更好地利用图像。
图像增强分频域处理和空间域处理,这里主要用空间域的方法进行增强。
空间域的增强主要有:灰度变换和图像的空间滤波。
1.灰度变换灰度变换主要有线性拉伸、非线性拉伸等。
灰度图像的线性拉伸是将输入图像的灰度值的动态范围按线性关系公式拉伸到指定范围或整个动态范围。
令原图像f(x,y)的灰度变化范围为[a,b],线性变换后图像g(x,y)的范围为[a',b'],线性拉伸的公式为:b'?a'g(x,y)?a?[f(x,y)?a] b?a灰度图像的非线性拉伸采用的数学函数是非线性的。
非线性拉伸不是对图像的灰度值进行扩展,而是有选择地对某一灰度范围进行扩展,其他范围的灰度值则可能被压缩。
常用的非线性变换:对数变换和指数变换。
对数变换的一般形式:g(x,y)?a?ln[f(x,y)?1] blnc指数变换的一般形式:g(x,y)?bc[f(x,y)?a]?1(a,b,c用于调整曲线的位置和形状的参数。
)2.图像的空间滤波图像的空间滤波主要有图像的空域平滑和锐化。
图像的平滑是一种消除噪声的重要手段。
图像平滑的低频分量进行增强,同时抑制高频噪声,空域中主要的方法有领域平均、中值滤波、多帧相加平均等方法。
图像锐化能使图像的边缘、轮廓处的灰度具有突变特性。
图像的锐化主要有微分运算的锐化,包括梯度法和拉普拉斯法算子。
四、实验目的:1.熟悉和掌握利用Matlab工具进行数字图像的读、写、显示等数字图像处理基本步骤。
成绩评定表课程设计任务书摘要空域增强在数字图像处理中起到对图像灰度的拉伸、压缩变换的作用,目前这种方法在处理图像灰度值方面得到广泛的运用。
MATLAB这种语言可移植性好、可扩展性强,再加上其中有丰富的图像处理函数,所以利用MATLAB软件来对图像进行空域增强在数字图像处理的应用中具有很大的优势。
图像变换增强是利用一系列的变换方法使图像的对比度得到提升,也就达到了增强图像的目的--更便于观察,更容易区分不同灰度的图像。
根据函数的性质,灰度变换的方法有线性灰度变换、分段线性灰度变换、非线性灰度变换。
对于灰度局限在某一个很小范围内的数字图像,如果用线性函数对图像的每一个像素进行线性扩展,扩大像素的对比度,将有效地改善视觉效果。
本文利用MATLAB软件对灰度图像分别进行了线性灰度变换增强,非线性灰度增强和分段线性灰度增强,达到了提高图像对比度,增强图像效果的目的,证明了图像变换增强在数字图像处理中的重要作用。
关键词:MATLAB;灰度图像;线性变换;非线性变换目录1设计目的 (1)2设计方案 (1)2.1 灰度变换增强的概念 (1)2.2 灰度变换增强流程 (2)3设计内容 (3)3. 1 线性灰度变换的概述 (3)3. 2 分段线性灰度变换的概述 (3)3. 3非线性灰度变换的概述 (4)4程序代码设计 (5)4.1线性灰度变换增强 (5)4.1.1线性变换增强流程 (5)4.1.2线性变换增强设计 (5)4.2分段线性灰度变换程序代码 (6)4.2.1分段线性变换增强流程 (6)4.2.2分段线性变换增强设计 (6)4.3非线性灰度变换程序代码 (8)4.3.1非线性变换增强流程 (8)4.3.2非线性变换增强设计 (8)5仿真结果与分析 (10)5.1线性灰度变换仿真结果 (10)5.2分段线性灰度变换仿真结果 (11)5.3非线性灰度变换仿真结果 (12)5.4结果分析 (12)结论 (14)参考文献 (15)1 设计目的空域增强在数字图像处理中起到对图像灰度的拉伸、压缩变换的作用,目前这种方法在处理图像灰度值方面得到广泛的运用。
灰度变换是空域变换的一种重要方式,可使图像对比度扩展,图像清晰,特征明显。
本实验中,我们就用灰度变换来对灰度图像进行处理。
(1)熟练掌握MATLAB软件的基本操作(2)学会掌握MATLAB软件的程序编程(3)查阅相关资料并分析,掌握灰度变换增强的主要思路(4)培养独立分析和解决问题的能力,学会撰写课程设计的总结报告(5)善于总结和改进方案,提高可实施性和高效性。
2 设计方案2.1 灰度变换增强的概念灰度变换可使图像对比度扩展,图像清晰,特征明显。
它是图像增强的重要手段。
在图像空间所进行的灰度变换是一种点处理方法,它将输入图像中的每个像素(x,y)的灰度值f(x,y),通过映射函数变换成输出图像中的灰度g(x,y),即g(x,y)=T[ f(x,y)] (2.1)根据函数的性质,灰度变换的方法有以下几种:(1)线性灰度变换。
(2)分段线性灰度变换。
(3)非线性灰度变换。
对于线性灰度变换和非线性灰度变换,是直接用确定的公式依次对每个像素进行处理,也称为直接线性变换。
[1]2.2 灰度变换增强流程图2.1灰度变换增强流程如图2.1所示,f(x,y)为一张尺寸合适的原始灰度图像,首先判断是否要将整张图像的灰度值都进行拉伸,如果是整张图片拉伸,就选择线性变换增强;如果将图片的部分灰度值进行拉伸而另一部分进行压缩,则选择非线性变换增强或分段线性变换增强。
非线性变换增强和分段线性变换增强的区别在于,分段线性灰度变换是将原始图像灰度值的动态范围按线性关系公式拉伸扩展至指定范围或整个动态范围,而非线性变换拉伸是在整个灰度范围内采用统一的变换函数,利用变换函数的性质实现对不同灰度值区间的扩展和拉伸[2][3]3 设计内容3. 1 线性灰度变换的概述线性变换简单的线性灰度变换法可表示为g(x,y)=(d-c/b-a)[f(x,y)-a]+c ,其中:b 和a 分别是输入图像亮度分量的最大值和最小值,d 和c 分别是输出图像亮度分量的最大值和最小值。
经过线性灰度变化法,图像亮度分量的线性范围从[a,b]变化到[c,d],如图3.1所示:图3.1 线性拉伸示意图若图像中大部分像素的灰度级分布在区间[a,b]内,M 为原图的最大灰度级,只有很小一部分的灰度级超过了此区间,则为了改善增强效果,可以令:(3.1)由于人眼对灰度级别的分辨能力有限,只有当相邻像素的灰度值相差到一定程度时才能被辨别出来。
通过上述变换,图像中相邻像素灰度的差值增加,例如在曝光不足或过度的情况下,图像的灰度可能会局限在一个很小的范围内,这时得到的图像可能是一个模糊不清,似乎没有灰度层次的图像。
采用线性变换对图像中每一个像素灰度作线性拉伸,将有效改善图像视觉效果。
[4]3.2分段线性灰度变换的概述为了突出图像中感兴趣的目标或灰度区间,相对抑制那些不感兴趣的灰度区间,可采用分段线性变换,它将图像灰度区间分成两段乃至多段分别作线性变换。
⎪⎪⎩⎪⎪⎨⎧+---=d c a y x f ab c d c y x g ]),([),(M y x f b b y x f a a y x f ≤≤≤≤≤≤),(),(),(0进行变换时,把0~255整个灰度值区间分为若干线段,每一个直线段都对应一个局部的线性变换关系。
常用的三段线性变换如图3.2所示:图3.2 分段线性拉伸示意图图中,中间段的灰度得到拉伸,两端灰度被压缩公式如3.2所示:(3.2) 3.3非线性灰度变换的概述非线性拉伸不是对图像的整个灰度范围进行扩展,而是有选择的对某一灰度范围进行扩展,其他范围的灰度值则有可能被压缩。
非线性拉伸利用变换函数的数学性质实现对不同灰度值区间的扩展与压缩。
下面介绍其中一种非线性扩展法:对数变换。
对数变换,是指输出图像的像素点的灰度值与对应的输出图像的像素灰度值之间为对数关系,其一般公式为:g(x,y)=a+ln[f(x,y)+1]/blnc ,式中a,b,c 都是可以选择的参数,式中f(x,y)+1是为了避免对0求对数,确保ln[f(x,y)+1]≥0。
当f(x,y)=0时,ln[f(x,y0+1),则y=a,则a 为y 轴上的截距,确定了变换曲线的初始位置的变换关系b,c ,两个参数确定变换曲线的变换速率。
对数变换扩展了低灰度区,压缩了高灰度区,能使低灰度区的图像较清晰地显示出来。
[5] ⎪⎪⎪⎪⎩⎪⎪⎪⎪⎨⎧+---+---=d b y x f b d c a y x f a b c d y x f a c y x g M M f g ]),([]),([),(),(M fy x f b b y x f a a y x f ≤≤≤≤≤≤),(),(),(04 程序代码设计4.1 线性变换增强4.1.1线性变换增强流程图4.1 线性变换流程如图4.1所示,先将输入的灰度图像f(x,y)的位置及标签设置好之后,选择线性函数对原灰度图像进行灰度拉伸的处理,增强其对比度,得到变换之后的图像并输出。
4.1.2 线性灰度变换增强设计I = imread('E:\fish.jpg'); % 读入原图像I = im2double(I); % 转换数据类型为double[M,N] = size(I); % 计算图像面积figure(1);subplot(121); % 打开新窗口,设置图像位置imshow(I); % 显示原图像title('原图像'); % 定义标签Fa = 6; Fb = -160;O = Fa .* I + Fb/255; % 线性变换公式figure(1);subplot(122);imshow(O);title('灰度变换后的图像');4.2分段线性变换增强4.2.1分段线性变换增强流程图4.2分段线性变换如图4.2所示,先将输入的灰度图像f(x,y)的位置及标签设置好之后,再设置灰度值变化的范围,分别为0-70,70-180和180-255。
这三个范围的变化函数不同,从而达到使图像的灰度值拉伸程度不同的目的。
经过分段线性变换后,得到变换后的图像g(x,y)。
[6]4.2.2 分段线性灰度变换增强设计A=imread('E:\girl.jpg'); % 读入原图像X1=rgb2gray(A); % 将彩色图像变成灰度二值图像subplot(221);imshow(X1); %输出图像title('原图像'); %在原始图像中加标题f0=0;g0=0; %进行灰度级线性分段增强;f1=70;g1=30;f2=180;g2=230;f3=255;g3=255;subplot(222);plot([f0,f1,f2,f3],[g0,g1,g2,g3]);axis tight,xlabel('f'),ylabel('g'),title('灰度变换曲线');%绘制灰度变换曲线%增强对比度r1=(g1-g0)/(f1-f0);b1=g0-r1*f0;r2=(g2-g1)/(f2-f1);b2=g1-r2*f1;r3=(g3-g2)/(f3-f2);b3=g2-r3*f2;[m,n]=size(X1);X2=double(X1); %变换矩阵中的每一个元素for i=1:m;for j=1:nf=X2(i,j);g(i,j)=0;if(f>=0)&(f<=f1)g(i,j)=r1*f+b1;elseif (f>=f1)&(f<=f2)g(i,j)=r2*f+b2;elseif (f>=f2)&(f<=f3)g(i,j)=r3*f+b3;endendendsubplot(223);imshow(mat2gray(g)); %输出变换之后的图像title('分段线性变换后的图像');4.3非线性变换增强4.3.1非线性变换增强流程图 4.3 非线性变换如图4.3所示,先将输入图像f(x,y)的位置和标签设置好之后,确定图像灰度拉伸和压缩的范围,按照要求设置参数,利用对数函数对原始灰度图像进行非线性变换得到输出图像g(x,y)。
[7]4.3.2 非线性灰度变换增强设计I=imread('E:\knot.png'); %读取图像I=mat2gray(I); %将一个矩阵转化为灰度图像的数据格式I=im2double(I); %转化为双精度J=log(I+1);subplot(1,2,1);Imshow(I); %显示图像title('原图像');subplot(1,2,2);Imshow(J);title('非线性对数变换后的图像')5 仿真结果与分析在MATLAB7.1中运行以上程序,分别对三幅灰度图像分别进行线性变换,分段线性变换和非线性变换后得到灰度被拉伸和压缩的图像。