数字图像处理实验报告(全答案)
更新时间:2023-10-10 03:40:02 阅读量: 综合文库 文档下载
实验一 常用MATLAB图像处理命令
一、实验目的
1、熟悉并掌握MATLAB工具的使用;
2、实现图像的读取、显示、代数运算和简单变换。 二、实验环境
MATLAB 6.5以上版本、WIN XP或WIN2000计算机
三、常用函数 ? 读写图像文件
1 imread
imread函数用于读入各种图像文件,如:a=imread('e:\\w01.tif') 2 imwrite
imwrite函数用于写入图像文件,如:imwrite(a,'e:\\w02.tif',’tif’) 3 imfinfo
imfinfo函数用于读取图像文件的有关信息,如:imfinfo('e:\\w01.tif') ? 图像的显示
1 image
image函数是MATLAB提供的最原始的图像显示函数,如: a=[1,2,3,4;4,5,6,7;8,9,10,11,12]; image(a); 2 imshow
imshow函数用于图像文件的显示,如: i=imread('e:\\w01.tif');
imshow(i);
title(‘原图像’)%加上图像标题
3 colorbar
colorbar函数用显示图像的颜色条,如: i=imread('e:\\w01.tif'); imshow(i); colorbar; 4 figure
figure函数用于设定图像显示窗口,如:figure(1); /figure(2); 5 subplot
把图形窗口分成多个矩形部分,每个部分可以分别用来进行显示。 Subplot(m,n,p)分成m*n个小窗口,在第p个窗口中创建坐标轴为当前坐标轴,用于显示图形。
6 plot 绘制二维图形 plot(y)
Plot(x,y)xy可以是向量、矩阵。 ? 图像类型转换
1 rgb2gray//灰色 把真彩图像转换为灰度图像 i=rgb2gray(j) 2 im2bw//黑白
通过阈值化方法把图像转换为二值图像 I=im2bw(j,level)
Level表示灰度阈值,取值范围0~1(即0.n),表示阈值取自原图像灰度范围的n%
3 imresize 改变图像的大小
I=imresize(j,[m n])将图像j大小调整为m行n列 ? 图像运算
1 imadd
两幅图像相加,要求同样大小,同种数据类型 Z=imadd(x,y)表示图像x+y 2 imsubstract
两幅图像相减,要求同样大小,同种数据类型 Z=imsubtract(x,y) 表示图像x-y 3 immultiply
Z=immultiply(x,y) 表示图像x*y 4 imdivide
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图像和灰度图像,注上文字标题。
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,[800 800]) b=imread('f:\\2.jpg')
B=imresize(b,[800 800]) 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、熟悉数字图像处理常用函数的使用,调出帮助文档查看其各种不同用法。 方法:选择函数(函数所在区变暗),点右键弹出菜单,选择“Help on Selection”
五、实验总结
分析图像的代数运算结果,分别陈述图像的加、减、乘、除运算可能的应用领域。
实验四 常用图像增强方法
一、实验目的
1、熟悉并掌握MATLAB图像处理工具箱的使用;
2、理解并掌握常用的图像的增强技术。 二、实验环境
MATLAB 6.5以上版本、WIN XP或WIN2000计算机 三、相关知识 1 imnoise
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的椒盐噪声 2 fspecial
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,[M N]);对矩阵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,[5 5]); K3 = medfilt2(J,[7 7]);
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以上版本、WIN XP或WIN2000计算机 三、相关知识
1 deconvwnr 维纳滤波,
用法:J = deconvwnr(I,PSF,NSR)
用维纳滤波算法对图片I进行图像恢复后返回图像J。 I是一个N维数组。PSF是点扩展函数的卷积。NSP是加性噪声的噪声对信号的功率比。
如:
I = im2double(imread('cameraman.tif')); imshow(I);
title('Original Image '); %模拟运动模糊 Matlab中文论坛 LEN = 21; THETA = 11;
PSF = fspecial('motion', LEN, THETA); blurred = imfilter(I, PSF, 'conv', 'circular'); figure, imshow(blurred) %恢复图像www.iLoveMatlab.cn
wnr2 = deconvwnr(blurred_noisy, PSF); figure, imshow(wnr2) title('Restoration of Blurred')
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的正方形 4 imerode 腐蚀图像
用法: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)
5 imdilate 膨胀图像
用法: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、理解并掌握常用的图像处理技术。 二、实验环境
MATLAB 6.5以上版本、WIN XP或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 for j=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
[temp MaxY]=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 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 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);%返回双精度值 %%%%%%%%%%% RGB to HSI %%%%%%%% tic %计时开始 %%%%%%%% Y 方向 %%%%%%%%%% Blue_y=zeros(y,1);%一列全零矩阵 for i=1:y%给定i的范围 for j=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))% 确定蓝色RGB Blue_y所在位置 PY1=PY1-1; %对车牌区域的修正,向上调整 end PY2=MaxY; %y矩阵的最大元素 while ((Blue_y(PY2,1)>=5)&&(PY2 PY2=PY2+1; %对车牌区域的修正向下调整 end IY=I(PY1:PY2,:,:);%行的范围 %%%%%%%% X 方向 %%%%%%%%%% Blue_x=zeros(1,x); %一行全一矩阵 for j=1:x%给定j的取值范围 for i=PY1:PY2%给定i的取值范围 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)))%调整I中的范围 Blue_x(1,j)= Blue_x(1,j)+1; % Blue_x 的矩阵加一 end end end PX1=1;%当PX1等于1时 while ((Blue_x(1,PX1)<3)&&(PX1 PX1=PX1+1; %对车牌区域的修正向下调整 end PX2=x; %当PX2等于x时 while ((Blue_x(1,PX2)<3)&&(PX2>PX1)) %确定蓝色RGB Blue_x的位置 PX2=PX2-1; %对车牌区域的修正向下调整 end PX1=PX1-2; % 对车牌区域的修正 PX2=PX2+2; %对车牌区域的修正 Plate=I(PY1:PY2,PX1-2:PX2,:);%矩阵行列的范围 t=toc % 读取计时 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% figure,imshow(I);%创建图像窗口,显示图像I figure,plot(Blue_y);grid%创建图像窗口,绘制Blue_y图像,画出网格线 figure,plot(Blue_x);grid%创建图像窗口,绘制Blue_x图像,画出网格线 figure,imshow(Plate); %创建图像窗口,显示图像Plate t = 0.5630
正在阅读:
数字图像处理实验报告(全答案)10-10
煤炭企业经营风险管理与控制策略分析07-06
初中思想品德复习培训心得体会11-01
dota打电脑攻略12-25
重宣传 抓落实 做好源头治超工作10-16
2020届高考英语一轮复习语法专项突破13特殊句式倒装句强调句 含解析 牛津译林版12-13
关于剩余法评估不动产价值中土地增值税计算问题的分析01-21
竣工档案监理审核报告11-05
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 图像处理
- 答案
- 实验
- 数字
- 报告
- TriVex手术系统可行性报告
- 计算机组成实验报告汇总
- 自考审计学复习资料
- 国内商业银行发展投行业务时的风险控制
- 关于进一步加强医疗机构强检计量器具的管理通知
- 河南省高速公路线路简介
- 2009-18关于印发自治区本级行政事业单位国有资产处置管理暂行办法的通知
- “看客现象”背后的思考 一起课堂事件引起的思考
- 新中国金融大事记20141001
- 气压带与风带 课前预习学案(1)
- 译文
- 法院创先争优工作总结
- 用爱谱写师魂
- 课题1 金刚石、石墨和C60 教学设计 教案
- 大班数学教学大纲
- 人教版高中英语同步练习:必修4 unit 5 单元测试(含答案)
- 丹麦当代景观设计小览
- 信息学奥赛试题精选33题(附带题解)
- 1993年国务院印发的《国务院关于国家行政机关和企业事业单位印章的规定》(国发〔1993〕21号)
- 十不准 施工现场隧道施工人员安全手册