首页 > 编程语言 >Canny边缘检测算法

Canny边缘检测算法

时间:2024-06-11 19:23:17浏览次数:29  
标签:阈值 检测 图像 double 算法 梯度 Canny InputArray 像素

一、概念

Canny算法是一种经典的图像处理算法,用于图像中的边缘检测,其实现的步骤包括:

  1. 高斯滤波
  2. 计算梯度和方向:对平滑后的图像使用Sobel算子计算水平方向和竖直方向的一阶导数,然后计算该点的梯度大小和方向;
  3. 非极大值抑制:对梯度图上的每个像素,根据其梯度方向,确定在该方向上的两个相邻像素,然后检查当前像素的梯度幅度与其相邻像素的梯度比较,如果当前像素的梯度幅度大于两个相邻像素的梯度幅度,说明当前像素是局部梯度的最大值,需要保留该像素,反之,则将其值设为零;
  4. 滞后阈值:设置minVal和maxVal两个阈值(建议使用2:1到3:1的上/下比例),当图像的灰度梯度高于maxVal时被认为是真的边界,那些低于minVal的边界会被抛弃,如果介于两者之间的话,就要看这个点是否与某个被确定为真正的边界点相连,如果是就认为它也是边界点,如果不是则抛弃。

二、算法接口介绍

2.1 接口1

void cv::Canny	(InputArray dx,
InputArray dy,
OutputArray edges,
double threshold1,
double threshold2,
bool L2gradient = false 
)
/*
InputArray dx:16位在x方向的梯度图像,一般通过Sobel算子计算得到
InputArray dy:16位在y方向的梯度图像,一般通过Sobel算子计算得到
OutputArray edges:单通道8位输出图像,与输入的尺寸一致,其中边缘像素值为255(白色),非边缘像素值为0(黑色)。
double threshold1:低阈值
double threshold2:高阈值
bool L2gradient:是否使用L2范数,默认为false,使用L1范数 
*/	

2.2 接口2

void cv::Canny	(InputArray image,
OutputArray edges,
double threshold1,
double threshold2,
int apertureSize = 3,
bool L2gradient = false 
)	

/*
InputArray image:8位的输入图像
OutputArray edges:单通道8位输出图像,与输入的尺寸一致,其中边缘像素值为255(白色),非边缘像素值为0(黑色)。
double threshold1:低阈值
double threshold2:高阈值
int apertureSize:Sobel算子的大小,默认为3
bool L2gradient:是否使用L2范数,默认为false,使用L1范数 
*/

标签:阈值,检测,图像,double,算法,梯度,Canny,InputArray,像素
From: https://www.cnblogs.com/Terrypython/p/18242524

相关文章

  • 霍夫变换检测圆
    一、概念1.1标准霍夫变换检测圆与霍夫变换检测直线是非常类似的,只是将参数空间扩展到了三维,把问题转换为求解参数空间中相交最多的(a,b,r)参数对,其中(a,b)是圆心,r是半径,但这种方式增加了很多的计算量,所以在实际中并不常用。1.2OpenCV中的霍夫梯度检测圆OpenCV中霍夫变换圆......
  • 基于分类算法的学习失败预警(机器学习课程期末设计报告)
    目录一.课设背景1.1设计要求1.2项目概述二.实验环境三.设计原理3.1理论知识3.1.1学习失败风险预测流程3.1.2数据预处理3.1.2.1缺失值处理(空值填充)3.1.2.2数据平衡3.1.2.3标准化处理3.1.3构建模型进行训练3.1.3.1网格搜索3.1.3.2随机森林算法3.1.2.3......
  • 武汉凯迪正大电气对10KV架空绝缘电缆检测项目与技术规范经验分享
    架空绝缘电缆作为电力传输的重要组成部分,其安全性和可靠性对于电力系统的稳定运行至关重要。因此10kV架空绝缘电缆进行严格的检测与评估,确保其符合相关技术规范和安全标准是电力工程建设和运维的重要环节。本文将根据武汉凯迪正大的从业经验对10kV架空绝缘电缆的检测项目和技术......
  • Java数据结构与算法(回溯算法)
    前言回溯算法是一种通过构建问题的解树(或解图)来逐步构建候选解的通用算法。它尝试通过一系列选择来解决问题,选择可能包括移动、添加一个元素到当前解、决定一个解的某部分等。当发现某个选择无法导致一个有效解时,算法会回退(即回溯),撤销该选择,并尝试其他选择。回溯算法通常用于......
  • 算法课程笔记——树状数组基础
    算法课程笔记——树状数组基础如果不这样写会一直循环出错......
  • OpenCV实战案例——直线检测[C++]
    0.前言本文以实战案例为背景,一步步讲述如何使用计算机图像处理相关知识提取图片中英语填空题答题线。1.需求背景某公司打算设计一款英语题目批改APP,要求学生上传英语填空题图片,然后该APP自动标注答题线位置(使用红线标注),方便后续定位和批改答案。下图(图1-1)为某一学生上传的......
  • 有趣的算法题之购物单
    购物单王强决定把年终奖用于购物,他把想买的物品分为两类:主件与附件,附件是从属于某个主件的,下表就是一些主件与附件的例子:主件附件电脑打印机,扫描仪书柜图书书桌台灯,文具工作椅无如果要买归类为附件的物品,必须先买该附件所属的主件,且每件物品只能购买一次。每个主件可以有 ......
  • Pytorch 实现简单的 线性回归 算法
    Pytorch实现简单的线性回归算法简单tensor的运算Pytorch涉及的基本数据类型是tensor(张量)和Autograd(自动微分变量)importtorchx=torch.rand(5,3)#产生一个5*3的tensor,在[0,1)之间随机取值y=torch.ones(5,3)#产生一个5*3的Tensor,元素都是1z=x+y......
  • 霍夫变换检测直线
    一、概念Hough直线检测的基本原理在于利用点与线的对偶性,即图像空间中的直线与参数空间中的点是一一对应的,因此将图像空间中的直线检测问题转换到参数空间中对点的检测问题,通过在参数空间里寻找峰值来完成直线检测任务。注意:参数空间是极坐标系,不是k和b组成的笛卡尔坐标系,目的......
  • 助力茶园种植鲜叶分级,基于YOLOv3全系列【yolov3tiny/yolov3/yolov3spp】参数模型开发
    茶园鲜叶的分级主要基于嫩度、匀度和净度等因素。嫩度是鲜叶分级验收的主要依据。这通常根据芽叶的多少、大小、嫩梢上叶片数和开展程度,以及叶质的软硬、叶色的深浅等来评定等级。例如,红、绿茶对鲜叶的要求以一芽二叶为主,兼采一芽三叶和细嫩对夹叶。匀度也是一个重要的考虑因素......