实验三 图像增强
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验三 图像增强—直方图变换
一、 实验目的
1.掌握灰度直方图的概念及其计算方法;
2.熟练掌握直力图均衡化和直方图规定化的计算过程;
3.熟练掌握空域滤波中常用的平滑和锐化滤波器;
4.利用MATLAB 程序进行图像增强。
二、 实验内容
1打开计算机,启动MATLAB 程序;输入待处理的图像文件;
2调入数字图像,并进行图像均衡化处理;
3显示原图像的直方图和经过均衡化处理过的图像直方图。
4.利用imnoise 命令在图像上加入高斯(gaussian) 噪声
5.利用预定义函数fspecial 命令产生平均(average)滤波器
111191111---⎡⎤⎢⎥--⎢⎥⎢⎥---⎣
⎦ 6.分别采用3x3和5x5的模板,分别用平均滤波器以及中值滤波器,对加入噪声的图像进行处理并观察不同噪声水平下,上述滤波器处理的结果;
7.选择不同大小的模板,对加入某一固定噪声水平噪声的图像进行处理,观察上述滤波器处理的结果。
8.利用imnoise 命令在图像上加入椒盐噪声(salt & pepper)
9.重复c)~ e )的步骤
10输出全部结果并进行讨论。
11.记录和整理实验报告
三、 思考题
1. 直方图是什么概念?它反映了图像的什么信息?
答:直方图是灰度级数的函数,反映了图像中具有该灰度级数的像素的个数。
2.直方图均衡化是什么意思?它的主要用途是什么?均衡化后的图像有什么特点?
3. 简述高斯噪声和椒盐噪声的特点。
4. 结合实验内容,定性评价平均滤波器/中值滤波器对高斯噪声和椒盐噪声的去噪效果?
5. 结合实验内容,定性评价滤波窗口对去噪效果的影响?
四、实验结论
源程序代码:
clear all;
clc;
%输入一幅图像,进行图像输出图像直方图
p1=imread('1.png');%读入原始灰色图像
p=rgb2gray(p1);
imshow(p);title('原始图像');
%自己编写函数绘制直方图
[m,n]=size(p);%测量图像大小
h1=zeros(1,256);%总共有0~255,共256个灰度级
h2=zeros(1,256);%总共有0~255,共256个灰度级
for k=0:255
h1(k+1)=length(find(p==k))/(m*n);%计算每级灰度出现的概率,将其放入向量
h2(k+1)=length(find(p==k));%计算每级灰度出现的概率,将其放入向量
end
[count,x]=imhist(p);
%在一幅图像中输出结果
figure
axis([-100,300,0,3600]);
subplot(141);bar(0:255,h1,'g');title('自己编的代码绘制直方图(频率)');
subplot(142);bar(0:255,h2,'b');title('自己编的代码绘制直方图(频数)');
subplot(143);imhist(p);title('利用matlab的代码绘制原图像的直方图');
subplot(144);stem(x,count);title('利用matlab的代码绘制原图像的直方图');
运行结果图如下:
实验结论:利用自己编的函数分别绘制出图像灰度级的频数和频率,然后利用matlab已经有的函数imhist绘制原图像的直方图,但是其中有问题,为什么在使用imhist函数的时候,明显纵坐标的最大值只有1400,达不到实际数值3511.
源程序代码:
%% 图像工程的第三章作业2016.09.26
clear all;
clc;
%输入一幅图像,进行图像输出图像直方图
p1=imread('1.png');%读入原始灰色图像
p=rgb2gray(p1);
%自己编写函数绘制直方图
[m,n]=size(p);%测量图像大小
h=zeros(1,256);%总共有0~255,共256个灰度级
for k=0:255
h(k+1)=length(find(p==k))/(m*n);%计算每级灰度出现的概率,将其放入向量
end
S1=zeros(1,256);
S1=h(1)
for i=2:256
S1(i)=h(i)+S1(i-1);%计算Sk
end
S2=round((S1*256)+0.5);%将Sk归到相近级的灰度
for i=1:256
S3(i)=sum(h(find(S2==i)));%计算现有每个灰度级出现的概率
end
P=p;
for i=0:255
P(find(p==i))=S2(i+1);
end
q=histeq(p);
figure
subplot(131);imshow(p);title('原始图像');
subplot(132);imshow(P);title('代码绘制的均衡化后的图像');
subplot(133);histeq(p);title('matlab绘制的均衡化后的图像');
figure
subplot(121);imhist(q);title('已有函数绘制均衡化后的直方图')%显示均衡化后的直方图subplot(122);bar(0:255,S3,'b');title('自己编写的代码绘制的均衡化后的直方图')%显示均衡化后的直方图
xlabel('灰度值')
ylabel('出现概率')