图像处理实验报告.docx
- 文档编号:25644629
- 上传时间:2023-06-11
- 格式:DOCX
- 页数:27
- 大小:1.03MB
图像处理实验报告.docx
《图像处理实验报告.docx》由会员分享,可在线阅读,更多相关《图像处理实验报告.docx(27页珍藏版)》请在冰豆网上搜索。
图像处理实验报告
重庆交通大学
学生实验报告
实验课程名称数字图像处理
开课实验室数学实验室
学院理学院年级信息与计算科学专业2班
学生姓名李伟凯学号************
开课时间2014至2015学年第1学期
实验模型建立
优
良
中
差
实验分析求解
优
良
中
差
结果分析完善
优
良
中
差
文档清晰
优
良
中
差
综合成绩
教师姓名
实验
(一)图像处理基础
Ø实验目的
学习Matlab软件的图像处理工具箱,掌握常用的一些图像处理命令;通过编程实现几种简单的图像增强算法,加强对图像增强的理解。
Ø实验内容
题目A.打开Matlab软件帮助,学习了解Matlab中图像处理工具箱的基本功能;
题目B.掌握以下常见图像处理函数的使用:
imread()imageinfo()imwrite()imopen()imclose()imshow()impixel()imresize()imadjust()imnoise()imrotate()im2bw()rgb2gray()
题目C.编程实现对图像的线性灰度拉伸y=ax+b,函数形式为:
imstrech(I,a,b);
题目D.编程实现对图像进行直方图均衡化处理,并将实验结果与Matab中imhist命令结果比较。
三、实验结果
1).基本图像处理函数的使用:
I=imread('rice.png');
se=strel('disk',1);
I_opened=imopen(I,se);
%对边缘进行平滑
subplot(1,2,1),imshow(I),title('原始图像')
subplot(1,2,2),imshow(I_opened),title('平滑图像')
I=imread('rice.png');
se=strel('disk',1);
I_opened=imopen(I,se);
imview(I_opened,[])
Imageinfo(‘rice.png’)
二、实现灰度图像的拉伸(代码)
I=imread('rice.png');
I1=2*I+5;
%对其进行线性拉伸2*I+5;
subplot(1,2,1),imshow(I),title('原始图像')
subplot(1,2,2),imshow(I1),title('f=2x+5')
三、图像进行直方图均衡化处理(代码)
4、编程实现对图像进行直方图均衡化处理,并将实验结果与Matab中imhist命令结果比较。
clearall;
I=imread('rice.png');
figure;
subplot(221);imshow(I);
subplot(222);imhist(I);
I1=histeq(I);%直方图均衡化处理
subplot(223);imshow(I1);
subplot(224);imhist(I1);
四、实验体会
通过这次实验,让我认识到了到图像处理在我们生活中的应用。
以及相应的直方图均衡化的方式和方法,收获颇丰
实验二
实验目的
掌握数字图像增强的基本原理和方法,通过Matlab编程实现图像的各种增强技术;掌握Matlab软件图像处理工具箱中相关图像增强函数及用法。
实验内容
1、利用灰度线性变换和非线性变换进行图像增强处理。
2、编程实现图像的平滑增强,分别采用3×3,6×6,8×8的窗口实现,比较窗口大小对图像平滑效果的影响。
下面给出了对应3×3平滑模板:
3、编程实现图像的锐化增强,分别采用Robert梯度算子,prewiit梯度算子,Laplace算子实现,比较实现结果,说明每种算子的锐化特点;
实验要求
采用Matlab自带图像或者自己找些图像,验证自己编写的图像增强图像函数的正确性,并与Matlab工具箱中对应函数的处理结果比较,显示处理后结果,并将代码和显示结果整理在实验报告中。
实验结果
用滤波器出去图像噪声:
I1=imread('C:
\123.png');
I=rgb2gray(I1);
subplot(2,2,1),imshow(I),title('原始图像')
h=ones(3,3);
h=h/9;
k=conv2(I,h);
subplot(2,2,2),imshow(k,[]),title('3*3平滑增强')
h1=ones(6,6);
h1=h1/36;
k1=conv2(I,h1);
subplot(2,2,3),imshow(k1,[]),title('6*6平滑增强')
h2=ones(8,8);
h2=h2/64;
k2=conv2(I,h2);
subplot(2,2,4),imshow(k2,[]),title('8*8平滑增强')
得到:
滤波器程序为
I=imread('C:
\new123.png');
I=rgb2gray(I);
figure
(1),imshow(I),title('输出原始图像');
[x,y]=size(I);
a=1;
c=1;
%算术均值滤波
fori=1+a:
x-a
forj=1+c:
y-c
J1(i,j)=sum(sum(I(i-a:
i+a,j-c:
j+c),1),2)/((2*a+1)*(2*c+1));
end
end
figure
(2),imshow(J1),title('算术均值滤波后的图像')
%几何均值滤波
I1=double(I);
fori=1+a:
x-a
forj=1+c:
y-c
J2(i,j)=prod(prod(I1(i-a:
i+a,j-c:
j+c),1),2)^(1/((2*a+1)*(2*c+1)));
end
end
figure(3),imshow(J2),title('几何均值滤波后的图像')
四、实验体会
通过这次实验,让我认识到了到图像处理在我们生活中的应用。
以及相应的图像滤波的集中方式,以及降低噪声均值滤波和中值滤波的差异以及方式和方法,收获颇丰
实验(三)
一、实验目的
掌握Matlab中二值图像的基本逻辑运算符号;掌握膨胀和腐蚀的基本原理和作用,可以根据实际需要,熟练使用不用结构元素进行膨胀和腐蚀操作;掌握开运算和闭运算的基本原理作用,能够熟练使用开和闭运算对二值图像进行处理。
二、实验要求
找Matlab自带图像或者自己找些图像,说明1中各个函数的调用格式和功能;按2中要求进行实验,显示处理后结果,并进行必要的文字说明;按3要求编写代码,并给出实验图像效果和结论。
三、实验内容
题目A.学习Matlab的图像处理工具箱中下列函数:
rgb2gray(),im2bw(),graythresh(),strel(),imdilate(),imerode(),imopen(),imclose();
clc
clear
figure
%rgb2gray()、将彩色图像转化为灰度图
A='c:
/cavin.jpg';
I=imread(A);
II=rgb2gray(I);
imshow(II)
%im2bw()、将图像转成二值图像
I=imread(A);
II=im2bw(I);%灰度图和彩图均可
imshow(II)
%graythresh()通过otsu方法得到图像二值化时的阀值
I=imread(A);
I=rgb2gray(I);
J=edge(I,'canny',graythresh(I));
subplot(1,2,1),imshow(I),title('原图')
subplot(1,2,2),imshow(J),title('边界图')
%strel()创建由指定形状shape对应的结构元素,其中shape的种类有'arbitrary'、'pair'、'diamond'、'periodicline'、'disk'、'rectangle'、'line'、'square'、'octagon’
s1=strel('square',6)%创建6*6的正方形
s2=strel('line',10,45)%创建直线长度10,角度45
s3=strel('disk',15)%创建圆盘半径15
s4=strel('ball',15,5)%创建椭圆体,半径15,高度5
%imdilate()、实现图像膨胀
BW=zeros(9,10);
BW(4:
6,4:
7)=1;
SE=strel('square',3);
BW2=imdilate(BW,SE);
figure
(1),imshow(BW,'notruesize')
figure
(2),imshow(BW2,'notruesize')
%imerode()、实现函数腐蚀
BW1=imread(A);
SE=sterl('arbitrary',eye(5));
BW2=imerode(BW1,SE);
imshow(BW1)
figure,imshow(BW2)
%imopen()、打开文件
se=strel('disk',5);
I_opened=imopen(A,se);
figure,imshow(I_opened,[])
%imclose()、关闭文件
W=imclose(A,se);
figure,imshow(closeBW)
题目B.运行下面一段代码,体会形态学图像处理的几个基本操作及其作用
(1)A='c:
/cavin.jpg';
I=imread(A);
I=rgb2gray(I)
subplot(1,2,1),imshow(I),title('原始图片')
h=[010;111;010];
II=imdilate(I,h);
subplot(1,2,2),imshow(II),title('膨胀后图片')
尝试改变上面代码中结构元素的大小和形状,运行查看结果
(2)A='c:
/cavin.jpg';
I=imread(A);
I=rgb2gray(I)
subplot(1,2,1),imshow(I),title('原始图片')
se=strel('disk',10);
II=imerode(I,se);
subplot(1,2,2),imshow(II),title('腐蚀后图片')
将上面的结构元素大小分别改为5和20,运行代码,并与上面的结果比较并说明差异。
将代码
(1)改为
(1)*
A='c:
/cavin.jpg';
I=imread(A);
I=rgb2gray(I)
subplot(1,2,1),imshow(I),title('原始图片')
h=zeros(9,10);
h(4:
6,4:
7)=1;
II=imdilate(I,h);
II=imdilate(I,h);
subplot(1,2,2),imshow(II),title('膨胀后图片')
将代码
(1)改为
(1)**
A='c:
/cavin.jpg';
I=imread(A);
I=rgb2gray(I)
subplot(1,2,1),imshow(I),title('原始图片')
h=[0111110;0100010;0101010;0100010;0111110];
II=imdilate(I,h);
subplot(1,2,2),imshow(II),title('膨胀后图片')
运行
(1)**得到膨胀图
运行代码
(2)得到腐蚀图像
将
(2)中结构元素大小分别改为5和20,运行代码得到腐蚀图像
结构元素的大小表征了腐蚀程度的大小,结构元素越大,对图像的腐蚀程度越大,但腐蚀区域的尖角不明显,趋近于圆形,结构元素越小表征腐蚀程度越小,但腐蚀区域的尖角明显,呈现为多边形。
题目C.采用形态学方法去除下图中圆形目标中心的黑圈;利用下面代码实现去除圆形目标
中心的黑圈
代码为:
BW=im2bw(imread('c:
\test1.jpg'));
BW1=imfill(BW,'holes');
figure,imshow(BW1)
结果为
题目D.采用形态学方法对下图指纹图像进行处理,使得图像中的纹理更加清晰,同时去除噪声。
利用下面的代码对指纹图像进行处理
I=imread('C:
\test2.png');
J=imnoise(I,'salt&pepper',0.02);
se=strel('disk',1);
II=imerode(J,se);
imshow(II)
得到图像为
四、实验体会
通过这次实验,让我认识到了到图像处理在我们生活中的应用。
以及相应的图像增强的和图像边缘提取的方式和方法,收获颇丰
实验(四)
实验目的
掌握图像边缘检测的基本内容和常用方法,通过Matlab编程实现给定图像的任务,体会图像边缘检测在工程中的应用。
实验要求
实验中需要的图像自己提供,每个小实验需要给出实验结果和相应的文字说明;将2-3问中自己编写的边缘检测算法和Matlab中自带的edge()函数比较,寻找它们之间的差异,并就如何优化自己的算法给出建议。
实验内容
一:
采用以下四个模板检测图像中的直线,用实验说明各个模板的特点和性能;
-1
-1
-1
2
2
2
-1
-1
-1
-1
2
-1
-1
2
-1
-1
2
-1
-1
-1
2
-1
2
-1
2
-1
-1
2
-1
-1
-1
2
-1
-1
-1
2
线检测程序
clc
clear
I=imread('C:
\123.png');
I=rgb2gray(I);
I=im2bw(I);
figure
(1),
imshow(I)
title('原始')
fori=1:
4
ifi==1
w=[-1,-1,-1;2,2,2;-1,-1,-1];
tit='水平';
elseifi==2
w=[-1,-1,2;-1,2,-1;2,-1,-1];
tit='+45度';
elseifi==3
w=[-1,2,-1;-1,2,-1;-1,2,-1];
tit='垂直';
else
w=[2,-1,-1;-1,2,-1;,-1,-1,2];
tit='-45度';
end
end
end
J=imfilter(I,w);
T=max(J(:
));
J=J>=T;
figure(i+1)
imshow(J)
title({[num2str(tit),'二值'];'处理后的图像'})
end
运行结果为:
二:
比较Roberts算子、Prewitt算子和Sobel算子的异同,编程实现基于这三种梯度算子的边缘检测算法(阈值自定),给出实验结果,比较各种梯度的优劣;
Robert、Prewitt、Sobel三种梯度算子的边缘检测程序
sourcePic=imread('C:
\123.png');
grayPic=rgb2gray(sourcePic);
I=grayPic;
newGrayPic=grayPic;
[m,n]=size(grayPic);
robertsNum=0;
threshold=15;
fori=1:
m-1
forj=1:
n-1robertsNum=abs(grayPic(i,j)-grayPic(i+1,j+1))+abs(grayPic(i+1,j)-grayPic(i,j+1));
if(robertsNum>threshold)
newGrayPic(i,j)=255;
else
newGrayPic(i,j)=0;
end
end
end
figure,imshow(newGrayPic),title('robert算子图像');
BW1=edge(I,'prewitt');
figure,imshow(BW1),title('prewitt算子图像');
f=im2double(grayPic);
[VSFATThreshold]=edge(f,'sobel','vertical');
figure,imshow(f),title('原始图像');
figure,imshow(VSFAT),title('垂直图像边缘检测');
SFST=edge(f,'sobel',Threshold);
figure,imshow(SFST),title('水平图像边缘检测');
ss=[-2-10;-101;012];
SFST45=imfilter(f,ss,'replicate');
SFST45=SFST45>=Threshold;
figure,imshow(SFST45),title('45度图像边缘检测');
运行结果如下:
由于Roberts算子是利用图像的两个对角线的相邻像素之差进行梯度幅值的检测,所以求得的是在差分点处梯度幅度值的近似值,并检测水平和垂直方向边缘的性能好于斜线方向的边缘,检测精度比较高,但容易失去一部分边缘,同时由于经过图像平滑计算,因此不能抑制噪声,该算子对于具有陡峭的低噪声图像相应最好。
Prewitt算子和Sobel算子都是对图像进行差分和滤波运算,仅在平滑部分的权值选择上有些差异,因此两者均对噪声具有一定的抑制能力,但这种抗噪声能力是通过像素平均来实现的,所以图像产生一定的模糊,而且还会检测出一些伪边缘,所以检测精度比较低,该类算子比较适于图像边缘灰度值比较尖锐,且图像噪声比较小的情况。
三:
别用4邻域和8邻域Laplacian算子实现图像的边缘检测,给出实验结果,并与上面三种一阶梯度算子的效果比较,说明优劣;
4邻域Laplacian算子边缘检测的程序
clc
clear
I=imread('C:
\123.png');
I=rgb2gray(I);
[m,n]=size(I);
figure
(1);
imshow(I);
title('原始图');
p=m;
q=n;
c=ones(4,4);
c=-c;
c(2:
3,2:
3)=3;
I=double(I);
forj=1:
p-3
fori=1:
q-3
b1=I(j:
j+3,i:
i+3);
buffer(j,i)=sum(sum(c.*b1));
J(j,i)=uint8(buffer(j,i));
ifJ(j,i)<0
J(j,i)=-J(j,i);
end
ifJ(j,i)>255
J(j,i)=255;
end
end
end
fori=1:
q
J(1,i)=I(1,i);
J(p,i)=I(p,i);
end
forj=1:
p
J(j,1)=I(j,1);
J(j,q)=I(j,q);
end
figure
(2);
imshow(J);
title('laplacian算子边缘检测');
运行结果为
将上面程序中的的四阶邻域算子循环部分改为
c=ones(8,8);
c=-c;
c(4:
5,4:
5)=15;
I=double(I);
forj=1:
p-7
fori=1:
q-7
b=I(j:
j+7,i:
i+7);
w=c.*b;
buffer(j,i)=sum(sum(w));
J(j,i)=uint8(buffer(j,i));
ifJ(j,i)<0
J(j,i)=-J(j,i);
end
ifJ(j,i)>255
J(j,i)=255;
end
end
end
运行得到结果为laplacian算子边缘检测图像
Laplacian算子都是对图像进行滤波运算,在梯度算子部分的权值和阶数的选择上有些差异,对噪声具有一定的抑制能力,但会检测出一些伪边缘,检测精度比较高。
四、实验体会
通过这次实验,让我认识到了到图像处理在我们生活中的应用。
以及相应的图像增强的和图像边缘提取的方式和方法,还有相应的比如说laplacian算子和prewitt或者梯度算子的区别,收获颇丰
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 图像 处理 实验 报告