数字图像处理实验报告(全答案)
更新时间:2024-05-31 19:39: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、理解直方图的概念及应用,实现图像直方图的显示,及通过直方图均衡和直方图规定化方法对图像进行修正。 二、实验环境
MATLAB 6.5以上版本、WIN XP或WIN2000计算机
三、相关函数 ? 图像的增强
1、 直方图
imhist函数用于数字图像的直方图计算或显示,
imhist(I, n)计算和显示图像I的直方图,n为指定的灰度级数目,默认为256。如果I是二值图像,那么n仅有两个值。
[counts,x] = imhist(...)返回直方图数据向量counts,相应的色彩值向量x。
如:
i=imread('e:\\w01.tif');
imhist(i); 2 、直方图均衡化
histeq函数用于数字图像的直方图均衡化,
J = histeq(I, n) 均衡化后的级数n,缺省值为64。
J = histeq(I, hgram) \直方图规定化\,即将原是图象 I 的直方图变换成用户指定的向量 hgram (即指定另一幅图像的直方图数据向量)。
如:
i=imread('e:\\w01.tif');
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。它们都可以使用空的矩阵[],默认值是[0 1]。 如:
i=imread('e:\\w01.tif');
j=imadjust(i,[0.3,0.7],[]);将图像i转换为j,使灰度值从0.3~0.7与缺省值0~1相匹配
? 运算函数
1、Zeros生成全0数组或矩阵
如 B = zeros(m,n) or B = zeros([m n]) 返回一个 m*n 全0矩阵 2、取整函数 floor最小取整函数 round四舍五入取整函数 ceil最大取整函数
如a = [-1.9, -0.2, 3.4, 5.6, 7.0, 2.4+3.6i] I=round(a)
I =[ -2 0 3 6 7 2+ 4i]
A=sqrt(RR.^2+II.^2); %计算频谱府幅值 A=(A-min(min(A)))/(max(max(A)))*255; % 归一化
b=circshift(s,[800 450]); %对图像矩阵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; % 归一化 subplot(2,2,1);imshow(s);title('原图像')
subplot(2,2,2);imshow(uint8(b));;title('平移图像') subplot(2,2,3);imshow(A);title('离散傅里叶频谱');
subplot(2,2,4);imshow(B);title('平移图像离散傅里叶频谱')
2、对一幅图像进行旋转,显示原始图像与处理后图像,分别对其进行傅里叶变换,显示变换后结果,分析原图的傅里叶谱与旋转后傅里叶频谱的对应关系。
s=imread('f:\\1.jpg');%读入原图像 i=rgb2gray(s) i=double(i)
j=fft2(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=imrotate(s, -90); %对图像矩阵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; % 归一化 subplot(2,2,1);imshow(s);title('原图像')
subplot(2,2,2);imshow(uint8(b));;title('平移图像') subplot(2,2,3);imshow(A);title('离散傅里叶频谱');
subplot(2,2,4);imshow(B);title('平移图像离散傅里叶频谱')
正在阅读:
数字图像处理实验报告(全答案)05-31
《青铜葵花》导读课教学设计01-27
最新-县2019年教育工作情况报告 精品12-18
弃船时应采取的行动03-20
亲密伙伴作文400字06-19
醇基燃料突发事故应急预案11-23
林业局结对帮扶脱贫攻坚工作总结报告08-04
人民日报评论四个全面405-15
专业起名三才五格最佳笔画组合配置07-11
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 图像处理
- 答案
- 实验
- 数字
- 报告
- 公司理财Submission to ch16-17
- 全国计算机等级考试辅导讲义 - 二级公共基础知识
- 基于S7-200的PLC四层电梯控制系统设计
- 钢筋混凝土结构设计 第五章 单项选择
- 2016年江苏省化工工程师《基础知识》:杨氏双缝干涉考试试题
- 2012学年度第一学期金融与统计学院课程表
- 绿化工程施工组织设计
- 综合评价
- 家具制造业职业健康分级管控
- 2015-2016学年第二学期青云中学初三英语模拟试卷及答案
- 孟德尔豌豆杂交试验(二)第2课时学案
- 苏教版小学五年级语文下册期中试卷
- 五年级上品社教案
- 附着式升降脚手架检验报告JGJ305-2013附录
- 狠抓质量工作 促公司长足发展
- 10KV施工方案
- 广东引进高层次人才认定申报
- 混凝土结构基本原理模拟题
- 美术五上《重复的形》教案
- 2018版中国乳制品市场前景研究与投资策略报告目录