计算机视觉形态学边缘检测.docx
- 文档编号:26392471
- 上传时间:2023-06-18
- 格式:DOCX
- 页数:11
- 大小:457.17KB
计算机视觉形态学边缘检测.docx
《计算机视觉形态学边缘检测.docx》由会员分享,可在线阅读,更多相关《计算机视觉形态学边缘检测.docx(11页珍藏版)》请在冰豆网上搜索。
计算机视觉形态学边缘检测
实验二形态算子
一、实验目的与要求
目的:
学习常见的数学形态学运算基本方法,了解腐蚀、膨胀、开运算、闭运算取得的效果,培养处理实际图像的能力。
要求:
上机运行,调试通过。
二、实验设备:
计算机、Matlab软件、VC++或C语言软件
三、实验内容:
利用VC++/C或MatLab工具箱中关于数学形态学运算的函数,对二值图像进行膨胀、腐蚀和开运算、闭运算处理。
四、实验原理:
膨胀:
腐蚀:
开运算:
闭运算:
五、实验报告内容
(1)描述实验的基本步骤,用数据和图片给出各个步骤中取得的实验结果,并进行必要的讨论,必须包括原始图像及其计算/处理后的图像。
(2)结合实验内容,评价腐蚀、膨胀以及开运算、闭运算的效果,并说明它们各自适用条件。
%对二值图像做腐蚀、膨胀以及开运算和闭运算
closeall;
clc;
clear;
I=imread('C:
\DocumentsandSettings\Owner\MyDocuments\MATLAB\road3.jpg');
I2=im2bw(I);%对读入图像做二值化处理
[m,n]=size(I2);
subplot(2,3,1),imshow(I)
title('原始图像');
subplot(2,3,2),imshow(I2)
title('二值图像');
s=[11;10];%腐蚀膨胀算子
%腐蚀运算
fori=1:
m-1
forj=1:
n-1
if(I2(i,j)==1)&&(I2(i+1,j)==1)&&(I2(i,j+1)==1)
I3(i,j)=1;
end
end
end
subplot(2,3,3),imshow(I3)
title('图像腐蚀1次');
%膨胀运算
fori=1:
m-1
forj=1:
n-1
if(I2(i,j)==1)||(I2(i+1,j)==1)||(I2(i,j+1)==1)
I4(i,j)=1;
end
end
end
subplot(2,3,4),imshow(I4)
title('图像膨胀1次');
%开运算
fori=1:
m-2
forj=1:
n-2
if(I3(i,j)==1)||(I3(i+1,j)==1)||(I3(i,j+1)==1)
I5(i,j)=1;
end
end
end
subplot(2,3,5),imshow(I5)
title('开运算');
%闭运算
fori=1:
m-2
forj=1:
n-2
if(I4(i,j)==1)&&(I4(i+1,j)==1)&&(I4(i,j+1)==1)
I6(i,j)=1;
end
end
end
subplot(2,3,6),imshow(I6)
title('闭运算');
由上图易知,原图像经1次腐蚀后,图像中的一些不连续点或线被腐蚀掉;而原图像经1次膨胀后,图像中的一些不连续点或线被连接在一起或膨胀。
原图像经开运算(先腐蚀后膨胀),图像原先那些不完全连续部分,边缘孤点等被去掉,主体部分得以加强,因而图像特征明显,且清晰。
原图像经闭运算(先膨胀后腐蚀),图像原先那些不完全连续部分,大部分被去掉,只保留最基本特征部分,因而图像特征被明显削弱。
实验三边缘检测
一、实验目的与要求
目的:
熟悉采用Roberts算子、Sobel算子、Prewitt算子、Laplacian算子和LOG算子检测数字图像的边缘。
要求:
上机运行,调试通过。
二、实验设备:
计算机、Matlab软件、VC++或C语言软件
三、实验内容
利用VC++/C或MatLab中关于边缘检测的函数,分别采用Roberts算子、Sobel算子、Prewitt算子、Laplacian算子和LOG算子检测数字图像的边缘。
四、实验原理
两个具有不同灰度值的相邻区域之间总存在边缘,边缘是灰度值不连续的结果,这种不连续性通常可以利用求导数的方法方便地检测到。
常用的边缘检测算子有Roberts算子、Sobel算子、Prewitt算子、LOG算子和Laplacian算子。
Roberts算子是一种利用局部差分算子寻找边缘的算子,其模板如图:
Sobel算子的两个卷积计算核如图:
Prewitt算子的两个卷积计算核如图:
LOG算子=高斯滤波+拉普拉斯边缘检测。
Laplacian算子是二阶导数的二维等效式,卷积核如图:
五、实验报告内容
(1)描述实验的基本步骤,给出各个算子取得的实验。
(2)结合实验内容,简述各个算子的效果、特点和适用范围。
ps=('C:
\DocumentsandSettings\Owner\MyDocuments\MATLAB\road3.jpg');%读取图像
subplot(1,3,1)
imshow(ps);
title('原图像');
ps=rgb2gray(ps);
[m,n]=size(ps);%用Sobel微分算子进行边缘检测
pa=edge(ps,'sobel');
subplot(1,3,2);
imshow(pa);
title('sobel边缘检测得到的图像');
ps=('C:
\DocumentsandSettings\Owner\MyDocuments\MATLAB\road3.jpg');%读取图像
subplot(1,3,1)
imshow(ps);
title('原图像');
ps=rgb2gray(ps);
[m,n]=size(ps);%用Roberts微分算子进行边缘检测
pa=edge(ps,'Roberts');
subplot(1,3,2);
imshow(pa);
title('Roberts边缘检测得到的图像');
ps=('C:
\DocumentsandSettings\Owner\MyDocuments\MATLAB\road3.jpg');%读取图像
subplot(1,3,1)
imshow(ps);
title('原图像');
ps=rgb2gray(ps);
[m,n]=size(ps);%用Prewitt微分算子进行边缘检测
pa=edge(ps,'Prewitt');
subplot(1,3,2);
imshow(pa);
title('Prewitt边缘检测得到的图像');
ps=('C:
\DocumentsandSettings\Owner\MyDocuments\MATLAB\road3.jpg');%读取图像
subplot(1,3,1)
imshow(ps);
title('原图像');
ps=rgb2gray(ps);
[m,n]=size(ps);%用Sobel微分算子进行边缘检测
pa=edge(ps,'LOG');
subplot(1,3,2);
imshow(pa);
title('LOG边缘检测得到的图像');
实验四边缘检测
一、实验目的与要求
目的:
加深对Canny边缘检测的原理的理解。
要求:
上机运行,调试通过。
二、实验设备:
计算机、Matlab软件、VC++或C语言软件
三、实验内容
用Matlab语言(或C语言),编写Canny边缘检测器的Matlab(或C语言)函数;利用上述函数,对一副图像进行边缘检测;利用Matlab自带的Canny边缘检测函数对同一副图像进行边缘检测;比较上述两个结果。
四、实验步骤
步1.图像与高斯平滑滤波器卷积:
步2.使用一阶有限差分计算偏导数阵列P与Q:
步3.计算梯度幅值与方向角:
步4.非极大值抑制(NMS):
去掉幅值局部变化非极大的点.
*将梯度角离散为圆周的四个扇区之一,以便用3×3的窗口
作抑制运算
*方向角离散化:
*抑制,得到新幅值图:
步5.阈值化
取高低两个阈值作用于幅值图N[i,j],得到两个边缘图:
高阈值和低阈值边缘图。
连接高阈值边缘图,出现断点时,在低阈值边缘图中的8邻点域搜寻边缘点。
五、实验报告内容
(1)描述实验的基本步骤,给出实验程序代码及必要说明。
ps=imread('C:
\DocumentsandSettings\Owner\MyDocuments\MATLAB\road3.jpg');%读取图像
subplot(1,3,1)
imshow(ps);
title('原图像');
ps=rgb2gray(ps);
[m,n]=size(ps);
pa=edge(ps,'canny');
subplot(1,3,2);
imshow(pa);
title('canny边缘检测得到的图像');
(2)结合实验内容,给出实验结果的分析和总结。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 视觉 形态学 边缘 检测