数字图像处理实验报告附答案解析Word格式.docx
《数字图像处理实验报告附答案解析Word格式.docx》由会员分享,可在线阅读,更多相关《数字图像处理实验报告附答案解析Word格式.docx(36页珍藏版)》请在冰豆网上搜索。
Subplot(m,n,p)分成m*n个小窗口,在第p个窗口中创建坐标轴为当前坐标轴,用于显示图形。
6plot
绘制二维图形
plot(y)
Plot(x,y)xy可以是向量、矩阵。
●图像类型转换
1rgb2gray//灰色
把真彩图像转换为灰度图像
i=rgb2gray(j)
2im2bw//黑白
通过阈值化方法把图像转换为二值图像
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
4imdivide
Z=imdivide(x,y)表示图像x/y
5:
m=imadjust(a,[,],[0.5;
1]);
%图像变亮
n=imadjust(a,[,],[0;
0.5]);
%图像变暗
g=255-a;
%负片效果
四、实验内容(请将实验程序填写在下方合适的位置,实验图像结果拷屏粘贴)
1、读入一幅RGB图像,变换为灰度图像和二值图像,并在同一个窗口内分成三个子窗口来分别显示RGB图像和灰度图像,注上文字标题。
f:
\1.jpg'
i=rgb2gray(a)
I=im2bw(a,0.5)
subplot(3,1,1);
imshow(a);
title('
原图像'
subplot(3,1,2);
灰度图像'
subplot(3,1,3);
imshow(I);
二值图像'
)
2、对两幅不同图像执行加、减、乘、除操作,在同一个窗口内分成五个子窗口来分别显示,注上文字标题。
A=imresize(a,[800800])
b=imread('
\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);
原图像A'
subplot(3,2,2);
imshow(B);
原图像B'
subplot(3,2,3);
imshow(Z1);
加法图像'
subplot(3,2,4);
imshow(Z2);
减法图像'
subplot(3,2,5);
imshow(Z3);
乘法图像'
subplot(3,2,6);
除法图像'
3、对一幅图像进行灰度变化,实现图像变亮、变暗和负片效果,在同一个窗口内分成四个子窗口来分别显示,注上文字标题。
subplot(2,2,1);
subplot(2,2,2);
imshow(m);
图像变亮'
subplot(2,2,3);
imshow(n);
图像变暗'
subplot(2,2,4);
imshow(g);
负片效果'
4、熟悉数字图像处理常用函数的使用,调出帮助文档查看其各种不同用法。
方法:
选择函数(函数所在区变暗),点右键弹出菜单,选择“HelponSelection”
五、实验总结
分析图像的代数运算结果,分别陈述图像的加、减、乘、除运算可能的应用领域。
实验四常用图像增强方法
1、熟悉并掌握MATLAB图像处理工具箱的使用;
2、理解并掌握常用的图像的增强技术。
三、相关知识
1imnoise
imnoise函数用于对图像生成模拟噪声,如:
j=imnoise(i,'
gaussian'
0,0.02);
模拟均值为0方差为0.02的高斯噪声,
salt&
pepper'
0.04)模拟叠加密度为0.04的椒盐噪声
2fspecial
fspecial函数用于产生预定义滤波器,如:
h=fspecial('
sobel'
%sobel水平边缘增强滤波器
%高斯低通滤波器
laplacian'
%拉普拉斯滤波器
log'
%高斯拉普拉斯(LoG)滤波器
average'
%均值滤波器
3基于卷积的图像滤波函数
imfilter函数,filter2函数,二维卷积conv2滤波,都可用于图像滤波,用法类似,如:
h=[1,2,1;
0,0,0;
-1,-2,-1];
%产生Sobel算子的水平方向模板
j=filter2(h,i);
或者:
h=fspecial(‘prewitt’)
I=imread('
cameraman.tif'
H=fspecial('
prewitt‘);
%预定义滤波器
M=imfilter(I,H);
imshow(M)
h=[1,1,1;
1,1,1;
1,1,1];
h=h/9;
j=conv2(i,h);
4其他常用滤波举例
(1)中值滤波
medfilt2函数用于图像的中值滤波,如:
j=medfilt2(i,[MN]);
对矩阵i进行二维中值滤波,领域为M*N,缺省值为3*3
(2)利用拉氏算子锐化图像,如:
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
\lena.png'
J=imnoise(I,'
salt&
pepper'
0.04);
K1=medfilt2(J,[33]);
%对矩阵i进行二维中值滤波,领域为3*3
K2=medfilt2(J,[55]);
K3=medfilt2(J,[77]);
imshow(J);
椒盐噪声干扰图像'
imshow(K1);
领域为3*3二维中值滤波'
imshow(K2);
领域为5*5二维中值滤波'
imshow(K3);
领域为7*7二维中值滤波'
2、采用MATLAB中的函数filter2对受噪声干扰的图像进行均值滤波
%模拟均值为0方差为0.02的高斯噪声,
M=filter2(fspecial('
9),J)/255;
%模板尺寸为9
subplot(2,1,1);
imshow(j);
噪声干扰图像'
subplot(2,1,2);
imshow(M);
改进后的图像'
3、采用三种不同算子对图像进行锐化处理。
i=imread('
I=rgb2gray(s)
H=fspecial('
)%应用Sobel算子锐化图像
I1=filter2(H,I)%Sobel算子滤波锐化
prewitt'
)%应用prewitt算子锐化图像
I2=filter2(H,I)%prewitt算子滤波锐化
)%应用log算子锐化图像
I3=filter2(H,I)%log算子滤波锐化
imshow(I1);
Sobel算子锐化图像'
imshow(I2);
prewitt算子锐化图像'
imshow(I3);
log算子锐化图像'
四、实验总结
1、比较不同平滑滤波器的处理效果,分析其优缺点
2、比较不同锐化滤波器的处理效果,分析其优缺点
实验五图像恢复和图像分割
2、理解并掌握常用的图像的恢复和分割技术。
1deconvwnr
维纳滤波,
用法:
J=deconvwnr(I,PSF,NSR)
用维纳滤波算法对图片I进行图像恢复后返回图像J。
I是一个N维数组。
PSF是点扩展函数的卷积。
NSP是加性噪声的噪声对信号的功率比。
如:
I=im2double(imread('
));
OriginalImage'
%模拟运动模糊Matlab中文论坛
LEN=21;
THETA=11;
PSF=fspecial('
motion'
LEN,THETA);
blurred=imfilter(I,PSF,'
conv'
'
circular'
figure,imshow(blurred)
%恢复图像www.iLoveM
wnr2=deconvwnr(blurred_noisy,PSF);
figure,imshow(wnr2)
RestorationofBlurred'
2edge
检测灰度或者二值图像的边缘,返回一个二值图像,1像素是检测到的边缘,0像素是非边缘。
BW=edge(I,'
thresh,direction),
I为检测对象;
边缘检测算子可用sobel,roberts,prewitt,zerocross,log,canny;
thresh指定阈值,检测时忽略所有小于阈值的边缘,默认自动选择阈值;
direction方向,在所指定的方向direction上,用算子进行边缘检测horizontal(水平方向)、vertical(垂直方向)或both(两个方向)。
circuit.tif'
BW1=edge(I,'
imshow(BW1);
3strel
创建形态学结构元素。
SE=STREL('
arbitrary'
NHOOD,HEIGHT)创建一个指定领域的非平面结构化元素。
HEIGHT是一个矩阵,大小和NHOOD相同,他指定了NHOOD中任何非零元素的高度值。
ball'
R,H,N)创建一个空间椭球状的结构元素,其X-Y平面半径为R,高度为H。
R必须为非负整数,H是一个实数。
N必须为一个非负偶数。
当N>
0时此球形结构元素由一系列空间线段结构元素来近似。
diamond'
R)创建一个指定大小R平面钻石形状的结构化元素。
R是从结构化元素原点到其点的距离,必须为非负整数。
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('
11);
erodedBW=imerode(originalBW,se);
imshow(originalBW),figure,imshow(erodedBW)
5imdilate
膨胀图像
IM2=imdilate(IM,SE)
膨胀灰度图像、二值图像、或者打包的二值图像IM,返回膨胀图像M2。
变量SE是一个结构元素或者一个结构元素的数组,其是通过strel函数返回的。
利用一个运行结构元素膨胀灰度图像。
5,5);
I2=imdilate(I,se);
imshow(I),title('
Original'
figure,imshow(I2),title('
Dilated'
1、产生运动模糊图像,运用维纳滤波进行图像恢复,显示结果。
I=im2double(I);
%模拟运动模糊
%恢复图像
wnr2=deconvwnr(blurred,PSF);
subplot(1,2,1);
imshow(blurred);
运动模糊图像'
subplot(1,2,2);
imshow(wnr2);
恢复图像'
2、采用三种不同算子检测图像边缘,显示结果。
BW2=edge(I,'
zerocross'
BW3=edge(I,'
canny'
prewitt边缘图'
imshow(BW2);
zerocross边缘图'
imshow(BW3);
canny边缘图'
3、对二值图像分别进行方形模板3*3和5*5的膨胀和腐蚀操作,显示结果。
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);
3*3膨胀图像'
5*5膨胀图像'
imshow(erodedBW1);
3*3腐蚀图像'
imshow(erodedBW2);
5*5腐蚀图像'
实验六图像处理实际应用
1、熟悉并掌握MATLAB图像处理工具箱的使用;
2、理解并掌握常用的图像处理技术。
三、实验内容
调试运行下列程序,分析程序,对每条语句给出注释,并显示最终执行结果。
总结算法思想及优缺点.
I=imread('
Car.jpg'
[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);
添加注释和改正后的程序:
\Car.jpg'
%读取图片
%给定图片大小
%返回双精度值
tic%计时开始
%一列全零矩阵
y%给定i的范围
x%给定j的范围
%y矩阵加一
%y矩阵的最大元素
1))%确定蓝色RGBBlue_y所在位置
%对车牌区域的修正,向上调整
%y矩阵的最大元素
y))%确定蓝色RGBBlue_y所在位置
%对车牌区域的修正向下调整
%行的范围
%%%%%%%%X方向%%%%%%%%%