数字图像处理实验报告全答案Word格式文档下载.docx
《数字图像处理实验报告全答案Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《数字图像处理实验报告全答案Word格式文档下载.docx(26页珍藏版)》请在冰豆网上搜索。
5subplot
把图形窗口分成多个矩形部分,每个部分可以分别用来进行显示。
Subplot(m,n,p)分成m*n个小窗口,在第p个窗口中创建坐标轴为当前坐标轴,用于显示图形。
6plot
绘制二维图形
plot(y)
Plot(x,y)xy可以是向量、矩阵。
●图像类型转换
1rgb2gray
N须是0,4,6,8.当N大于0时,圆盘形结构元素由一组N(或N+2)个周期线结构元素来近似。
当N等于0时,不使用近似,即结构元素的所有像素是由到中心像素距离小于等于R的像素组成。
N可以被忽略,此时缺省值是4。
注:
形态学操作在N>
0情况下要快于N=0的情形。
如:
se1=strel('
square'
11)%11乘以11的正方形
4imerode
腐蚀图像
用法:
IM2=imerode(IM,SE)
腐蚀灰度、二进制或压缩二进制图像IM,返回腐蚀图像IM2。
参数SE是函数strel返回的一个结构元素体或是结构元素体阵列。
使用一个盘状结构元素腐蚀一幅二进制图像。
originalBW=imread('
'
se=strel('
disk'
11);
erodedBW=imerode(originalBW,se);
imshow(originalBW),figure,imshow(erodedBW)
5imdilate
膨胀图像
IM2=imdilate(IM,SE)
膨胀灰度图像、二值图像、或者打包的二值图像IM,返回膨胀图像M2。
变量SE是一个结构元素或者一个结构元素的数组,其是通过strel函数返回的。
利用一个运行结构元素膨胀灰度图像。
I=imread('
ball'
5,5);
I2=imdilate(I,se);
imshow(I),title('
Original'
)
figure,imshow(I2),title('
Dilated'
三、实验步骤
1、产生运动模糊图像,运用维纳滤波进行图像恢复,显示结果。
i=imread('
f:
I=rgb2gray(s)
I=im2double(I);
%模拟运动模糊
LEN=21;
THETA=11;
PSF=fspecial('
motion'
LEN,THETA);
blurred=imfilter(I,PSF,'
conv'
'
circular'
%恢复图像
wnr2=deconvwnr(blurred,PSF);
subplot(1,2,1);
imshow(blurred);
title('
运动模糊图像'
subplot(1,2,2);
imshow(wnr2);
恢复图像'
2、采用三种不同算子检测图像边缘,显示结果。
BW1=edge(I,'
prewitt'
BW2=edge(I,'
zerocross'
BW3=edge(I,'
canny'
subplot(2,2,1);
原图像'
subplot(2,2,2);
imshow(BW1);
prewitt边缘图'
subplot(2,2,3);
imshow(BW2);
zerocross边缘图'
subplot(2,2,4);
imshow(BW3);
canny边缘图'
3、对二值图像分别进行方形模板3*3和5*5的膨胀和腐蚀操作,显示结果。
i=rgb2gray(a)
I=im2bw(a,
se3=strel('
3);
erodedBW1=imerode(I,se3);
se4=strel('
5);
erodedBW2=imerode(I,se4);
3,3);
I1=imdilate(a,se1);
se2=strel('
I2=imdilate(a,se2);
imshow(I1);
3*3膨胀图像'
imshow(I2);
5*5膨胀图像'
imshow(erodedBW1);
3*3腐蚀图像'
imshow(erodedBW2);
5*5腐蚀图像'
实验六图像处理实际应用
1、熟悉并掌握MATLAB图像处理工具箱的使用;
2、理解并掌握常用的图像处理技术。
三、实验内容
调试运行下列程序,分析程序,对每条语句给出注释,并显示最终执行结果。
总结算法思想及优缺点.
I=imread('
[y,x,z]=size(I);
myI=double(I);
%%%%%%%%%%%RGBtoHSI%%%%%%%%
tic
%%%%%%%%Y方向%%%%%%%%%%
Blue_y=zeros(y,1);
fori=1:
y
forj=1:
x
if((myI(i,j,1)<
=30)&
&
((myI(i,j,2)<
=62)&
(myI(i,j,2)>
=51))&
((myI(i,j,3)<
=142)&
(myI(i,j,3)>
=119)))%蓝色RGB的灰度范围
Blue_y(i,1)=Blue_y(i,1)+1;
end
end
[tempMaxY]=max(Blue_y);
%Y方向车牌区域确定
PY1=MaxY;
while((Blue_y(PY1,1)>
=5)&
(PY1>
1))
PY1=PY1-1;
end
PY2=MaxY;
while((Blue_y(PY2,1)>
(PY2<
y))
PY2=PY2+1;
IY=I(PY1:
PY2,:
:
%%%%%%%%X方向%%%%%%%%%%
Blue_x=zeros(1,x);
forj=1:
fori=PY1:
PY2
=119)))
Blue_x(1,j)=Blue_x(1,j)+1;
PX1=1;
while((Blue_x(1,PX1)<
3)&
(PX1<
x))
PX1=PX1+1;
PX2=x;
while((Blue_x(1,PX2)<
(PX2>
PX1))
PX2=PX2-1;
PX1=PX1-2;
%对车牌区域的修正
PX2=PX2+2;
Plate=I(PY1:
PY2,PX1-2:
PX2,:
t=toc%读取计时
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
figure,imshow(I);
figure,plot(Blue_y);
grid
figure,plot(Blue_x);
figure,imshow(IY);
添加注释和改正后的程序:
%读取图片
%给定图片大小
%返回双精度值
tic%计时开始
%一列全零矩阵
y%给定i的范围
x%给定j的范围
%y矩阵加一
%y矩阵的最大元素
1))%确定蓝色RGBBlue_y所在位置
%对车牌区域的修正,向上调整
%y矩阵的最大元素
y))%确定蓝色RGBBlue_y所在位置
%对车牌区域的修正向下调整
%行的范围
%一行全一矩阵
x%给定j的取值范围
PY2%给定i的取值范围
=119)))%调整I中的范围
%Blue_x的矩阵加一
%当PX1等于1时
x))%确定蓝色RGBBlue_x的位置
%当PX2等于x时
PX1))%确定蓝色RGBBlue_x的位置
%对车牌区域的修正
%矩阵行列的范围
t=toc%读取计时
%创建图像窗口,显示图像I
grid%创建图像窗口,绘制Blue_y图像,画出网格线
grid%创建图像窗口,绘制Blue_x图像,画出网格线
figure,imshow(Plate);
%创建图像窗口,显示图像Plate
t=
实验二图像基本操作
1、熟悉及掌握图像的采样原理,实现图像的采样过程,进行图像的灰度转换。
2、理解直方图的概念及应用,实现图像直方图的显示,及通过直方图均衡和直方图规定化方法对图像进行修正。
三、相关函数
●图像的增强
1、直方图
imhist函数用于数字图像的直方图计算或显示,
imhist(I,
n)计算和显示图像I的直方图,n为指定的灰度级数目,默认为256。
如果I是二值图像,那么n仅有两个值。
[counts,x]
=
imhist(...)返回直方图数据向量counts,相应的色彩值向量x。
imhist(i);
2、直方图均衡化
histeq函数用于数字图像的直方图均衡化,
J=histeq(I,n)
均衡化后的级数n,缺省值为64。
J=histeq(I,hgram)"
直方图规定化"
,即将原是图象I的直方图变换成用户指定的向量hgram(即指定另一幅图像的直方图数据向量)。
j=histeq(i,N);
对图像i执行均衡化,得到具有N个灰度级的灰度图像j,N缺省值为64
3、灰度调整
imadjust函数用于数字图像的灰度或颜色调整,
J=imadjust(I)将灰度图像I中的亮度值映射到J中的新值并使1%的数据是在低高强度和饱和,这增加了输出图像J的对比度值。
J=imadjust(I,[low_in;
high_in],[low_out;
high_out])
将图像I中的亮度值映射到J中的新值,即将low_in至high_in之间的值映射到low_out至high_out之间的值。
low_in以下与high_in以上的值被剪切掉了,也就是说,low_in以下的值映射到low_out,high_in以上的值映射到high_out。
它们都可以使用空的矩阵[],默认值是[01]。
j=imadjust(i,[,],[]);
将图像i转换为j,使灰度值从~与缺省值0~1相匹配
●运算函数
1、Zeros生成全0数组或矩阵
如B=zeros(m,n)orB=zeros([mn])返回一个m*n全0矩阵
2、取整函数
floor最小取整函数
round四舍五入取整函数
ceil最大取整函数
如a=[,,,,,+]
I=round(a)
I=[-203672+4i]
四、实验内容
1、对一幅图像进行2倍、4倍、8倍和16倍减采样,显示结果。
a=imread('
/'
b=rgb2gray(a);
form=1:
4
figure
[width,height]=size(b);
quartimage=zeros(floor(width/(m)),floor(height/(2*m)));
k=1;
n=1;
fori=1:
(m):
width
(2*m):
height
quartimage(k,n)=b(i,j);
n=n+1;
k=k+1;
end
imshow(uint8(quartimage));
End
2、显示一幅灰度图像a,改变图像亮度使其整体变暗得到图像b,显示两幅图像的直方图。
c=rgb2gray(a)
b=c-46
subplot(2,1,1);
imhist(c);
subplot(2,1,2);
imhist(b);
变暗后的图像'
3、对图像b进行直方图均衡化,显示结果图像和对应直方图。
b=imread('
c=rgb2gray(b)
j=histeq(c)
subplot(2,2,1),imshow(c)
subplot(2,2,2),imshow(j)
subplot(2,2,3),imhist(c)%显示原始图像直方图
subplot(2,2,4),imhist(j)%显示均衡化后图像的直方图
4、读入图像c,执行直方图规定化,使图像a的灰度分布与c大致相同,显示变换后图像及对应直方图。
>
J=histeq(I,64);
%均衡化成32个灰度级的直方图
[counts,x]=imhist(J);
%返回直方图图像向量counts
Q=rgb2gray(b)
M=histeq(Q,counts);
%将原始图像Q的直方图变成指定向量counts
figure,
subplot(3,2,1),imshow(I);
subplot(3,2,2),imshow(Q);
subplot(3,2,3),imhist(I);
subplot(3,2,4),imhist(Q)
subplot(3,2,5),imhist(J);
subplot(3,2,6),imhist(M);
实验三图像变换
1、熟悉及掌握图像的变换原理及性质,实现图像的傅里叶变换。
●图像的变换
1fft2
fft2函数用于数字图像的二维傅立叶变换,如:
j=fft2(i);
由于MATLAB无法显示复数图像,因此变换后的结果还需进行求模运算,即调用abs函数。
之后常常还进行对数变换,即调用log函数,以减缓傅里叶谱的快速衰减,更好地显示高频信息。
2ifft2
ifft2函数用于数字图像的二维傅立叶反变换,如:
j=fft2(i);
k=ifft2(j);
3fftshift
用于将变换后图像频谱中心从矩阵的原点移动到矩阵的中心
B=fftshift(i)
4利用fft2计算二维卷积
利用fft2函数可以计算二维卷积,如:
a=[8,1,6;
3,5,7;
4,9,2];
b=[1,1,1;
1,1,1;
1,1,1];
a(8,8)=0;
b(8,8)=0;
c=ifft2(fft2(a).*fft2(b));
c=c(1:
5,1:
5);
利用conv2(二维卷积函数)校验,如:
c=conv2(a,b);
1、对一幅图像进行平移,显示原始图像与处理后图像,分别对其进行傅里叶变换,显示变换后结果,分析原图的傅里叶谱与平移后傅里叶频谱的对应关系。
s=imread('
%读入原图像
i=rgb2gray(s)
i=double(i)
%傅里叶变换
k=fftshift(j);
%直流分量移到频谱中心
l=log(abs(k));
%对数变换
m=fftshift(j);
%直流分量移到频谱中心
RR=real(m);
%取傅里叶变换的实部
II=imag(m);
%取傅里叶变换的虚部
A=sqrt(RR.^2+II.^2);
%计算频谱府幅值
A=(A-min(min(A)))/(max(max(A)))*255;
%归一化
b=circshift(s,[800450]);
%对图像矩阵im中的数据进行移位操作
b=rgb2gray(b)
b=double(b)
c=fft2(b);
e=fftshift(c);
l=log(abs(e));
f=fftshift(c);
WW=real(f);
%取傅里叶变换的实部B
ZZ=imag(f);
B=sqrt(WW.^2+ZZ.^2);
B=(B-min(min(B)))/(max(max(B)))*255;
imshow(s);
imshow(uint8(b));
;
平移图像'
imshow(A);
离散傅里叶频谱'
imshow(B);
平移图像离散傅里叶频谱'
2、对一幅图像进行旋转,显示原始图像与处理后图像,分别对其进行傅里叶变换,显示变换后结果,分析原图的傅里叶谱与旋转后傅里叶频谱的对应关系。
b=imrotate(s,-90);
ims