logo资料库

数字图像处理实验报告(全答案).doc

第1页 / 共39页
第2页 / 共39页
第3页 / 共39页
第4页 / 共39页
第5页 / 共39页
第6页 / 共39页
第7页 / 共39页
第8页 / 共39页
资料共39页,剩余部分请下载后查看
一、实验目的
二、实验环境
三、常用函数
读写图像文件
1 imread
imread函数用于读入各种图像文件,如:a=imread('e:\w01.tif')
2 imwrite
imwrite函数用于写入图像文件,如:imwrite(a,'e:\w02.tif',’ti
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
四、实验内容(请将实验程序填写在下方合适的位置,实验图像结果拷屏粘贴)
一、实验目的
二、实验环境
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*
(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 deconvwnr
2 edge
3 strel
4 imerode
5 imdilate
一、实验目的
二、实验环境
三、实验内容
一、实验目的
二、实验环境
图像的增强
1、 直方图
imhist函数用于数字图像的直方图计算或显示,
[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 的直方图变换成用户指定
如:
i=imread('e:\w01.tif');
j=histeq(i,N);对图像i执行均衡化,得到具有N个灰度级的灰度图像j,N缺省值为64
3、 灰度调整
如:
i=imread('e:\w01.tif');
j=imadjust(i,[0.3,0.7],[]);将图像i转换为j,使灰度值从0.3~0
一、实验目的
二、实验环境
图像的变换
1 fft2
fft2函数用于数字图像的二维傅立叶变换,如:
i=imread('e:\w01.tif');
j=fft2(i);
由于MATLAB无法显示复数图像,因此变换后的结果还需进行求模运算,即调用abs函数。
之后常常还进行对数变换,即调用log函数,以减缓傅里叶谱的快速衰减,更好地显示高频信息。
2 ifft2
ifft2函数用于数字图像的二维傅立叶反变换,如:
i=imread('e:\w01.tif');
j=fft2(i);
k=ifft2(j);
3 fftshift
用于将变换后图像频谱中心从矩阵的原点移动到矩阵的中心
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(二维卷积函数)校验, 如:
a=[8,1,6;3,5,7;4,9,2];
b=[1,1,1;1,1,1;1,1,1];
c=conv2(a,b);
实验一 常用 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');
分享到:
收藏