数字图像处理实验全完整答案.docx
- 文档编号:30316425
- 上传时间:2023-08-13
- 格式:DOCX
- 页数:38
- 大小:785.60KB
数字图像处理实验全完整答案.docx
《数字图像处理实验全完整答案.docx》由会员分享,可在线阅读,更多相关《数字图像处理实验全完整答案.docx(38页珍藏版)》请在冰豆网上搜索。
数字图像处理实验全完整答案
实验一常用MATLAB图像处理命令
一、实验目得
1、熟悉并掌握MATLAB工具得使用;
2、实现图像得读取、显示、代数运算与简单变换。
二、实验环境
MATLAB6。
5以上版本、WIN XP或WIN2000计算机
三、常用函数
●读写图像文件
1 imread
imread函数用于读入各种图像文件,如:
a=imread('e:
\w01。
tif')
2imwrite
imwrite函数用于写入图像文件,如:
imwrite(a,’e:
\w02。
tif’,’tif')
3 imfinfo
imfinfo函数用于读取图像文件得有关信息,如:
imfinfo('e:
\w01、tif’)
●图像得显示
1image
image函数就是MATLAB提供得最原始得图像显示函数,如:
a=[1,2,3,4;4,5,6,7;8,9,10,11,12];
image(a);
2imshow
imshow函数用于图像文件得显示,如:
i=imread('e:
\w01、tif');
imshow(i);
title(‘原图像’)%加上图像标题
3colorbar
colorbar函数用显示图像得颜色条,如:
i=imread(’e:
\w01。
tif');
imshow(i);
colorbar;
4figure
figure函数用于设定图像显示窗口,如:
figure
(1);/figure
(2);
5 subplot
把图形窗口分成多个矩形部分,每个部分可以分别用来进行显示、
Subplot(m,n,p)分成m*n个小窗口,在第p个窗口中创建坐标轴为当前坐标轴,用于显示图形、
6plot
绘制二维图形
plot(y)
Plot(x,y)xy可以就是向量、矩阵。
●图像类型转换
1rgb2gray
把真彩图像转换为灰度图像
i=rgb2gray(j)
2 im2bw
通过阈值化方法把图像转换为二值图像
I=im2bw(j,level)
Level表示灰度阈值,取值范围0~1(即0.n),表示阈值取自原图像灰度范围得n%
3imresize
改变图像得大小
I=imresize(j,[mn])将图像j大小调整为m行n列
●图像运算
1imadd
两幅图像相加,要求同样大小,同种数据类型
Z=imadd(x,y)表示图像x+y
2imsubstract
两幅图像相减,要求同样大小,同种数据类型
Z=imsubtract(x,y)表示图像x-y
3immultiply
Z=immultiply(x,y)表示图像x*y
4 imdivide
Z=imdivide(x,y) 表示图像x/y
四、实验内容(请将实验程序填写在下方合适得位置,实验图像结果拷屏粘贴)
1、读入一幅RGB图像,变换为灰度图像与二值图像,并在同一个窗口内分成三个子窗口来分别显示RGB图像与灰度图像,注上文字标题。
a=imread(’f:
\1。
jpg’)
i=rgb2gray(a)
I=im2bw(a,0.5)
subplot(3,1,1);imshow(a);title('原图像')
subplot(3,1,2);imshow(i);title('灰度图像')
subplot(3,1,3);imshow(I);title('二值图像’)
2、对两幅不同图像执行加、减、乘、除操作,在同一个窗口内分成五个子窗口来分别显示,注上文字标题。
a=imread(’f:
\1。
jpg')
A=imresize(a,[800800])
b=imread('f:
\2.jpg')
B=imresize(b,[800800])
Z1=imadd(A,B)
Z2=imsubtract(A,B)
Z3=immultiply(A,B)
Z4=imdivide(A,B)
subplot(3,2,1);imshow(A);title('原图像A')
subplot(3,2,2);imshow(B);title('原图像B')
subplot(3,2,3);imshow(Z1);title('加法图像')
subplot(3,2,4);imshow(Z2);title('减法图像’)
subplot(3,2,5);imshow(Z3);title(’乘法图像’)
subplot(3,2,6);imshow(Z2);title('除法图像’)
3、对一幅图像进行灰度变化,实现图像变亮、变暗与负片效果,在同一个窗口内分成四个子窗口来分别显示,注上文字标题。
a=imread('f:
\1。
jpg');
m=imadjust(a,[,],[0、5;1]) ;%图像变亮
n =imadjust(a,[,],[0;0。
5]) ;%图像变暗
g=255-a;%负片效果
subplot(2,2,1);imshow(a);title(’原图像')
subplot(2,2,2);imshow(m);title('图像变亮')
subplot(2,2,3);imshow(n);title(’图像变暗’)
subplot(2,2,4);imshow(g);title('负片效果')
4、熟悉数字图像处理常用函数得使用,调出帮助文档查瞧其各种不同用法。
方法:
选择函数(函数所在区变暗),点右键弹出菜单,选择“HelponSelection”
五、实验总结
分析图像得代数运算结果,分别陈述图像得加、减、乘、除运算可能得应用领域。
实验四 常用图像增强方法
一、实验目得
1、熟悉并掌握MATLAB图像处理工具箱得使用;
2、理解并掌握常用得图像得增强技术。
二、实验环境
MATLAB6、5以上版本、WINXP或WIN2000计算机
三、相关知识
1imnoise
imnoise函数用于对图像生成模拟噪声,如:
i=imread('e:
\w01。
tif’);
j=imnoise(i,'gaussian’,0,0、02);模拟均值为0方差为0。
02得高斯噪声,
j=imnoise(i,'salt&pepper', 0.04) 模拟叠加密度为0.04得椒盐噪声
2fspecial
fspecial函数用于产生预定义滤波器,如:
h=fspecial('sobel');%sobel水平边缘增强滤波器
h=fspecial('gaussian');%高斯低通滤波器
h=fspecial(’laplacian’);%拉普拉斯滤波器
h=fspecial(’log');%高斯拉普拉斯(LoG)滤波器
h=fspecial('average');%均值滤波器
3 基于卷积得图像滤波函数
imfilter函数, filter2函数,二维卷积conv2滤波,都可用于图像滤波,用法类似,如:
i=imread('e:
\w01、tif’);
h=[1,2,1;0,0,0;—1,-2,—1];%产生Sobel算子得水平方向模板
j=filter2(h,i);
或者:
h =fspecial(‘prewitt’)
I=imread('cameraman、tif');
imshow(I);
H =fspecial('prewitt‘); %预定义滤波器
M=imfilter(I,H);
imshow(M)
或者:
i=imread(’e:
\w01。
tif');
h=[1,1,1;1,1,1;1,1,1];
h=h/9;
j=conv2(i,h);
4其她常用滤波举例
(1)中值滤波
medfilt2函数用于图像得中值滤波,如:
i=imread(’e:
\w01、tif');
j=medfilt2(i,[MN]);对矩阵i进行二维中值滤波,领域为M*N,缺省值为3*3
(2)利用拉氏算子锐化图像, 如:
i=imread('e:
\w01、tif');
j=double(i);
h=[0,1,0;1,-4,0;0,1,0];%拉氏算子
k=conv2(j,h,’same’);
三、实验步骤
1、采用二维中值滤波函数medfilt2对受椒盐噪声干扰得图像滤波,窗口分别采用3*3,5*5,7*7
I=imread('f:
\lena。
png');
J= imnoise(I,’salt & pepper',0.04);
K1=medfilt2(J,[3 3]);%对矩阵i进行二维中值滤波,领域为3*3
K2 =medfilt2(J,[55]);
K3= medfilt2(J,[77]);
subplot(2,2,1);imshow(J);title('椒盐噪声干扰图像')
subplot(2,2,2);imshow(K1);title('领域为3*3二维中值滤波')
subplot(2,2,3);imshow(K2);title(’领域为5*5二维中值滤波’)
subplot(2,2,4);imshow(K3);title('领域为7*7二维中值滤波')
2、采用MATLAB中得函数filter2对受噪声干扰得图像进行均值滤波
I= imread('f:
\lena.png');
j=imnoise(i,’gaussian',0,0、02);%模拟均值为0方差为0.02得高斯噪声,
M= filter2(fspecial('average',9),J)/255; %模板尺寸为9
subplot(2,1,1);imshow(j);title('噪声干扰图像’)
subplot(2,1,2);imshow(M);title(’改进后得图像’)
3、采用三种不同算子对图像进行锐化处理。
i=imread('f:
\1.jpg')
I=rgb2gray(s)
H=fspecial('sobel’)%应用Sobel算子锐化图像
I1=filter2(H,I)%Sobel算子滤波锐化
H=fspecial('prewitt')%应用prewitt算子锐化图像
I2=filter2(H,I)%prewitt算子滤波锐化
H=fspecial('log’)%应用log算子锐化图像
I3=filter2(H,I)%log算子滤波锐化
subplot(2,2,1);imshow(i);title('原图像’)
subplot(2,2,2);imshow(I1);title('Sobel算子锐化图像’)
subplot(2,2,3);imshow(I2);title(’prewitt算子锐化图像’)
subplot(2,2,4);imshow(I3);title(’log算子锐化图像’)
四、实验总结
1、比较不同平滑滤波器得处理效果,分析其优缺点
2、比较不同锐化滤波器得处理效果,分析其优缺点
实验五图像恢复与图像分割
一、实验目得
1、熟悉并掌握MATLAB图像处理工具箱得使用;
2、理解并掌握常用得图像得恢复与分割技术。
二、实验环境
MATLAB 6、5以上版本、WINXP或WIN2000计算机
三、相关知识
1deconvwnr
维纳滤波,
用法:
J=deconvwnr(I,PSF,NSR)
用维纳滤波算法对图片I进行图像恢复后返回图像J。
I就是一个N维数组。
PSF就是点扩展函数得卷积。
NSP就是加性噪声得噪声对信号得功率比。
如:
I=im2double(imread(’cameraman。
tif'));
imshow(I);
title('OriginalImage');
%模拟运动模糊
LEN=21;ﻫTHETA= 11; ﻫPSF =fspecial('motion', LEN, THETA);
blurred=imfilter(I,PSF,'conv’, ’circular');
figure, imshow(blurred)
%恢复图像
wnr2 =deconvwnr(blurred_noisy,PSF);ﻫfigure, imshow(wnr2)ﻫtitle('Restoration ofBlurred')
2 edge
检测灰度或者二值图像得边缘,返回一个二值图像,1像素就是检测到得边缘,0像素就是非边缘、
用法:
BW=edge(I,’sobel',thresh,direction),
I为检测对象;边缘检测算子可用sobel,roberts,prewitt,zerocross,log,canny;
thresh指定阈值,检测时忽略所有小于阈值得边缘,默认自动选择阈值;direction方向,在所指定得方向direction上,用算子进行边缘检测horizontal(水平方向)、vertical(垂直方向)或both(两个方向)。
如:
I=imread('circuit.tif’);
BW1=edge(I,'prewitt');
imshow(BW1);
3 strel
创建形态学结构元素。
用法:
SE=STREL(’arbitrary’,NHOOD,HEIGHT) 创建一个指定领域得非平面结构化元素。
HEIGHT就是一个矩阵,大小与NHOOD相同,她指定了NHOOD中任何非零元素得高度值、
SE=STREL(’ball',R,H,N)创建一个空间椭球状得结构元素,其X-Y平面半径为R,高度为H、R必须为非负整数,H就是一个实数。
N必须为一个非负偶数。
当N>0时此球形结构元素由一系列空间线段结构元素来近似。
SE=STREL('diamond’,R)创建一个指定大小R平面钻石形状得结构化元素、R就是从结构化元素原点到其点得距离,必须为非负整数。
SE=STREL(’disk’,R,N)创建一个指定半径R得平面圆盘形得结构元素。
这里R必须就是非负整数、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('circles。
png');ﻫse =strel('disk',11);
erodedBW= imerode(originalBW,se); ﻫimshow(originalBW),figure,imshow(erodedBW)
5imdilate
膨胀图像
用法:
IM2=imdilate(IM, SE)ﻫ膨胀灰度图像、二值图像、或者打包得二值图像IM,返回膨胀图像M2。
变量SE就是一个结构元素或者一个结构元素得数组,其就是通过strel函数返回得。
如:
利用一个运行结构元素膨胀灰度图像。
I=imread('cameraman、tif’);
se=strel('ball',5,5);
I2=imdilate(I,se);
imshow(I),title('Original')
figure, imshow(I2),title(’Dilated')
三、实验步骤
1、产生运动模糊图像,运用维纳滤波进行图像恢复,显示结果。
i=imread('f:
\1、jpg')
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);title(’恢复图像’)
2、采用三种不同算子检测图像边缘,显示结果。
i=imread(’f:
\1、jpg’)
BW1 =edge(I,'prewitt');
BW2= edge(I,'zerocross');
BW3= edge(I,’canny’);
subplot(2,2,1);imshow(i);title(’原图像’)
subplot(2,2,2);imshow(BW1);title('prewitt边缘图')
subplot(2,2,3);imshow(BW2);title('zerocross边缘图’)
subplot(2,2,4);imshow(BW3);title('canny边缘图')
3、对二值图像分别进行方形模板3*3与5*5得膨胀与腐蚀操作,显示结果、
a=imread('f:
\1、jpg’)
i=rgb2gray(a)
I=im2bw(a,0.5)
se3=strel('disk',3);
erodedBW1=imerode(I,se3);
se4=strel(’disk’,5);
erodedBW2 =imerode(I,se4);
se1=strel(’ball',3,3);
I1=imdilate(a,se1);
se2=strel('ball’,5,5);
I2 = imdilate(a,se2);
subplot(2,2,1);imshow(I1);title('3*3膨胀图像')
subplot(2,2,2);imshow(I2);title(’5*5膨胀图像')
subplot(2,2,3);imshow(erodedBW1);title('3*3腐蚀图像')
subplot(2,2,4);imshow(erodedBW2);title('5*5腐蚀图像’)
实验六 图像处理实际应用
一、实验目得
1、熟悉并掌握MATLAB图像处理工具箱得使用;
2、理解并掌握常用得图像处理技术。
二、实验环境
MATLAB6、5以上版本、WINXP或WIN2000计算机
三、实验内容
调试运行下列程序,分析程序,对每条语句给出注释,并显示最终执行结果、总结算法思想及优缺点。
I=imread('Car、jpg’);
[y,x,z]=size(I);
myI=double(I);
%%%%%%%%%%%RGB to HSI%%%%%%%%
tic
%%%%%%%% Y方向 %%%%%%%%%%
Blue_y=zeros(y,1);
for i=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
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)>=5)&&(PY2〈y))
PY2=PY2+1;
end
IY=I(PY1:
PY2,:
:
);
%%%%%%%%X方向%%%%%%%%%%
Blue_x=zeros(1,x);
for j=1:
x
for i=PY1:
PY2
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)))
Blue_x(1,j)= Blue_x(1,j)+1;
end
end
end
PX1=1;
while ((Blue_x(1,PX1)<3)&&(PX1 PX1=PX1+1; end PX2=x; while((Blue_x(1,PX2)<3)&&(PX2〉PX1)) PX2=PX2-1; end 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);grid figure,imshow(IY); 添加注释与改正后得程序: I=imread(’f: \Car、jpg’);%读取图片 [y,x,z]=size(I);%给定图片大小 myI=double(I);%返回双精度值 %%%%%%%%%%%RGBtoHSI %%%%%%%% tic %计时开始 %%%%%%%%Y方向%%%%%%%%%% Blue_y=zeros(y,1);%一列全零矩阵 fori=1: y%给定i得范围 forj=1: x%给定j得范围 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;%y矩阵加一 end end end [temp MaxY]=max(Blue_y); %Y方向车牌区域确定 PY1=MaxY;%y矩阵得最大元素 while ((Blue_y(PY1,1)〉=5)&&(PY1〉1))%确定蓝色RGBBlue_y所在位置 PY1=PY1—1;%对车牌区域得修正,向上调整 end PY2=MaxY; %y矩阵得最大元素 while((Blue_y(PY2,1)〉=5)&&(PY2 PY2=PY2+1;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字图像 处理 实验 完整 答案
![提示](https://static.bdocx.com/images/bang_tan.gif)