数图实验报告.docx
- 文档编号:10489132
- 上传时间:2023-02-13
- 格式:DOCX
- 页数:32
- 大小:2.13MB
数图实验报告.docx
《数图实验报告.docx》由会员分享,可在线阅读,更多相关《数图实验报告.docx(32页珍藏版)》请在冰豆网上搜索。
数图实验报告
实验一图像的基本操作
一.实验目的
1.了解图像的数据结构,能够显示不同类型的图像;
2.通过实验完成简单的图像操作;
3.通过实验完成图像直方图的显示;
4.熟悉matlab图像处理工具箱及直方图函数的使用;
5.理解和掌握直方图原理和方法;
二.实验设备
1.PC机一台;2.软件matlab。
三.实验步骤
1.启动matlab
双击桌面matlab图标启动matlab环境;
2.在matlab命令窗口中输入相应程序。
书写程序时,首先读取图像,一般调用matlab自带的图像,如:
cameraman图像;再调用相应的直方图函数,设置参数;最后输出处理后的图像;
3.浏览源程序并理解含义;
4.运行,观察显示结果
四.参考程序
I=imread('pout.tif');
imshow(I);
imhist(I);
分析:
该程序是实现图像pout的读取和它的直方图的显示,从图像和直方图不难看出,该图像效果不是很好,一副好的灰度图像,它的直方图灰度级是均匀分布在0~~255这个范围的。
I=imread('pout.tif');
%imshow(I);
%imhist(I);
J=imcomplement(I);
imshow(J);
imhist(J);
分析:
这段程序是实现图像的反相,反相后的图像与原图像,对应坐标的灰度级之和为255。
I=imread('pout.tif');
%imshow(I);
%imhist(I);
%J=imcomplement(I);
%imshow(J);
%imhist(J);
K=imrotate(I,120);
imshow(K);
分析:
该程序实现图像的旋转,在本例中图像旋转120度
I=imread('pout.tif');
imshow(I,[10,205]);
分析:
该程序用于显示pout图像中灰度级为10~~205的像素点。
I=imread('blood1.tif');
Imshow(I);
size(I);
分析:
该段程序用于求图像blood1的尺寸大小,该图像的尺寸是265*272。
I=imread('blood1.tif');
imshow(I);
title('原始图');
%imhist(I);
%title('原始直方图')
K=imcomplement(I);
%imhist(K);
%title('新的直方图');
imshow(K);
title('新的图像');
分析:
该段程序是实现图像的反相,并且求了图像的直方图,都加了标题。
使用了imcomplement、imshow、title、imhist等matlab指令。
I=imread('blood1.tif');
K=double(I)/256+100/256;%灰度级的相加
imshow(K);
figure,imshow(I);
分析:
该段程序实现的功能是对原图像的像素点统一加上一定的灰度级,实现图像灰度级的相加。
I=imread('blood1.tif');
%imshow(I);
%title('原图');
imhist(I);
title('原直方图');
a=max(max(I));
b=min(min(I));
I=double(I);
[m,n]=size(I);
J=double(J);
%K=I(100,120);%取第一百行第一百二十列
fori=1:
m;
forj=1:
n;
J(i,j)=(122/(255-46))*I(i,j)/256+0.2;
end
end
%figure,imshow(J);
%title('新图');
figure,imhist(J);
title('新直方图');
Q=histeq(J);
%figure,imshow(Q);
%title('均衡化的图象');
figure,imhist(Q);
title('均衡化后的直方图');
分析:
该段程序是进行全域线性变换的图像灰度值压缩,利用公式g(x,y)=[(d-c)/(b-a)]f(x,y)+c;当斜率大于1的时候,是实现灰度值的扩展,当斜率小于1的时候是实现灰度值的压缩。
分析:
上图是对压缩后的图像进行均衡化处理,利用了matlab中的histeq指令。
实验二图像的增强
一.实验目的
掌握基本的图像增强方法,观察图像增强的效果,加深对灰度直方图的理解。
二.实验内容
(1)改变图像的对比度,灰度变换,直方图均衡化;
(2)观察平均、中值滤波的效果;
(3)用所学锐化算子对图像进行锐化处理。
(4)编制一个通用的边缘提取函数。
通过输入不同的参数,能够实现Sobel算子、Prewitt算子、Roberts算子边缘检测。
三.实验设备
1.PC机一台;2.软件matlab。
四.实验步骤
1.启动matlab
双击桌面matlab图标启动matlab环境;
2.在matlab命令窗口中输入相应程序。
书写程序时,首先读取图像,一般调用matlab自带的图像,如:
cameraman图像;再调用相应的直方图函数,设置参数;最后输出处理后的图像;
3.浏览源程序并理解含义;
4.运行,观察显示结果
五.实验分析
I=imread('blood1.tif');
K=imnoise(I,'salt&pepper',0.01);
imshow(K);
title('加椒盐噪声');
figure,imshow(I);
title('没有加噪声');
分析:
利用imnoise(I,'salt&pepper',0.01)指令进行加椒盐噪声的处理,通过对比,发现原始图形和加了椒盐噪声的不同。
原始图的直方图和加了椒盐噪声图像的直方图没有多大的区别,从图中我们也可以发现,加入噪声对直方图影响不大。
I=imread('blood1.tif');
K=imnoise(I,'gaussian',0.1,0.2);
imshow(K);
title('加高斯噪声');
figure,imshow(I);
title('没有加噪声');
%imhist(I);
%title('没有加噪声');
%figure,imhist(K);
%title('加高斯噪声');
分析:
利用matlab的K=imnoise(I,'gaussian',0.1,0.2)指令进行加高斯噪声处理,通过图像的直观对比,我们发现,加了高斯噪声的图像明显出现了很多噪点,甚至影响图像的效果,而且从直方图上我们更能发现两者的区别,加了噪声的直方图灰度级分布整个灰度级动态空间(0~255),而且分布均匀,但是原图像灰度级不是分布在整个空间,且不均匀。
I=imread('tire.tif');
imshow(I);
title('原图');
K=imnoise(I,'salt&pepper',0.01);
J=[-1-1-1;
-19-1
-1-1-1];
L=imfilter(I,J);
figure,imshow(L);
title('锐化后的图形');
分析:
图像的锐化主要用于增强图像中的边缘轮廓、细节、以及灰度跳变的部分,形成完整的物体边界,达到将物体从图像中分离出来或将表示同一物体表面的区域检测出来,在本例中,用了imfilter的中值滤波指令,采用的是高通卷积模板中的一种。
I=imread('tire.tif');
imshow(I);
title('原图');
K=imnoise(I,'salt&pepper',0.01);
J=[0-10;
-15-1
0-10];
L=imfilter(I,J);
figure,imshow(L);
title('锐化后的图形');
分析:
本例中是将加了椒盐噪声的图像经过中值滤波,进行锐化处理,采用了另一种模板。
I=imread('rice.tif');
h=[1,0;0,-1];
size(I);
h1=[0,1;-1,0];
J1=filter2(h,I);
J2=filter2(h1,I);
K1=double(J1);
K2=double(J2);
M=abs(K1)+abs(K2);
fori=1:
256
forj=1:
256
ifM(i,j)>=30
M(i,j)=255;%二值化
elseM(i,j)=0;
end
end
end
J=uint8(M);
%imshow(I);
%title('原始图');
imhist(I);
title('原始直方图');
%figure,imshow(J);
%title('Robert变换后的图');
figure,imhist(J);
title('Robert变换后的直方图');
分析:
本段程序实现的是Robert边缘检测,通过观察图像和直方图,我们可以发现边缘检测的效果很明显,比较理想,在程序中,阈值化的选择是关键,在本程序中,选择了30作为阀值,大于它的灰度级就为255,小于它的灰度级就为0.
%边缘检测
%sobel和laplacian算子
I=imread('rice.tif');
%imshow(I);
%title('原始图');
imhist(I);
title('原始直方图');
%K=fspecial('laplacian',0.7);
%K1=filter2(K,I)/100;
%figure,imshow(K1);
%title('laplacian变换后的图');
%figure,imhist(K1);
%title('laplacian变换后直方图');
L=fspecial('sobel');
L1=filter2(L,I)/200;
%figure,imshow(L1);
%title('sobel变换后的图');
figure,imhist(L1);
title('sobel变换后的直方图');
分析:
本段程序利用了fspecial指令实现了laplacian和sobel两种不同模板的边缘检测,其中前两组图是利用了laplacian的边缘检测,后两组图是利用了sobel的边缘检测,通过对比发现laplacian模板的边缘检测效果明显好于sobel的边缘检测的效果。
%sobel和laplacian算子
I=imread('rice.tif');
%imshow(I);
%title('原始图');
imhist(I);
title('原始直方图');
L=fspecial('prewitt');
L1=filter2(L,I)/255;
%figure,imshow(L1);
%title('prewitt变换后的图');
figure,imhist(L1);
title('prewitt变换后的直方图');
分析:
该段程序是实现prewitt模板的边缘检测。
I=imread('rice.tif');
h=[-1,0,1;-1,0,1;-1,0,1];
size(I);
h1=[1,1,1;0,0,0;-1,-1,-1];
J1=filter2(h,I);
J2=filter2(h1,I);
K1=double(J1);
K2=double(J2);
M=abs(K1+K2);
fori=1:
256
forj=1:
256
ifM(i,j)>=30
M(i,j)=255;
elseM(i,j)=0;
end
end
end
J=uint8(M);
imshow(I);
title('原始图');
figure,imshow(J);
title('prewitt变换后的图');
imhist(I);
title('原始直方图');
figure,imhist(J);
title('prewitt变换后的直方图');
I=imread('spine.tif');
h=[-1,0,1;-1,0,1;-1,0,1];
size(I);
h1=[1,1,1;0,0,0;-1,-1,-1];
J1=filter2(h,I);
J2=filter2(h1,I);
K1=double(J1);
K2=double(J2);
M=abs(K1+K2);
fori=1:
367
forj=1:
490
ifM(i,j)>=20
M(i,j)=255;
elseM(i,j)=0;
end
end
end
J=uint8(M);
subplot(2,2,1);imshow(I);
title('原始图');
subplot(2,2,2);imshow(J);
title('prewitt变换后的图');
subplot(2,2,3);imhist(I);
title('原始直方图');
subplot(2,2,4);imhist(J);
title('prewitt变换后的直方图');
分析:
本段程序实现的是prewitt边缘检测,M=abs(K1+K2);是边缘检测的核心。
B=imread('spine.tif');
I=histeq(B);
h=[-1,0,1;-1,0,1;-1,0,1];
size(I);
h1=[1,1,1;0,0,0;-1,-1,-1];
J1=filter2(h,I);
J2=filter2(h1,I);
K1=double(J1);
K2=double(J2);
M=abs(K1+K2);
fori=1:
367
forj=1:
490
ifM(i,j)>=20
M(i,j)=255;
elseM(i,j)=0;
end
end
end
J=uint8(M);
subplot(2,2,1);imshow(I);
title('原始图');
subplot(2,2,2);imshow(J);
title('prewitt变换后的图');
subplot(2,2,3);imhist(I);
title('原始直方图');
subplot(2,2,4);imhist(J);
title('prewitt变换后的直方图');
实验三形态学基本操作
一.实验目的
掌握图像形态学的基本操作,观察图像形态学操作的效果,加深对形态学的基本操作的理解,掌握腐蚀、膨胀、开操作、闭操作的基本操作。
二.实验内容
(1)对二值图像进行腐蚀、膨胀操作,对比两者的区别。
(2)对二值图像进行开操作、闭操作的基本操作,对比两者的区别。
三.实验设备
1.PC机一台;2.软件matlab。
四.实验步骤
1.启动matlab
双击桌面matlab图标启动matlab环境;
2.在matlab命令窗口中输入相应程序。
书写程序时,首先读取图像,一般调用matlab自带的图像,如:
cameraman图像;
3.浏览源程序并理解含义;
4.运行,观察显示结果
五.实验程序
I=imread('text.tif');
SE1=[0,1,0;1,1,1;0,1,0];
K=imerode(I,SE1);
subplot(2,2,1);
imshow(I);
title('原始图形');
subplot(2,2,2);
imshow(K);
title('腐蚀后的图形');
subplot(2,2,3);
imhist(I);
title('原始图的直方图');
subplot(2,2,4);
imhist(K);
title('腐蚀后的直方图');
I=imread('text.tif');
SE1=[0,1,0;1,1,1;0,1,0];
K=imdilate(I,SE1);
subplot(2,2,1);
imshow(I);
title('原始图形');
subplot(2,2,2);
imshow(K);
title('膨胀后的图形');
subplot(2,2,3);
imhist(I);
title('原始图的直方图');
subplot(2,2,4);
imhist(K);
title('膨胀后的直方图');
Q=imread('circlesm.tif');
I=im2bw(Q);
SE1=strel('disk',10);
L=imerode(I,SE1);%腐蚀
K=imdilate(L,SE1);%膨胀
subplot(2,2,1);
imshow(I);
title('原始图形');
subplot(2,2,2);
imshow(K);
title('开操作的图形');
分析:
当结构元素的尺寸大于目标元素的最小尺寸时,进行开操作之后就会分离目标元素中间隙小的图形。
开操作的目的是,消除小物体,在纤细之处分离物体。
Q=imread('circlesm.tif');
I=im2bw(Q);
SE1=strel('disk',5);
L=imdilate(I,SE1);%膨胀
K=imerode(L,SE1);%腐蚀
subplot(2,2,1);
imshow(I);
title('原始图形');
subplot(2,2,2);
imshow(K);
title('闭操作的图形');
分析:
闭操作的目的是,用来填充物体内细小空洞、连接邻近物体、平滑其边界的同时并不明显改变其面积
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)