实验一图像增强.docx
《实验一图像增强.docx》由会员分享,可在线阅读,更多相关《实验一图像增强.docx(13页珍藏版)》请在冰豆网上搜索。
![实验一图像增强.docx](https://file1.bdocx.com/fileroot1/2022-12/29/d0b06a95-1cd6-4f0d-846b-45a9804498aa/d0b06a95-1cd6-4f0d-846b-45a9804498aa1.gif)
实验一图像增强
实验报告
实验课程:
光电图像处理
姓名:
xxxx
学号:
xxxxxxxxxxxx
实验地点:
xxxxxxx
指导老师:
xxx
实验时间:
xxxx年x月xx日
一.实验名称:
空间图像增强
(一)
二.实验目的
1.熟悉和掌握利用matlab工具进行数字图像的读、写、显示、像素处理等数字图像处理的基本步骤和流程。
2.熟练掌握各种空间域图像增强的基本原理及方法。
3.熟悉通过灰度变换方式进行图像增强的基本原理、方法和实现。
4.熟悉直方图均衡化的基本原理、方法和实现。
三.实验原理
(一)数字图像的灰度变换
1、线性灰度变换
1)当图像成像过程曝光不足或过度,或由于成像设备的非线性和图像记录设备动态范围太窄等因素,都会产生对比度不足的弊病,使图像中的细节分辨不清。
这时可将灰度范围进行线性扩展/压缩,这种处理过程被称为图像的线性灰度变换。
设f(x,y)灰度范围为[a,b],g(x,y)灰度范围为[c,d],则有:
2)分段处理:
将感兴趣的灰度范围线性扩展,相对抑制不感兴趣的灰度区域。
设f(x,y)灰度范围为[0,Mf],g(x,y)灰度范围为[0,Mg],则有:
2、非线性灰度变换(对数变换或幂律变换选作其一)
1)对数变换
其中,f为输入灰度级,g为变换后的灰度级,c为一个比例因子。
2)幂律(伽马)变换
其中,f为输入灰度级,g为变换后的灰度级,c为一个比例因子。
g为一
个幂指数,不同的取值范围,将产生不同的变换效果。
(二)直方图处理
1)定义(两种):
a)一幅灰度级范围在[0,L-1]的数字图像的直方图定义为以下离散函数,即:
其中,
是图像中灰度级为
的像素个数。
是第k个灰度级,k=0,1,2,…,L-1。
这里,直方图表示图像中不同灰度级像素出现的次数,或者不同灰度级的像素数目。
b)一幅灰度级范围在[0,L-1]的数字图像的直方图定义为以下离散函数,即:
其中,n是图像的像素总数,nk是图像中灰度级为rk的像素个数;rk是第k个灰度级,k=0,1,2,…,L-1。
此处,直方图表示图像中不同灰度级像素出现的概率。
四.实验步骤
(一)数字图像的灰度变换
1、线性灰度变换
1)读取一幅对比度低的灰度图像,并显示。
2)以m文件形式编写matlab代码,实现数字图像的灰度范围由[a,b]到[c,d]的线性拉伸,以便于提升原图像的对比度。
线性灰度变换公式如下:
(1)
其中,f(x,y)为原始图像,灰度范围为[a,b],g(x,y)为增强后的数字图像,灰度范围为[c,d]。
3)显示经过线性灰度变换后的图像及变换曲线图。
4)以另一个文件名形式保存灰度变换后的图像。
程序设计流程图:
图1
2、非线性灰度变换(对数变换或幂律变换选作其一)
1)读取一幅灰度图像,并显示。
2)进行对数变换或伽马变换
3)显示变换后的图像,并利用matlab工具画出对数或幂律变换曲线。
4)以另一个文件名形式保存变换后的图像。
程序设计流程图:
(这里以对数变换为例)
图2
(二)直方图处理
1)读取一幅灰度图像,并显示原始图像。
2)编写m文件实现对输入图像2种定义下的直方图统计统计(即各个灰度级出现的次数及概率分布),并分别画出两种定义下的直方图。
3)对输入灰度图像进行直方图均衡化处理,分别显示均衡处理前后的图像和对应的直方图。
图3
程序流程图:
五.实验结果及分析
(一)数字图像的灰度变换
实验结果:
1、线性灰度变换
图4
图5
2、非线性灰度变换(对数变换或幂律变换选作其一)
图6
(二)直方图处理
图7
实验分析:
1.对于对比度低的图像,对其进行线性灰度变换拉升处理,可使处理后的图像对比度极大增强。
从图5中可看到,处理后的图像明显变亮,且更加清晰。
2.非线性灰度变换:
从图6中的对比中可以看出
a)在对数变换中,低灰度区扩展,高灰度区压缩。
b)在伽马变换中,低灰度区压缩,高灰度区扩展。
(前提:
)
3.直方图均衡化处理,将原来较为狭窄的灰度区间均匀拉伸,使图像对比度增大,图像看起来就更清晰了,利于观察。
它实质上是通过减少图像的灰度级以换取对比度的增大
六.实验心得体会和建议
心得体会:
通过本次实验,巩固和加深了对空域图像增强相关理论知识的理解,同时还学习到了matlab中关于如何读取图像,转化图像,显示图像的技术,并且熟悉了直方图均衡化的相关算法,使我不仅对matlab有了深一步的认识,同时对图像处理产生了浓厚的兴趣,收益匪浅。
建议:
在进行非线性灰度变化时,对于对数变换可以分别使用不同的c值,对于伽马变换可以有规律的改变c值及γ值,通过多次的测量,绘图可以深入理解非线性图像变换的作用。
在进行图像的均衡化处理时,有余力的话可以自行使用histeq()函数再次处理原图像,与之前的均衡化处理进行对比,观察不同,找出各自的优缺点。
七.程序源代码
(一)数字图像的灰度变换
1、线性灰度变换
%读取图像并转化为灰度图
I1=imread('E:
\学科\光电图像处理\实验\1.jpg');
I1=rgb2gray(I1);
%读取灰度图最值,并进行线性变换
a=min(min(I1));b=max(max(I1));
c=0;d=255;
I2=((d-c)/(b-a))*(I1-a)+c;
%显示灰度变换曲线图
x=[a:
b];
y=((d-c)/(b-a))*(x-a)+c;
plot(x,y),title('LinearTransformationCurve'),xlabel('x'),ylabel('y')
%显示原图
figure,subplot(2,2,1);
imshow(I1),title('Originalimage');
%显示变换后的图
subplot(2,2,2);
imshow(I2),title('LinearTransformationimage')
%显示原图直方图
subplot(2,2,3)
imhist(I1),title('OriginalHistogram'),xlabel({'';'Graylevel'}),ylabel('Number')
%显示变换后图像直方图并保存
subplot(2,2,4)
imhist(I2),title('LinearTransformationHistogram')
xlabel({'';'Graylevel'});ylabel('Number')
imwrite(I2,'E:
\学科\光电图像处理\实验\1.1.jpg','jpg')
2、非线性灰度变换(对数变换或幂律变换选作其一)
%读取原图像并转为灰度图
I1=imread('E:
\学科\光电图像处理\实验\3.jpg');
I1=rgb2gray(I1);
%显示原图像
subplot(2,3,1)
imshow(I1),title('Originalimage')
%进行对数和伽玛变换
c1=80;c2=1.2;gamma=1.5;
I2=c1*log(1+double(I1));
I3=c2*(double(I1).^gamma);
%分别显示对数和伽玛变换后的图像
subplot(2,3,2)imshow(uint8(I2)),title('LogTransformationImage')
subplot(2,3,3)
imshow(uint8(I3)),title('GammaTransformationImage')
%计算相关变换的曲线
a=min(min(I1));b=max(max(I1));
x=0:
255;
x=[double(a):
0.2:
double(b)];
y1=c1*log(1+x);
y2=c2*(x.^gamma);
%分别画出对数和伽玛变换后的曲线
subplot(2,3,5)
plot(x,y1),title('LogTransformationCurve'),xlabel('x'),ylabel('y')
subplot(2,3,6)
plot(x,y2),title('GammaTransformationCurve'),xlabel('x'),ylabel('y')
%保存灰度图
imwrite(I2,'E:
\学科\光电图像处理\实验\3.1.jpg','jpg')
imwrite(I3,'E:
\学科\光电图像处理\实验\3.2.jpg','jpg')
(二)直方图处理
%读图并显示
I1=imread('pout.tif');
subplot(231),imshow(I1),title('Originalimage')
%统计每一灰度级出现次数
h1=zeros(1,256);
fork=1:
256
h1(k)=length(find(I1==k-1));
end
%画出两种定义下的直方图
r=0:
255;
subplot(232),bar(r,h1),title('OriginalHistogram')
xlim([0,255]),xlabel('Graylevel'),ylabel('Number')
[m,n]=size(I1);
p=h1/(m*n);
subplot(233),bar(r,p),title('OriginalProbabilityHistogram')
xlim([0,255]),xlabel('Graylevel'),ylabel('Probability')
%直方图均衡化并显示出均衡后的图像
p1=p;
p1
(1)=p
(1);
fori=2:
256;
p1(i)=p(i)+p1(i-1);
end
I2=round(p1*256);
I3=I1;
fori=1:
m
forj=1:
n
I3(i,j)=I2(I1(i,j)+1);
end
end
subplot(234),imshow(I3),title('Equalizedimage')
%统计均衡图中的两种定义下的直方图并显示
fork=1:
256
h2(k)=length(find(I3==k));
end
subplot(235),bar(r,h2),title('EqualizedHistogram')
xlim([0,255]),xlabel('Graylevel'),ylabel('Number')
p2=h2/(m*n);
subplot(236),bar(r,p2),title('EqualizedProbabilityHistogram')
xlim([0,255]),xlabel('Graylevel'),ylabel('Probability')
八.思考题
1.为了扩展一幅图像的灰度,使其最低灰度为C、最高灰度为L-1,试给出一个单调的灰度变换函数。
答:
不妨设原图像f(x,y)的灰度最小值为a,最大值为b。
变换后的图像为g(x,y),则有:
上式即为给出的单调灰度变换函数。
2.数字图像经过对数变换与幂律变换后,变换结果有什么差异?
请按不同参数的取值范围进行具体分析。
答:
对数变换:
对数变换的底数越大,对低灰度区扩展和高灰度区压缩就越强,而c则将其倍数放大。
伽马变换:
当
时,伽马变换的作用与对数变换相近,
当
时,γ越大,对低灰度区压缩和高灰度区扩展也就越强。
3.从连续函数的概率分布来分析,直方图均衡处理可以使得各个灰度级分布变为均匀分布,即拉平直方图。
而对实际数字图像的处理结果却是一种近似平直,而不是严格意义上的均匀直方图,试说明其理由。
答:
由于图像的灰度值是离散的,并不是从0-255连续变化。
在均衡化处理时,会由于四舍五入的关系,拉直图像时为近似拉直,无法做到完全均匀。
报告评分:
指导教师签字: