Sobel边缘检测与canny边缘检测对比

  • Sobel边缘检测与canny边缘检测对比
  • 梯度幅值和梯度方向
  • 实验对比
  • matlab 代码

Sobel边缘检测与canny边缘检测对比

边缘检测指的是得到灰度发生剧烈变化的位置,边缘检测的目的是制作一个线图,提供对图像数据的合适概述。sobel边缘检测算法和canny边缘检测算法是较为常见的两种边缘检测算法。sobel边缘检测算法分为两个步骤:(1)首先用到sobel算子,提取灰度差值信息,也就是图像梯度值,(2)用单阀值进一步提取边界信息。canny边缘检测算法包含四个步骤:(1)高斯滤波,(2)使用sobel算子分别计算x,y方向梯度分量及梯度方向,(3)对梯度进行非极大值抑制, (4)使用双阈值对边缘进一步检测和增强。
可以看出,这两种算法都是计算梯度信息和方向,最后根据这个梯度信息进行检测边界,总体流程上是一致的。不同点就是检测这一块,cannny算法给出了非极大值抑制和双阈值法可以排除不是边界点的干扰,更好的能够提取出边界。

梯度幅值和梯度方向

梯度幅值

梯度方向

实验对比

Sobel算法结果

Canny算法结果

Sobel梯度幅值图像可以看出在图像边缘部分梯度幅值越大,另外对比sobel算法边缘检测结果与canny边缘检测结果可以看出,canny的检测效果更好,主要原因是canny算法在边缘检测时采用了非极大值抑制以及双阈值方法,因此排除了非边缘点的干扰,检测效果更好。

matlab 代码

clc
clear
close all
image=imread('lena.jpg');
image_gray=rgb2gray(image);
subplot(2,2,1)
imshow(image_gray)
title('原图像')
%% sobel梯度幅值图像
Gx=conv2(image_gray,[-1 0 1;-2 0 2;-1 0 1],'same');
Gy=conv2(image_gray,[-1 -2 -1;0 0 0;1 2 1],'same');
sobel_amp=sqrt(Gx.^2+Gy.^2);
subplot(2,2,2)
imshow(sobel_amp/255)
title('sobel梯度幅值图像')%% sobel梯度方向图像
sobel_phase=atan(Gy./Gx);
subplot(2,2,3)
imshow((sobel_phase+pi/2)/pi)
title('sobel梯度方向图像')
%% 基于梯度的边缘检测结果
edge_sobel=zeros(size(image_gray));
for i=1:size(image_gray,1)for j=1:size(image_gray,2)if sobel_amp(i,j)>80edge_sobel(i,j)=1;endend
end
subplot(2,2,4)
imshow(edge_sobel)
title('基于梯度的边缘检测结果')
%% canny边缘检测
edg_canny=edge(image_gray,'canny');
figure
imshow(edg_canny)
title('canny边缘检测结果')

图像处理(四) Sobel边缘检测与canny边缘检测对比相关推荐

  1. 算法应用三:【图像分割】+【边缘检测】canny边缘检测--冈萨雷斯--《数字图像处理》

    canny主要工作:推导了最优边缘检测算子.       图像的边缘检测是:图像最基本特征,边缘点指的是图像中周围像素灰度有阶跃变化或屋顶变化的那些像素点,即:灰度值导数极大的地方. 边缘检测的目的是 ...

  2. C语言数字图像处理----3.2 图像边缘检测之Canny边缘检测算法

    本篇将介绍图像边缘检测中的Canny边缘检测,这是传统边缘检测学习中的必学内容,也是图像算法面试中的常见问题,本文将教会初学者如何在理解算法的基础之上,通过C语言来实现Canny边缘检测算法,从而做到 ...

  3. 【canny边缘检测】canny边缘检测原理及代码详解

    文章目录 前言 canny边缘检测算法主要流程 一.高斯模糊 二.图像梯度计算 三.非极大值抑制 四.双阈值边界跟踪 前言 本文通过介绍canny边缘检测原理与代码解析,希望能让大家深入理解canny ...

  4. canny边缘检测 java_OpenCV Canny边缘检测

    本篇文章帮大家学习OpenCV Canny边缘检测,包含了OpenCV Canny边缘检测使用方法.操作技巧.实例演示和注意事项,有一定的学习价值,大家可以用来参考. Canny边缘检测用于检测图像中 ...

  5. 图像处理:推导Canny边缘检测算法

    目录 概述 最优边缘检测 算法实现的步骤 1.灰度化与高斯滤波 2.计算图像的梯度和梯度方向 3.非极大值抑制 4.双阈值筛选边缘 5.利用滞后的边界跟踪 6.在图像中跟踪边缘 数学推导 Opencv ...

  6. 【OpenCV-Python】——边缘和轮廓Laplacian/Sobel/Canny边缘检测查找/绘制轮廓及轮廓特征霍夫直线/圆变换

    目录 前言: 1.边缘检测 1.1 Laplacian边缘检测 1.2 Sobel边缘检测 1.3 Canny边缘检测 2.图像轮廓 2.1 查找轮廓 2.2 绘制轮廓 2.3 轮廓特征 3.霍夫变换 ...

  7. CV笔记6:图像边缘检测之一阶微分算子、二阶微分算子、Canny边缘检测(基于python-opencv实现)

    目录 一.边缘简介 1.1 何为边缘 1.2 产生原因 二.边缘检测方法 2.1 一阶微分算子计算原理 2.2 噪声对一阶微分算子的影响及解决方案 2.3 常见的一阶微分算子 2.3.1 Robert ...

  8. python canny优化_python实现canny边缘检测

    canny边缘检测原理 canny边缘检测共有5部分组成,下边我会分别来介绍. 1 高斯模糊(略) 2 计算梯度幅值和方向. 可选用的模板:soble算子.Prewitt算子.Roberts模板等等; ...

  9. Python+OpenCV:Canny边缘检测

    Python+OpenCV:Canny边缘检测 理论 Canny边缘检测是目前比较流行的边缘检测算法,它由John F. Canny发明. 1. 这是一个多阶段的算法. 2. 降噪:由于边缘检测容易受 ...

  10. Python OpenCV -- Canny 边缘检测 (十一)

    Canny 边缘检测 原理 Canny 边缘检测算法 是 John F. Canny 于 1986年开发出来的一个多级边缘检测算法,也被很多人认为是边缘检测的 最优算法, 最优边缘检测的三个主要评价标 ...

最新文章

  1. eas账号是什么意思_刚开始做抖音带货和好物推荐,如何布局抖音种草账号矩阵?...
  2. python 使用 sorted 对 列表嵌套元组的数据进行排序
  3. Cpp 对象模型探索 / 多重继承虚函数表分析
  4. CentOS下ZooKeeper单机模式、集群模式安装
  5. PyTorch基础(part8)--LSTM
  6. body onload 控制窗口大小 html,HTML5 对各个标签的定义与规定:body的介绍
  7. Nagios配置和命令介绍(二 )
  8. Nitro PDF 数据遭大规模泄露,波及微软、谷歌、苹果等
  9. 创建私有CA及其签署和吊销证书
  10. mysql中的concat和group_concat的用法
  11. html5 调用歌词播放器,如何用h5+js实现音乐歌词同步播放器
  12. 【深度相机系列四】深度相机原理揭秘--结构光(iPhone X 齐刘海原理)
  13. win11设置开机自动打开chrome并最大化页面
  14. Android 获取应用「唯一标识符」——DeviceID「兼容android 10(Q)」
  15. 阿里云服务器使用记录
  16. 信息爆炸,用写作让它慢下来-2023.04.07
  17. 【杂谈】 Listary自带的字典功能失效?没关系,让我们自己来改造它
  18. 如何配置重做日志高速缓存的大小
  19. python对淘宝运营有帮助吗_干货分享 | 两年的淘宝运营经验
  20. symfony权威指南学习之一:symfony 介绍

热门文章

  1. 小程序场景二维码扫码
  2. ant-design-vue 的颜色选择器
  3. 量子计算机王,王正汉|量子计算机:下一轮工业革命的引擎
  4. 【js 分页】js 分页 方法一 【实用】
  5. java计算机毕业设计快滴预约平台MyBatis+系统+LW文档+源码+调试部署
  6. 机器学习实践:Spark MLlib库介绍与使用-3
  7. Kali Linux 暴力破解 wifi密码
  8. 1. VS2017社区版安装
  9. 九宫格拼图小游戏代码html,js实现九宫格拼图小游戏.pdf
  10. 微信小程序简单签到功能源码分享