数字图像实验报告.docx

上传人:b****8 文档编号:11001919 上传时间:2023-02-24 格式:DOCX 页数:28 大小:1.99MB
下载 相关 举报
数字图像实验报告.docx_第1页
第1页 / 共28页
数字图像实验报告.docx_第2页
第2页 / 共28页
数字图像实验报告.docx_第3页
第3页 / 共28页
数字图像实验报告.docx_第4页
第4页 / 共28页
数字图像实验报告.docx_第5页
第5页 / 共28页
点击查看更多>>
下载资源
资源描述

数字图像实验报告.docx

《数字图像实验报告.docx》由会员分享,可在线阅读,更多相关《数字图像实验报告.docx(28页珍藏版)》请在冰豆网上搜索。

数字图像实验报告.docx

数字图像实验报告

江苏科技大学

数字图像处理实验报告

 

专业名称:

计算机科学与技术

班级:

13419013

学号:

**********

**********

*********

2016年6月5日

 

实验一常用MATLAB图像处理命令

1.1实验目的

 1、熟悉并掌握MATLAB、PHOTOSHOP等工具的使用;

2、实现图像的读取、显示、代数运算和简单变换。

1.2实验环境

MATLAB11以上版本、WINXP或WIN7计算机

1.3常用函数

●读写图像文件

1imread

imread函数用于读入各种图像文件,如:

a=imread('e:

\w01.tif')

2imwrite

imwrite函数用于写入图像文件,如:

imwrite(a,'e:

\w02.tif',’tif’)

3imfinfo

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);

5subplot

把图形窗口分成多个矩形部分,每个部分可以分别用来进行显示。

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

1.4实验内容(请将实验程序填写在下方合适的位置,实验图像结果拷屏粘贴)

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('二值图像')

 

图1.1二值图像

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('除法图像')

图1.2图像运算

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('负片效果')

图1.3图像变换

4、熟悉数字图像处理常用函数的使用,调出帮助文档查看其各种不同用法。

方法:

选择函数(函数所在区变暗),点右键弹出菜单,选择“HelponSelection”

5.使用图像输入设备(扫描仪、数码相机、摄像机等)进行图像输入,并用指定的图像文件格式bmp存放。

学会常用数字图像处理软件Photoshop的功能操作练习。

1.5实验总结

分析图像的代数运算结果,分别陈述图像的加、减、乘、除运算可能的应用领域。

实验二图像的傅里叶变换

1.1实验目的

 1、熟悉及掌握图像的傅里叶变换原理及性质,实现图像的傅里叶变换。

1.2实验环境

MATLAB11以上版本、WINXP或WIN7计算机

1.3相关函数

●图像的变换

1fft2

fft2函数用于数字图像的二维傅立叶变换,如:

i=imread('e:

\w01.tif');

j=fft2(i);

由于MATLAB无法显示复数图像,因此变换后的结果还需进行求模运算,即调用abs函数。

之后常常还进行对数变换,即调用log函数,以减缓傅里叶谱的快速衰减,更好地显示高频信息。

2ifft2

ifft2函数用于数字图像的二维傅立叶反变换,如:

i=imread('e:

\w01.tif');

j=fft2(i);

k=ifft2(j);

3fftshift

用于将变换后图像频谱中心从矩阵的原点移动到矩阵的中心

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);

1.4实验内容

1、对一幅图像进行平移,显示原始图像与处理后图像,分别对其进行傅里叶变换,显示变换后结果,分析原图的傅里叶谱与平移后傅里叶频谱的对应关系。

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=circshift(s,[800450]);%对图像矩阵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.1图像的傅里叶变换

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('平移图像离散傅里叶频谱')

图2.2傅里叶变换的位移

 

实验三图像的灰度变换和直方图变换

1.1实验目的

 1、熟悉及掌握图像的采样原理,实现图像的采样过程,进行图像的灰度转换。

2、理解直方图的概念及应用,实现图像直方图的显示,及通过直方图均衡和直方图规定化方法对图像进行修正。

1.2实验环境

MATLAB11以上版本、WINXP或WIN7计算机

1.3相关函数

●图像的增强

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。

它们都可以使用空的矩阵[],默认值是[01]。

如:

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)orB=zeros([mn])返回一个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=[-203672+4i]

1.4实验内容

1、对一幅图像进行2倍、4倍、8倍和16倍减采样,显示结果。

a=imread('f:

/1.jpg');

b=rgb2gray(a);

form=1:

4

figure

[width,height]=size(b);

quartimage=zeros(floor(width/(m)),floor(height/(2*m)));

k=1;

n=1;

fori=1:

(m):

width

forj=1:

(2*m):

height

quartimage(k,n)=b(i,j);

n=n+1;

end

k=k+1;

n=1;

end

imshow(uint8(quartimage));

End

图3.1图像采样

2、显示一幅灰度图像a,改变图像亮度使其整体变暗得到图像b,显示两幅图像的直方图。

a=imread('f:

\lena_color.png')

c=rgb2gray(a);

b=c-46;

subplot(3,2,1);imshowt(c);title('原图像')

subplot(3,2,1);imhist(c);title('原图像的直方图')

subplot(3,2,3);imshow(b);title('变暗后的图像')

subplot(3,2,4);imhist(b);title('变暗后的图像直方图')

d=imadjust(c,[0,1],[1,0]);

subplot(3,2,5);imshow(d);title('反转图像');

图3.2图像的直方图

3、对图像b进行直方图均衡化,显示结果图像和对应直方图。

B=imread(‘f:

\lena_color.png’)

c=rgb2gray(b)

j=histeq©

subplot(2,2,1),imshow©

subplot(2,2,2),imshow(j)

subplot(2,2,3),imhist©%显示原始图像直方图

subplot(2,2,4),imhist(j)%显示均衡化后图像的直方图

图3.3图像的直方图均衡化

4、对B进行如图所示的分段线形变换处理,试比较与直方图均衡化处理的异同。

X1=0:

0.01:

0.125;

x2=0.125:

0.01:

0.75;

x3=0.75:

0.01:

1;

y1=2*x1;

y2=0.25+0.6*(x2-0.125);

y3=0.625+1.5*(x3-0.75);

x=[x1,x2,x3] ;

y=[y1,y2,y3] ;

subplot(2,2,4) ;

plot(x,y);

通过在所关心范围内为所有灰度值指定一个较高值,而为其他灰度指定一个较低值,或将所需范围变亮,分段线性变换可提高图像中特定灰度范围的亮度,常用于图像特征值的提取。

这里将原始图像位于[0.125,0.75]间的灰度值调低,放大其余的灰度值,突出显示图像低频域和高频域的部分。

 

实验四图像的平滑处理

1.1实验目的

1、熟悉并掌握常见的图像噪声种类;

2、理解并掌握常用的图像的平滑技术,如邻域平均法和中值滤波的原理、特点、适用对象

1.2实验环境

MATLAB11以上版本、WINXP或WIN7计算机

1.3相关知识

图像平滑的目的是消除图像噪声、恢复原始图像。

实际中摄取的图像一般都含有某种噪声,引起噪声的原因很多,噪声的种类也很多。

总的说来,可以将噪声分为加性噪声和乘性噪声。

加性噪声中又包含高斯噪声、椒盐噪声等典型噪声。

Matlab图像处理工具箱提供了模拟噪声生成的函数imnoise,可以对图像添加一些典型的噪声。

imnoise格式:

J=imnoise(I,type,parameters); 

常见的去除噪声的方法有:

邻域平均法、空间域低通滤波、频率域低通滤波、中值滤波等。

 二维中值滤波的Matlab函数为medfilt2。

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('average');%均值滤波器

3图像滤波函数

imfilter函数,filter2函数,二维卷积conv2滤波都可以进行图像滤波,如

j=filter2(h,I);

j=imfilter(I,h);

j=conv2(I,h);

4中值滤波

medfilt2函数用于图像的中值滤波,如:

i=imread('e:

\w01.tif');

j=medfilt2(i,[MN]);对矩阵i进行二维中值滤波,领域为M*N,缺省值为3*31

1.4实验内容

1、读出lena.jpg这幅图像,给这幅图像分别加入椒盐噪声、高斯噪声和乘性噪声后并与前一张图显示在同一图像窗口中。

2、对受高斯噪声(模拟均值为0方差为0.02的高斯噪声)干扰的lena图像分别利用邻域平均法和中值滤波进行滤波去噪(窗口可变,可先取3*3,依次再取5*5,7*7),并显示滤波结果。

3、对受椒盐噪声(噪声方差为0.02)干扰的lena图像,选择合适的滤波器将噪声滤除。

4、对受乘性噪声(噪声方差为0.02)干扰的lena图像,选择合适的滤波器将噪声滤除。

 

实验五图像边缘检测与分割

1.1实验目的

 1、熟悉并掌握MATLAB图像处理工具箱的使用;

2、理解并掌握常用的图像的锐化技术

3、理解并掌握常用的图像的边缘检测与分割技术。

1.2实验环境

MATLAB11以上版本、WINXP或WIN7计算机

1.3相关知识

1fspecial

fspecial函数用于产生预定义滤波器,如:

h=fspecial('sobel');%sobel水平边缘增强滤波器

h=fspecial('log');%高斯拉普拉斯(LoG)滤波器

H=fspecial('prewitt');%预定义滤波器

M=imfilter(I,H);

imshow(M);

2edge

检测灰度或者二值图像的边缘,返回一个二值图像,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使用拉氏算子检测图像边缘,如:

i=imread('e:

\w01.tif');

j=double(i);

h=[0,1,0;1,-4,0;0,1,0];%拉氏算子

k=conv2(j,h,'same');

4使用双峰法进行二值图像分割

先给出原图的直方图,再定出阈值(门限)T,一般取两个峰值间的谷值。

1.4实验步骤

1、采用两种不同算子对图像进行锐化处理

i=imread('f:

\1.jpg')

I=rgb2gray(s)

H=fspecial('sobel');%应用Sobel算子锐化图像

I1=filter2(H,I);%Sobel算子滤波锐化

H=%应用XX算子锐化图像

I2=%XX算子滤波锐化

subplot(1,3,1);imshow(i);title('原图像');

subplot(1,3,2);imshow(I1);title('Sobel算子锐化图像');

subplot(1,3,3);imshow(I2);title('XX算子锐化图像');

 

2、采用三种不同算子检测图像边缘,显示结果。

I=imread('f:

\XX.jpg');

BW1=edge(I,'prewitt');

BW2=edge(I,'');

BW3=edge(I,'');

subplot(2,2,1);imshow(I);title

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 初中教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1