




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上图像边缘检测算法研究一、边缘检测:边缘是指图像局部亮度变化最显著的部分,边缘主要存在于目标与目标、目标与背景、区域与区域(包括不同色彩)之间,是图像分割、纹理特征提取和形状特征提取等图像分析的重要基础。边缘的检测正是利用物体和背景在某种图像特性上的差异来实现的。这些差异包括灰度、颜色或纹理特征。边缘检测实际上就是检测图像特性发生变化的位置。 二、图像的边缘大致可分为两种:阶跃状和屋顶状;阶跃状的边缘处于图像中两个不同灰度的相邻区域之间,屋顶状的边缘上升和下降都比较缓慢。 阶跃状边缘的位置在一阶导数的峰值点,在二阶导数的过零点;屋顶状边缘(有一定的宽度范围)的位置在一阶
2、导数的两峰值之间,在二阶导数的两个过零点之间。 三、基于一阶导数法的边缘检测 3.1 梯度算子 求梯度的运算可近似为微分模板与图像的卷积。常用一阶边缘检测算子有简单梯度算子、Roberts 算子、priwitt 算子、sobel 算子。梯度算子包含着微分运算,对噪声比较敏感。以上各算子都只包含x,y 两个方向的模板,每种模板只对相应的方向敏感,而对其他方向的变化响应不大。 Roberts 算子 Roberts 算子是一种利用局部差分算子寻找边缘的算子 ,它由下式给出: + +- = 它是由两个2 ×2 模板作用的结果(标注的是当前像素的位置): (1)用卷积函数conv2 处理的Ma
3、tlab 程序代码: a=imread('lena','tif'); b=0 1;-1 0/126;c=1 0;0 -1/126; %参数126 是实验时为增强图像对比度试验出来的 d=conv2(a,b,'same');d=abs(d); %处理水平方向算子的结果,参数'same'使得得到的图像与原图大小相等。 e=conv2(a,c,'same');e=abs(e); %处理垂直方向算子的结果 f=max(d,e); %取水平及垂直方向上的大值 subplot(1,3,1),imshow(d), title(&
4、#39; roberts 水平') subplot(1,3,2),imshow(e), title(' roberts 垂直')subplot(1,3,3),imshow(f), title(' roberts 综合') 由图可知,用单个方向的算子则对该方向比较敏感。 (2)用edge函数处理的Matlab程序代码: a = imread('tuxing','tif'); %读取图像 a = imnoise(a, 'salt & pepper',0.005); %对图像加椒盐噪声 b = edge(
5、a,'roberts',0.02); %以阈值为0.02进行roberts边缘检测 c = edge(a,'roberts',0.07); %阈值为0.07 d,e = edge(a,'roberts'); %该处可得阈值的默认值e subplot(2,2,1),imshow(a),axis on; title('原图') subplot(2,2,2),imshow(b) ,axis on; title('roberts 阈值=0.02') subplot(2,2,3),imshow(c) ,axis on;tit
6、le('roberts 阈值=0.07') subplot(2,2,4),imshow(d) ,axis on; title('默认') 运行结果: Prewitt算子 为了在边缘检测中减少噪声的影响,1970年Prewitt和Sobel分别提出Prewitt算子和Sobel算子。Prewitt算子加大了边缘检测算子的模板,扩大到3x3来计算差分算子。Prewitt 边缘检测算子使用两个有向算子(一个水平的,一个是垂直的,一般称为模板),每一个逼近一个偏导数: 如果我们用 Prewitt 算子检测图像M 的边缘的话,我们可以先分别用水平算子和垂直算子对图像进行卷
7、积,得到的是两个矩阵,在不考虑边界的情形下也是和原图像同样大小的 M1, M2,他们分别表示图像M 中相同位置处的两个偏导数。然后把M1,M2 对应位置的两个数平方后相加得到一个新的矩阵G,G 表示M 中各个像素的灰度的梯度值(一个逼近)。然后就可以通过阀值处理得到边缘图像。 (1)用卷积函数conv2 处理的Matlab 程序代码: a=imread('lena','tif'); b=-1 -1 -1;0 0 0;1 1 1/256;c=-1 0 1; -1 0 1; -1 0 1/256; %参数256 是实验时为增强图像对比度试验出来的 d=conv2(a
8、,b,'same');d=abs(d); %处理水平方向算子的结果 e=conv2(a,c,'same');e=abs(e); %处理垂直方向算子的结果 f=max(d,e); %取水平及垂直方向上的大值 subplot(1,3,1),imshow(d), title(' prewitt 水平') subplot(1,3,2),imshow(e), title(' prewitt 垂直') subplot(1,3,3),imshow(f), title(' prewitt 综合') 由图可知,用单个方向的算子则对该
9、方向比较敏感。 (2)用edge 函数处理的Matlab 程序代码: a = imread('tuxing','tif');%读取图像 a = imnoise(a, 'salt & pepper',0.005); b = edge(a,'prewitt',0.02); c = edge(a,'prewitt',0.07); d,e = edge(a,'prewitt'); %该处可得阈值的默认值e subplot(2,2,1),imshow(a),axis on; title('原图
10、') subplot(2,2,2),imshow(b) ,axis on; title('prewitt 阈值=0.02') subplot(2,2,3),imshow(c) ,axis on;title('prewitt 阈值=0.07') subplot(2,2,4),imshow(d) ,axis on; title('默认') sobel 算子Sobel 算子和 Prewitt 算子的不同就在于使用的模板不一样: (1)用卷积函数conv2 处理的Matlab 程序代码: a=imread('lena','
11、tif'); b=-1 -2 -1;0 0 0;1 2 1/256;c=-1 0 1; -2 0 2; -1 0 1/256; %参数256 是实验时为增强图像对比度试验出来的 d=conv2(a,b,'same');d=abs(d); %处理水平方向算子的结果 e=conv2(a,c,'same');e=abs(e); %处理垂直方向算子的结果 f=max(d,e); %取水平及垂直方向上的大值 subplot(1,3,1),imshow(d), title(' sobel 水平') subplot(1,3,2),imshow(e),
12、title(' sobel 垂直') subplot(1,3,3),imshow(f), title(' sobel 综合') 由图可知,用单个方向的算子则对该方向比较敏感。用sobel 算子得到的图像边缘较宽。 (2)用edge 函数处理的Matlab 程序代码: a = imread('tuxing','tif');%读取图像 a = imnoise(a, 'salt & pepper',0.005); b = edge(a,'sobel',0.02);c = edge(a,'s
13、obel',0.07); d,e = edge(a,'sobel'); %该处可得阈值的默认值e subplot(2,2,1),imshow(a),axis on; title('原图') subplot(2,2,2),imshow(b) ,axis on; title('sobel 阈值=0.02') subplot(2,2,3),imshow(c) ,axis on;title('sobel 阈值=0.07') subplot(2,2,4),imshow(d) ,axis on; title('默认阈值'
14、;) 实验结果: 由Roberts算子、priwitt算子、sobel算子处理的图像结果可以看出,三者处理效果差不多。由于梯度算子包含着微分运算,因此对图像的噪声有一定的放大作用。阈值的大小决定了像素点赋值为1的点的多少。阈值越大,留下的1点越少。 3.2 canny算子 Canny算子具体实现的步骤是:、用高斯滤波器平滑图像;、用一阶偏导的有限差分来计算梯度的幅值和方向;、对梯度幅值进行非极大值抑制;、用双阈值算法检测和连接边缘。(双阈值检测原理:两个阈值可得两个边缘图像,首先由大阈值把边缘连接成轮廓,当到达轮廓的端点时,就从小阈值图像中寻找可以连接到轮廓上的边缘。) Matlab程序代码:
15、 a = imread('tuxing','tif');%读取图像 a = imnoise(a, 'salt & pepper',0.005); b = edge(a,'canny',0.03,0.06);% edge(I,'canny',thresh,sigma),sigma默认为1 c = edge(a,'canny',0.05,0.1); % =3 d = edge(a,'canny',0.05,0.1,2); subplot(2,2,1),imshow(a); sub
16、plot(2,2,2),imshow(b);title('canny 双阈值=0.03,0.06 =1') subplot(2,2,3),imshow(c);title('canny 双阈值=0.05,0.1 =1') subplot(2,2,4),imshow(d);title('canny 双阈值=0.05,0.1 =2') 实验结果:Canny算子由于进行了高斯滤波,因此可以滤除噪声。而且Canny算子是双阈值检测,所以图像连续性较好。高斯滤波器标准差的大小决定了滤除噪声的能力;阈值的大小决定了像素点赋值为1的点的多少。 3.3方向算子 R
17、oberts算子、priwitt算子、sobel算子都只包含两个方向的模板,每种模板只对相应的方向敏感,对该方向上的变化有明显的输出,而对其他方向的变化响应不大。为了检测各个方向的边缘,需要有各个方向的微分模板。8个方向的kirsch模板较为常用,这8个方向依次成45°夹角,其3*3的模板为-5 3 3;-5 0 3;-5 3 3, 3 3 3;-5 0 3;-5 -5 3, 3 3 3;3 0 3;-5 -5 -5, 3 3 3;3 0 -5; 3 -5 -5, 3 3 -5;3 0 -5;3 3 -5, 3 -5 -5;3 0 -5;3 3 3, -5 -5 -5;3 0 3;3
18、 3 3, -5 -5 3;-5 0 3;3 3 3 用卷积函数conv2处理的Matlab程序代码: a=imread('lena','tif'); b=-5 3 3;-5 0 3;-5 3 3/1512;c=3 3 3;-5 0 3;-5 -5 3/1512; d=3 3 3;3 0 3;-5 -5 -5/1512;e=3 3 3;3 0 -5; 3 -5 -5/1512; f=3 3 -5;3 0 -5;3 3 -5/1512;g=3 -5 -5;3 0 -5;3 3 3/1512; h=-5 -5 -5;3 0 3;3 3 3/1512;i=-5 -5
19、3;-5 0 3;3 3 3/1512; b=conv2(a,b,'same');b=abs(b);c=conv2(a,c,'same');c=abs(c); d=conv2(a,d,'same');d=abs(d);e=conv2(a,e,'same');e=abs(e); f=conv2(a,f,'same');f=abs(f);g=conv2(a,g,'same');g=abs(g); h=conv2(a,h,'same');h=abs(h);i=conv2(a,i,'
20、same');i=abs(i); p=max(b,c);p=max(d,p);p=max(e,p);p=max(f,p);p=max(g,p);p=max(h,p);p=max(i,p); subplot(2,4,1),imshow(b),subplot(2,4,2),imshow(c),subplot(2,4,3),imshow(d), subplot(2,4,4),imshow(e),subplot(2,4,5),imshow(f),subplot(2,4,6),imshow(g), subplot(2,4,7),imshow(h),subplot(2,4,8),imshow(i)
21、 figure,imshow(p) 由图可知,多个方向的算子得到的图像细节比较多。四、基于二阶导数法的边缘检测:拉氏算子,log算子 1.拉氏算子:其模板为0 1 0;1 -4 1;0 1 0;对图像的噪声相当敏感,检测出的边缘常常是双像素宽、没有方向信息;因此很少直接用于图像检测;另一方面,一阶差分算子会在较宽范围形成较大的梯度值,因此不能精确定位,而利用二阶差分算子的过零点可以精确定位边缘。 用卷积函数conv2处理的Matlab程序代码: a=imread('lena','tif'); b=0 1 0;1 -4 1;0 1 0/56; d=conv2(a,b,'same');d=abs(d); imshow(d) 由图可知拉氏算子检测出的边缘常常是双像素宽,没有方向信息。2.log算子:拉氏算子对噪声敏感,为减轻噪声的影响,可对需检测的图像先进行平滑,然后再运用拉氏算子检测边缘。平滑时按照与给定像素点的远近给邻域中的点分配不同的权重,此权重大小应服从正态分布。高斯函数是一种服从正态分布的平滑函数。利用log算子进行边缘检测,即首先使图像与高斯函数卷积,然后再运用拉氏算子。的选取:过大,噪声滤除效果好
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 西安医学高等专科学校《汽车文化》2023-2024学年第二学期期末试卷
- 广州铁路职业技术学院《语言学导论》2023-2024学年第二学期期末试卷
- 陕西电子信息职业技术学院《新媒体概论》2023-2024学年第二学期期末试卷
- 潍坊环境工程职业学院《图片摄影创作》2023-2024学年第二学期期末试卷
- 安全教育快乐厨房
- 2024年摄影灯泡项目资金筹措计划书代可行性研究报告
- 危险品管理培训
- 沙金奖牌设计软件介绍
- 2025年福建泉州经济技术开发区市政服务有限公司招聘笔试参考题库含答案解析
- 2025年黑龙江哈电集团哈尔滨电机厂有限责任公司招聘笔试参考题库含答案解析
- 蜗牛与黄鹂鸟(课件)人音版音乐二年级上册
- 浙江大学《概率论与数理统计》第7章
- 光伏发电工程总承包合同
- 经济师考试旅游经济(中级)专业知识和实务试卷及解答参考
- 国开(陕西)2024年秋《社会调查》形考作业1-4
- 立式水轮发电机检修技术规程宣贯课件
- 2024全国高中数学联赛山东赛区预赛试卷(含解析)
- 导数(30题)-2024年考前15天高考数学冲刺大题训练(新高考)含答案
- Inspection and test plan 完整版 详细版1
- 医院重点监控药物的合理应用
- 《装配式建筑用墙板技术要求》JGT578-2021
评论
0/150
提交评论