数字图像实验报告.docx
- 文档编号:15444860
- 上传时间:2023-07-04
- 格式:DOCX
- 页数:36
- 大小:540.54KB
数字图像实验报告.docx
《数字图像实验报告.docx》由会员分享,可在线阅读,更多相关《数字图像实验报告.docx(36页珍藏版)》请在冰点文库上搜索。
数字图像实验报告
数字图像实验报告
江苏科技大学
数字图像处理实验报告
设计题目:
数字图像处理
专业名称:
软件工程
班级:
13419042
学号:
1341904222
姓名:
陆建伟
指导教师:
胡春龙
2016年4月25日
实验一数字图像的采集和Photoshop软件的操作
1.1实验目的
1.1.1书序并掌握matlab、Photoshop等工具的使用。
1.1.2实现图像的读取、显示、代数运算和简单变换。
1.2实验任务及要求
●读取图像文件
1.Imread
Imread函数用于写入图像文件,如:
imread(‘e:
\w01.jpg’)
2.Imwrite
Imwrite函数用于写入图像文件,如:
imwrite(a,’e:
\w01.jpg’)
3.Imfinfo
Imfinfo函数用于读取图像文件的有关信息,如:
imfinfo(‘e:
\w01.jpg’)
●图像的显示
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.jpg’);imshow(i);title(‘原图像’)
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
4.Z=Immultiply(x,y)表示x*y
5.Imdivide
6.Z=Imdivide(x,y)表示x/y
1.3实验内容、步骤、结果
1.3.1实验内容
1、读取RGB图像,转换成灰度图像和二值图像,在同一个窗口分成三个子窗口显示RGB图像、灰度图像和二值图像;
1.打开Matlab,在命令框内输入相应地代码
a=imread('D:
\jj.jpg')
i=rbg2gray(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.实验结果如图1.1
图1.1
2、图像执行加、减、乘、除操作,窗口内分成五个子窗口显示;
1.实验代码
a=imread('D:
\jj.jpg');
A=imresize(a,[800,800]);
b=imread('D:
\tt.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('原图像')
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('除法图像')
2.实验结果如图1.2
图1.2
3、对图像进行灰度变化,实现图像变亮,变暗和负片效果,在同一个窗口内分成四个子窗口来分别显示;
1.实验代码
a=imread('D:
\jj.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('负片效果')
2.实验结果如图1.3
图1.3
1.4结果分析
通过本次实验,我知道了图像采集的几种方法。
对图像的加减乘除处理,ps的使用。
实验二图像的傅里叶变换
2.1实验目的
2.1.1熟悉及掌握图像的傅里叶变换原理及性质,实现图像的傅里叶变换。
2.2实验任务及要求
●图像的变换
1.fft2
fft2函数用于数字图像的二维傅里叶变换,如:
i=imread(‘e:
\w01.jpg’);
j=fft2(i);
由于matlab无法显示附属图像,因此变换后的结果还需要进行求模运算,即调用ads函数
之后常常还进行对数变换,即调用log函数,以减缓傅里叶谱的快速衰减,更好的显示高频信息
2.ifft2
ifft2函数用于数字图像的二维傅里叶反变换,如:
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);
2.3实验内容、步骤、结果
1、对图像平移,显示原始图像与处理后图像,对其进行傅里叶变换,显示结果,分析其对应关系。
1.实验代码
s=imread('D:
\tt.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]);
b=rgb2gray(b);
b=double(b);
c=fft2(b);
e=fftshift(c);
l=log(abs(e));
f=fftshift(c);
WW=real(f);
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
图2.1
2.对图像进行旋转,显示原始图像与处理后图像,分别对其进行傅里叶变换,显示变换后结果,分析原图的傅里叶谱与旋转后傅里叶频谱的对应关系。
1.代码如下
s=imread('D:
\tt.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.2
图2.2
2.4结果分析
傅里叶变换进行图像处理有几个特点:
直流成分F(0,0)等于图像的平均值;能量频谱|F(u,v)|^2完全对称于原点;其中F=PfQ,f表示原图,P和Q都是对称的实正交矩阵,这个公式表示傅里叶变换就是个正交矩阵的正交变换;图像f平移(a,b)后,F只有exp[-2pij(au/M+bv/M)]的相位变化,能量频谱不发生变化;图像f自乘平均等于能量频谱的总和,f的分散等于能量频谱中除直流成分后的总和;图像f(x,y)和g(x,y)的卷积h(x,y)=f(x,y)*g(x,y)的傅里叶变换H(u,v)等于f(x,y)和g(x,y)各自的傅里叶变换的乘积。
实验三图像的灰度变换和直方图变换
3.1实验目的
1、熟悉及掌握图像的采样原理,实现图像的采样过程,进行图像的灰度转换;
2、理解直方图的概念及应用,实现图像直方图的显示,及通过直方图的均衡化和直方图规定划方法对图像进行修正。
3.2实验任务及要求
1、灰度转换
灰度变换是图像增强技术中最简单的一类。
常用的三类基本函数:
线性函数、对数函数、幂次函数。
(1)图像反转:
Image=imread('Fig3.04(a).jpg'); imshow(Image);
Image=255-double(Image); %反转 figure
(2),imshow(uint8(Image));
(2)对数变换:
Image=imread('Fig3.05(a).jpg'); imshow(Image);
Image=log(1+double(Image)); figure
(2),imshow(Image,[]);
(3)幂次变换
Image=imread('Fig3.09(a).jpg'); imshow(Image);
Image2=double(Image).^3.0; %γ=3 figure
(2),imshow(Image2,[]);
Image2=double(Image).^4.0; figure(3),imshow(Image2,[]);
Image2=double(Image).^5.0; figure(4),imshow(Image2,[]);
2.灰度直方图的显示 imhist
imhist是MATLAB提供的显示图像灰度直方图的函数。
(1) 显示图像cameraman.tif 的直方图。
x=imread('cameraman.tif');
figure subplot(2,1,1)
imshow(x)
subplot(2,1,2)
imhist(x)
(2)还可以将直方图显示成其他形式,比如柱形图(续一)或者折线图
h=imhist(x);
h1=h(1:
10:
256);
horz=1:
10:
256;
bar(horz,h1)
axis([0 255 0 1500])
set(gca, 'xtick',0:
50:
255)
set(gca, 'ytick',0:
200:
1500)
h=imhist(x);
plot(h)
3.3实验内容、步骤、结果
1.对一幅图进行2倍、4倍、8倍和16倍减采样,显示结果;
1.实验代码
a=imread('D:
\jj.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
2.实验结果如图3.1
图3.1
2.显示一幅灰度图像a,改变图像的亮度使其整体变暗得到图像b,显示两幅图像的直方图;
1.实验代码
a=imread('D:
\jj.jpg');
c=rgb2gray(a);
b=c-46;
subplot(3,2,1);imhist(c);title('直方图')
subplot(3,2,2);imhist(b);title('变暗后的直方图')
subplot(3,2,3);imshow(c);title('原图像')
subplot(3,2,4);imshow(b);title('变暗后的图像')
d=imadjust(c,[0,1],[1,0]);
subplot(3,2,5);imshow(d);title('灰度调整后的图像')
2.实验结果如图3.2
图3.2
3.对图像b进行直方图均衡化,显示结果图像和对应的直方图;
1.实验代码
b=imread('D:
\jj.jpg');
c=rgb2gray(b);
j=histeq(c);
subplot(2,2,1),imshow(c);title('原图像')
subplot(2,2,2),imshow(j);title('均衡化后的图像')
subplot(2,2,3),imhist(c);title('原直方图')%显示原始图像直方图
subplot(2,2,4),imhist(j);title('均衡化后的直方图')%显示均衡化后图像直方图
2.实验结果如图3.3
图3.3
4.对B进行分段线性变换处理,试比较与直方图均衡化处理的异同。
1.实验代码
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];
plot(x,y);
2.实验结果如图3.4
图3.4
3.4结果分析
通过本次实验,我明白了灰度变换和直方图变换的特点及优缺点。
实验四图像的平滑处理
4.1实验目的
1、熟悉并掌握常见的图像噪声种类;
2、理解并掌握常用的图像的平滑技术,如领域平均法和中值滤波的原理、特点、适用对象。
4.2实验任务及要求
图像平滑的目的是消除图像噪声、恢复原始图像。
实际中摄取的图像一般都含有某种噪声,引起噪声的原因很多,噪声的种类也很多。
总的来说,可以将噪声分为加性噪声和乘性噪声。
加性噪声中包涵高斯噪声、椒盐噪声等典型噪声。
Imnosie格式:
j=imnoise(I,type,parameters);
常见的去除噪声的方法有:
领域平均法、空间域低通滤波、频率与低通滤波、中值滤波等,二维中值滤波的matlab函数为medfilt2.
1.Imnoise
Imnoise函数用于对图像生成模拟噪声,如:
I=imread(‘e:
/w01.tif’);
J=imnoise(I,’gaussian’,0,0.02);
J=imnoise(I,’salt&pepper’,0.04);
2.Fspecial
Fspecial函数用于昌盛预定义滤波器,如:
H=fspecial(‘sobel’);
H=fspecial(‘gaussian);
H=fspecial(‘laplacian);
H=fspecial(‘log);
H=fspecial(‘average);
3.基于卷积的图像滤波函数
Imfilter函数,filter2函数,二维卷积conv2滤波,都可以用于图像滤波,用法类似,如:
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.3实验内容、步骤、结果
1.读出图像,给读出的图像分别加入高斯噪声、椒盐噪声和乘性噪声,并与原图像显示在同一图像窗口中;
1.实验代码
a=imread('D:
\jj.jpg');
i=rgb2gray(a);
I1=imnoise(i,'gaussian',0,0.02);
I2=imnoise(i,'salt&pepper',0.02);
I3=imnoise(i,'speckle',0.02);
subplot(2,2,1),imshow(i);title('原图像');
subplot(2,2,2),imshow(I1);title('受高斯污染的图像');
subplot(2,2,3),imshow(I2);title('受椒盐噪声污染的图像');
subplot(2,2,4),imshow(I3);title('受乘性噪声污染的图像');
2.实验结果如图4.1
图4.1
2.对受高斯噪声(模拟值为0方差为0.02的高斯噪声)干扰的图像分别利用领域平均法和中值滤波法进行滤波去噪(窗口可变,可先取3*3,依次再取5*5,7*7),并显示滤波结果;
1.实验代码
a=imread('D:
\jj.jpg');
i=rgb2gray(a);
I=imnoise(i,'gaussian',0,0.02);
H1=ones(3,3)/9;
H2=ones(5,5)/25;
H3=ones(7,7)/49;
J=imfilter(i,H1);
J1=imfilter(I,H1);
J2=imfilter(I,H2);
J3=imfilter(I,H3);
Z=medfilt2(i,[3,3]);
Z1=medfilt2(I,[3,3]);
Z2=medfilt2(I,[5,5]);
Z3=medfilt2(I,[7,7]);
subplot(4,2,1),imshow(J);title('原图像领域平均滤波后');
subplot(4,2,2),imshow(J1);title('高斯3*3领域平均滤波后');
subplot(4,2,3),imshow(J2);title('高斯5*5领域平均滤波后');
subplot(4,2,4),imshow(J3);title('高斯7*7领域平均滤波后');
subplot(4,2,5),imshow(Z);title('原图像中值滤波后');
subplot(4,2,6),imshow(Z1);title('高斯3*3中值滤波后');
subplot(4,2,7),imshow(Z2);title('高斯5*5中值滤波后');
subplot(4,2,8),imshow(Z3);title('高斯7*7中值滤波后');
2.实验结果如图4.2
图4.2
3.对受椒盐噪声的图像(噪声方差为0.02)干扰的图像,选择合适的滤波器将噪声去噪;
1.实验代码
a=imread('D:
\jj.jpg');
i=rgb2gray(a);
I=imnoise(i,'salt&pepper',0.02);
Z=medfilt2(i,[3,3]);
Z1=medfilt2(I,[3,3]);
Z2=medfilt2(I,[5,5]);
Z3=medfilt2(I,[7,7]);
subplot(2,2,1),imshow(Z);title('原图像中值滤波后');
subplot(2,2,2),imshow(Z1);title('椒盐3*3中值滤波后');
subplot(2,2,3),imshow(Z2);title('椒盐5*5中值滤波后');
subplot(2,2,4),imshow(Z3);title('椒盐7*7中值滤波后');
2.实验结果如图4.3
图4.3
4.对受乘性噪声的图像(噪声方差为0.02)干扰的图像,选择合适的滤波器将噪声去噪。
1.实验代码
a=imread('D:
\jj.jpg');
i=rgb2gray(a);
I=imnoise(i,'speckle',0.02);
H1=ones(3,3)/9;
H2=ones(5,5)/25;
H3=ones(7,7)/49;
J=imfilter(i,H1);
J1=imfilter(I,H1);
J2=imfilter(I,H2);
J3=imfilter(I,H3);
subplot(2,2,1),imshow(J);title('原图像领域平均滤波后');
subplot(2,2,2),imshow(J1);title('乘性3*3领域平均滤波后');
subplot(2,2,3),imshow(J2);title('乘性5*5领域平均滤波后');
subplot(2,2,4),imshow(J3);title('乘性7*7领域平均滤波后');
2.实验结果如图4.4
图4.4
4.4结果分析
通过本次实验,我知道了平滑处理的几种方法。
图像平滑是指用于突出图像的宽大区域、低频成分、主干部分或抑制图像噪声和干扰高频成分的图像处理方法,目的是使图像亮度平缓渐变,减小突变梯度,改善图像质量。
图像平滑的方法包括:
插值方法,线性平滑方法,卷积法等等。
这样的处理方法根据图像噪声的不同进行平滑,比如椒盐噪声,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字图像 实验 报告