MATLAB GUI课程设计期末大作业湖南理工学院汇编
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《数字图像处理》期末大作业暨课程考核报告
姓名:邓巧灵
学号:24112200002
序号:02
湖南理工学院南湖学院
2014年6月
目录
一:算法设计部分 (3)
1 绘制灰度直方图,实现直方图均衡化和直方图规定化 (3)
1.1 算法原理 (3)
1.2 算法设计 (3)
1.3 实验结果及对比分析 (4)
2 灰度图像的对比度增强 (5)
2.1 算法原理 (5)
2.2 算法设计 (6)
2.3 实验结果及分析 (7)
3 图形的几何变换 (8)
3.1 算法原理 (8)
3.2 算法设计 (11)
3.3 实验结果及分析 (13)
4 图像加噪(用输入参数控制不同噪声),然后使用空域和频域进行滤波处
理 (17)
4.1 算法原理 (17)
4.2 算法设计 (19)
4.3 实验结果及分析 (20)
5 采用robert,prewitt,sobel,拉普拉斯算子对图像进行边缘提取 (23)
5.1 算法原理 (23)
5.2 算法设计 (25)
5.3 实验结果及分析 (26)
6附加题目:读入两幅图像,一幅为背景图像,一幅为含有目标的图像,应用所学的知识提取出目标 (27)
6.1 算法原理 (27)
6.2 算法设计 (27)
6.3 实验结果及分析 (28)
二、GUI界面设计部分 (29)
三小结(感受和体会) (34)
一:算法设计部分
1 绘制灰度直方图,实现直方图均衡化和直方图规定化
1.1 算法原理
(1)绘制灰度直方图
灰度值直方图定义为数字图像中各个灰度级与其出现的频率的统计关
/n,k=0,1,...,L-1且P(k)=1。统计出各个灰系,可以表示为P(k)=n
k
度级的个数之后,然后在一个坐标里面绘制灰度直方图。
(2)直方图均衡化
直方图均衡化是通过对原图像进行某种灰度变换,是变换后的图像的直方图能够均匀的分布(即各个像素的灰度级均衡),这样子就能使原图像中具有相近灰度值且占有很大像素点的区域之灰度范围展宽,使大区域中的微小灰度变化显现出来。
(3)直方图规定化
使原始直方图变成某个固定的形状,从而有选择的增强某个灰度范围内的对比度。
1.2 算法设计
使用Matlab工具箱中的函数imhist(),histeq(),histeq(I,harm)分别实现直方图获取、均衡化、规定化
I=imread('trees.tif');
if (ndims(I)==3) %判断是否为灰度图像
A=rgb2gray(I);%转换为灰度图像
else
A=I;
end
subplot(221);
imhist(A); %获取灰度直方图
title('灰度直方图');
J=histeq(A);
M=histeq(A,5);
subplot(222);imshow(J);title('直方图均衡')
subplot(223);
imhist(J);title('均衡后的直方图');
subplot(224);imshow(M);title('规定化后的图像');
1.3 实验结果及对比分析
(图)1.3.1 直方图获取、均衡化、规定化
分析:通过结果可以看到,进行均衡后的直方图灰度级分布比较均匀。
而规定化后的图像看起来很模糊,是因为灰度级只有5个。
2 灰度图像的对比度增强
2.1 算法原理
matlab 自带函数imadjust可用于对比度增强。如果原图象f(x,y)的灰度范围是[m,M],我们希望调整后的图象g(x,y)的灰度范围是[n,N],那么下述变换就可以实现这一要求。
MATLAB图象处理工具箱中提供的imadjust函数,可以实现上述的线性变换对比度增强。Imadjust函数的语法格式为:
J = imadjust(I,[low_in high_in],[low_out high_out])
J = imadjust(I,[low_in high_in],[low_out high_out])返回图象I经过直方图调整后的图象J,[low_in high_in]为原图象中要变换的灰度范围,[low_out high_out]指定了变换后的灰度范围。
例:
I = imread('pout.tif');
J = imadjust(I,[0.3 0.7],[]);
imshow(I), figure, imshow(J) 2.2 算法设计
利用自己写的函数实现对比度增强
I=imread('3.jpg'); %读入一张图片
f0=0;g0=0;
f1=70;g1=30;
f2=180;g2=230;
f3=255;g3=255;
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;
mysize=size(I);
if numel(mysize)>2
A=rgb2gray(I)
else
A=I;
end
subplot(121);
imshow(A);title('灰度图像');
[m,n]=size(A);
X2=double(A);
for i=1:m
for j=1:n
f=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;
end
end
end
subplot(122);