空域图像增强报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验报告
实验课程:光电图像处理姓名:
学号:
实验地点:
指导老师:
实验时间:
一. 实验名称:空间图象增强(一)
二. 实验目的
1. 熟悉和掌握利用matlab 工具进行数字图像的读、写、显示、像素处理等数字图像处理的基本步骤和流程。
2. 熟练掌握各种空间域图像增强的基本原理及方法。
3. 熟悉通过灰度变换方式进行图像增强的基本原理、方法和实现。
4. 熟悉直方图均衡化的基本原理、方法和实现。
三. 实验原理
(一)数字图像的灰度变换
1、线性灰度变换
令原图像灰度范围由[a,b]线性变换后图像灰度范围[c,d],以便于提升原图像的对比度。线性灰度变换公式如下:
()(,),[(,)](,)(,)d f x y b d c g x y f x y a c a f x y b b a
c
f x y a >⎧⎪-⎪=-+≤≤⎨-⎪<⎪⎩ (1)
其中,f (x,y)为原始图像,灰度范围为[a,b],g(x,y)为增强后的数字图像,灰度范围为[c,d]。
注:实验中[a,b]可由实际图像来确定,[c,d]可视具体情况人为给定。
2、非线性灰度变换(对数变换或幂律变换选作其一) 非线性拉伸不是对图像的灰度值进行扩展,而是有选择地对某一灰度范围进行扩展,其他范围的灰度值则可能被压缩。常用的非线性变换:对数变换和指数变换。即
对数变换公式为:
()(,)log 1(,)g x y c f x y =+
幂律(伽马)变换为:
(,)(,)g x y cf x y γ=
(二)直方图处理
对图像2种定义下的直方图统计统计,并分别画出两种定义下的直方图。直方图均衡化主要用于增强动态范围偏小的图像的反差。该方法的基本思想是把原始的直方图变换为均匀分布的形状,这样就增加了像素灰度值的动态范围,从而达到增强图像整体对比度的效果。
四. 实验步骤
(一)数字图像的灰度变换
1、线性灰度变换
1)读取一幅对比度低的灰度图像并显示。
2)以m 文件形式编写matlab 代码,实现数字图像的灰度范围由[a,b]到[c,d]的线性拉伸,以便于提升原图像的对比度。线性灰度变换公式如下:
()(,),[(,)](,)(,)d f x y b d c g x y f x y a c a f x y b b a c
f x y a >⎧⎪-⎪=-+≤≤⎨-⎪<⎪⎩ (1) 其中,f (x,y)为原始图像,灰度范围为[a,b],g(x,y)为增强后的数字图像,灰度范围为[c,d]。注:实验中[a,b]可由实际图像来确定,[c,d]可视具体情况人为给定。
3)显示经过线性灰度变换后的图像,并对变换结果进行必要的分析,画出灰度变换曲线图。
4)以另一个文件名形式保存灰度变换后的图像。
2、非线性灰度变换(对数变换或幂律变换选作其一)
1)读取一幅灰度图像并显示。
2)分别对其进行对数变换或幂律(伽马)变换。即
对数变换公式为:
()(,)log 1(,)g x y c f x y =+ (2)
幂律(伽马)变换为:
(,)(,)g x y cf x y γ= (3)
3)显示变换后的图像,并利用matlab工具画出对数或幂律变换曲线。
4)以另一个文件名形式保存变换后的图像。
(二)直方图处理
1)读取一幅灰度图像并显示原始图像。
2)编写m文件实现对输入图像2种定义下的直方图统计统计(即各个灰度级出现的次数及概率分布),并分别画出两种定义下的直方图。
3)对输入灰度图像进行直方图均衡化处理,分别显示均衡处理前后的图像和对应的直方图。
五.实验结果及分析
(一)数字图像的灰度变换
1、线性灰度变换
实验结果:
2、非线性灰度变换(对数变换或幂律变换选作其一)
(二)直方图处理
结果分析:实验结果与预期一致
六.程序源代码
(一)数字图像的灰度变换
1、线性灰度变换
程序源代码:
I1=imread('T1.jpg');
I1=rgb2gray(I1);
subplot(221);
imshow(I1);
a=min(min(I1));
b=max(max(I1));
B=(250-10)/double((b-a))*(I1-a)+10;
subplot(222);
imshow(B);
subplot(223);
imhist(I1);
subplot(224);
imhist(B);
2、非线性灰度变换(对数变换或幂律变换选作其一)subplot(231)
I=imread('T2.jpg');
I=rgb2gray(I);
imshow(I);
a=min(min(I));
b=max(max(I));
c=2,r=0.8
G=uint8(12*log(1+double(I))); subplot(232)
imshow(G);
subplot(233)
z=0:1:1000;
plot(z,12*log(double(z)));
subplot(234)
imhist(I);
subplot(235)
imhist(G);
(二)直方图处理
I=imread('pout.tif');
[height,width]=size(I);
subplot(231);
imshow(I),title('root image') subplot(232)
imhist(I);title('原始直方图');
L=256;
K=zeros(1,L);
for i=1:height
for j=1:width
K(I(i,j)+1)=K(I(i,j)+1)+1 end
end
subplot(233)
bar(K);
pk=K;
for i=1:L
pk(i)=K(i)/double(height*width) end
subplot(234)
bar(pk)
ps=pk
ps(1)=pk(1)
for i=2:L
ps(i)=ps(i-1)+pk(i)