数字图像处理Word文档格式.docx
- 文档编号:19040784
- 上传时间:2023-01-03
- 格式:DOCX
- 页数:25
- 大小:1.03MB
数字图像处理Word文档格式.docx
《数字图像处理Word文档格式.docx》由会员分享,可在线阅读,更多相关《数字图像处理Word文档格式.docx(25页珍藏版)》请在冰豆网上搜索。
1、了解MATLAB的安装方法。
2、了解基于MATLAB的图像处理;
2、进行程序设计和调试,完成一幅图像的读取。
三、实验步骤
步骤一:
熟悉MATLAB的安装界面和方法。
(1)MATLAB的安装界面
步骤二:
(1)读取和显示图像
>
clearall%清除所有在内存中的变量
I=imread('
sany.jpg'
);
%读取图像sany.jpg(该图像是图像处理工具箱自带的图像)
%存储在一个名为I的数组中
imshow(I)%显示图像
四、实验总结
4.1、实验中遇到的困难
在安装MATLAB的时候,刚开始没有序列号,就不能够下一步安装。
在刚开始调取图片的时候,是默认的路径。
想自己改变路径,读取自己个性化的图片。
4.2、处理方法和技巧
在网上找到了适合的序列号。
完成了下一步的安装。
在选择自己个性化图片的时候,界面正上方的currentdirectory可以改变路径,完成想要的图片的读取。
4.3、经验体会和收获
在查看资料后简单的了解了一些数字图像处理的概念,一些常用的方法,还有对图像进行简单的操作与处理。
实验二绘制直方图
目的:
掌握图像直方图的绘制方法
要求:
进行直方图的均衡化和匹配
1、显示一幅图像及其对应的直方图;
2、直方图均衡化;
3、直方图规定化。
用imhist函数对图像数据进行直方图统计
I=imread('
cameraman.tif'
subplot(1,2,1);
imshow(I);
title('
原始图像'
subplot(1,2,2);
imhist(I);
直方图'
用histeq函数对图像进行均衡化并与原始图像进行比较
clearall
'
cameraman.tif'
J=histeq(I);
subplot(2,2,1);
subplot(2,2,2);
原图像的直方图'
subplot(2,2,3);
imshow(J);
均衡化后的图像'
subplot(2,2,4);
imhist(J);
均衡化后图像的直方图'
步骤三:
%直方图匹配的过程
hgram=[];
fori=1:
20;
hgram(i)=i;
end
J=histeq(I,hgram);
figure
(1);
imshow(I);
显示原图像'
规定化后的图像'
规定化后图像的直方图'
本来是想在网上找一张二值图片,下载了之后用MATLAB可以打开。
但是在显示直方图的时候确出现上述错误,才发觉这张黑白图片不是二值图片。
只好在MATLAB的默认目录里面找图片了。
在这个实验中,能够很具体和直观的了解到数字图像的概念。
在进行直方图均衡化处理的时候更是能够直观的了解到数字图像处理这门课程。
还有一些编程方面的细节,一定要注意变量名的书写。
使我们更加了解到:
直方图均衡化是通过使用累积函数对灰度值进行“调整”以实现对比度的增强。
直方图规定化则是通过一个灰度映像函数,将原灰度直方图改造成所希望的直方图。
实验三傅立叶变换
掌握傅立叶变换的基本原理和方法
使用一个图像用MATLAB进行傅立叶变换
1、显示滤波图像;
2、显示三维曲线。
f=zeros(256,256);
%生成图像矩阵
f(120:
130,110:
140)=1;
%使[120,130]和[117,140]区间显示白色
F=fft2(f);
%进行傅立叶变换
F2=fftshift(abs(F));
%移动高频到图像中间,进行高频中心化
imshow(F2)%显示滤波图像
figure
(2)%打开一个新窗口
x=1:
256;
%定义x轴边界大小
y=1:
mesh(x,y,F2(x,y))%显示三维曲线
在程序编写中,输入的字符的大小写和输入法的改变导致程序的错误。
在程序设计的过程中要注意一些小的细节,尽量仔细一点。
通过MATLAB做傅里叶变换形象并且直观,有助于我们在对图像的操作中学习到傅里叶变换的概念和运用:
可以将信号函数的时域图形转化成频域图形,即将信号函数原本幅值随时间变化的特性曲线转化为幅值随频率变化的特性曲线。
实验四图像的边界增强
掌握图像边界增强的基本方法
梯度锐化法、laplacian增强算子、低通滤波(任选其一)
1、用梯度法锐化图像,使得突出图像的边界。
moon.tif'
subplot(1,3,1);
I=double(I);
%把读取的图像信息转化为更高的精度
[Gx,Gy]=gradient(I);
%计算梯度
G=sqrt(Gx.*Gx+Gy.*Gy);
%水平垂直差分
J1=G;
subplot(1,3,2);
imshow(J1,[]);
梯度增强显示1'
T=20;
%阈值
J2=I;
K=find(G>
=T);
%指定灰度值,做图像分割,将>
=20的显示出来
J2(K)=G(K);
subplot(1,3,3);
imshow(J2,[]);
梯度增强显示2'
初次的运行结果为:
在网络中找的图片,经过运行后得到的效果不明显,看起来很不理想,所以还是从默认的目录下面找图片做成了一幅月亮图。
通过实验锐化的实验更加了解锐化实际上就是让与周边色彩不同的地方对比度更强、色彩更深。
同时在图片的选取和编程的仔细程度上有很大收获。
这断代码重复编写了好多次,出错的地方是些代码的不仔细造成的。
实验五加入图像噪声
掌握加入图像噪声的方法和图像噪声的区别
高斯噪声、椒盐噪声、随机噪声(任选其二)
1、比较原图像与加入高斯噪声、椒盐噪声和随机噪声后的图像。
coins.png'
J1=imnoise(I,'
gaussian'
%为原图像加入高斯噪声
J2=imnoise(I,'
salt&
pepper'
0.02);
%为原图像加入密度为0.02的椒盐噪声
J3=imnoise(I,'
speckle'
%为原图像加入随机噪声
imshow(J1);
为原图像加入高斯噪声后'
imshow(J2);
为原图像加入椒盐噪声后'
imshow(J3);
为原图像加入随机噪声后'
Unknownnoisetype:
”salt&
pepper”突然想起老师在演示的时候也曾经出现过,然后再代码中添加空格进行如下修改就可以了:
J2=imnoise(I,'
比较原图像与加入高斯噪声、椒盐噪声和随机噪声后的图像,了解了噪声对于图片的形式与概念。
都是对图片数据进行一系列的运算所产生,每一种噪声的产生的原理和效果是什么。
并且通过了解噪声的来源,可以是我们对于有噪声的图片的处理提供参考和方法。
实验六图像代数运算
掌握图像运算的基本方法和原理
使用两幅图像进行图像的加法运算或者减法运算
1、图像的加法运算;
2、图像的减法运算。
图像的加法运算一般用于对同一场景的多幅图像求平均效果(平均是指效果而言,并非算术平均),以便有效地降低具有叠加性质的随机噪声。
MATLAB中的imadd函数用于进行两幅图像的加法或给一幅图像加上一个常数。
clearall
rice.png'
J=imread('
subplot(1,3,1),imshow(I);
subplot(1,3,2),imshow(J);
K=imadd(I,J);
subplot(1,3,3),imshow(K);
图像减法也称为差分方法,是一种常用于检测图像变化及运动物体的图像处理方法。
在MATLAB中,imsubtract函数用来将一幅图像从另一幅输入图像中减去或从一幅图像中减去一个常数。
该函数将一幅图像的像素值从另一幅输入图像相应的像素值中减去,再将相应的像素值之差作为输出图像相应的像素值。
例:
根据原始图像生成其背景亮度图像,然后再从原始图像中将背景亮度图像减去
rice=imread('
background=imopen(rice,strel('
disk'
15));
%生成背景亮度图像
rice2=imsubtract(rice,background);
subplot(1,2,1),imshow(rice);
生成背景亮度图像'
subplot(1,2,2),imshow(rice2);
将背景亮度图像减去'
问题还是在图片的选取上,换一个图片就完成了实验。
图像代数运算又称为图像的算术运算,是图像的标准算术操作的实现方法,是两幅输入图像之间进行点对点的加、减、乘、除运算,通过对图像点对点的运算后得到的图片就是图像代数运算的后的图片。
这种以MATLAB形式运算的图片代数运算,使得对其理解更为直观。
实验七图像的区域分割
掌握图像区域分割的方法
使用2种边缘检测算子进行检测(梯度算子、roberts梯度算子、prewitt和sobel算子等)
1、使用Sobel算子、Roberts梯度算子、Prewitt算子三种边缘检测算子进行检测,并对其进行比较。
i=imread('
imshow(i)
title('
)
[b,t]=edge(i,'
sobel'
%使用sobel边缘检测算子进行检测
imshow(b)
t1=['
sobel边缘检测,阈值='
num2str(t)];
title(t1)
[c,t2]=edge(i,'
roberts'
);
%使用robert边缘检测算子进行检测
t2=['
robert边缘检测,阈值='
num2str(t2)];
imshow(c);
title(t2)
[d,t3]=edge(i,'
prewitt'
%使用prewitt边缘检测算子进行检测
t3=['
prewitt边缘检测,阈值='
num2str(t3)];
subplot(2,2,4)
imshow(d)
title(t3)
在设计程序的过程中还是代码的编写中出现问题,有时候不能理解其中的逻辑。
认真和仔细是减少错误的方法,多多思考其实现的过程。
使用Sobel算子、Roberts梯度算子、Prewitt算子三种边缘检测算子进行检测,并对其进行比较。
MATLAB中的图像分析技术可以提取图像的结构信息。
形象而直观的对这几种算子的结果进行了比较,在程序编写的过程中了解并强化其实现的逻辑,加深了对这3种算子的理解。
,
实验八区域增长
掌握区域增长的原理
使用自定义函数进行处理图像
1、建立一个新的M-File文件自定义函数;
2、通过调用自定义函数进行区域增长的图像处理。
新建一个M-File文件
functionYout=regiongrow(I,seed,th_mean)
[M,N]=size(I);
%获取图像的大小
[L,H]=size(seed);
%获取种子大小
Yout=zeros(M,N);
fori=1:
L
Yout(seed(i,1),seed(i,2))=1;
end
sum(i)=I(seed(i,1),seed(i,2));
seed_mean=mean(sum);
%种子的平均值
ok=true;
s_star=1;
%设置起始值
s_end=L;
whileok
ok=false;
fori=s_star:
s_end
x=seed(i,1);
y=seed(i,2);
ifx>
2&
&
(x+1)<
M&
y>
(y+1)<
N
foru=-1:
1
forv=-1:
ifYout(x+u,y+v)==0&
abs(I(x+u,y+v)-seed_mean<
=th_mean)
Yout(x+u,y+v)=1;
ok=true;
seed=[seed;
[x+u,y+v]];
s_star=s_end+1;
[LH]=size(seed);
s_end=L;
eight.tif'
figure
(1);
原图'
I=double(I);
[y1,x1]=getpts;
x1=round(x1);
y1=round(y1);
seed=[x1,y1];
th_mean=40;
Yout=regiongrow(I,seed,th_mean);
figure
(2);
imshow(Yout);
函数的代码的含义难以理解。
在网上寻找答案和同学讨论。
MATLAB中对特定区域的处理是通过二值掩模来实现的,通过选定一个区域后会生成一个与原图大小相同的二值图像,选定的区域为白色。
在进行图像处理时,有时只要对图像中某个特定区域进行处理,并不需要对整个图像进行处理。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字图像 处理