C# 基于OpenCv的视觉工作流-章13-边缘提取

C# 基于OpenCv的视觉工作流-章13-边缘提取

本章目标:
一、边缘的数学原理;
二、Canny算子原理;
三、边缘提取;


一、边缘的数学原理;

图像的像素值范围通常为0-255,在一幅图像中,像素值从较小值快速变化到较大值的位置称为边缘。

这种快速变化的特征,可用数学中的导数进行求取,即X或Y方向上往前几个像素,对应的像素值差值很大,或说斜率很大、梯度很大。

如下图,用卷积核分别计算图像X和Y方向的梯度后,再计算综合梯度,取得边缘信息。



二、Canny算子原理;

算子内部原理有如下几步:

1、去噪;

2、计算梯度及梯度方向;


3、非极大值抑制NMS

上述计算得到所有的梯度后,再通过如下非极大值抑制,筛选出梯度值较大的作为边缘。

如上图,整体梯度方向上取梯度值最大的作为边缘。

4、滞后阈值

上一步筛选得出的边缘位置,还有可能是误判的,需要进行如下筛选。

1.设置梯度最大最小范围值;

2.大于最大的则为边缘;

3.小于最小的则不是边缘;

4.在范围之内的,则判断该点是否能与前边缘点相连(空间距离),能相连则为边缘,否则不是边缘;

三、边缘提取

OpenCv边缘提取可如下使用:

Mat matDst = new Mat();

Cv2.Canny(image, matDst, threshold1, threshold2);

其中:参数1,image为输入图像;

参数2,为输出图像;

参数3,为最小阈值;

参数4,为最大阈值;

说明:阈值设置为自定义,可结合实际图像逐步调整。

效果如下

参考链接

https://www.bilibili.com/video/BV1RFtpeJE6h?spm_id_from=333.788.videopod.episodes\&vd_source=3f9438f03abb9d3e91fda0640164d626\&p=36

"VisionTool 探迹"免费视觉工具

下载地址:https://pan.baidu.com/s/11tktKOSnepLNIEqNbvnv6w?pwd=qv5i

"VisionTool Halcon"付费视觉工具

下载地址:https://pan.baidu.com/s/1v832KTonDYS6oNnWG2iZtQ?

对应系列文章"C# 基于Halcon的视觉工作流",欢迎前往阅读。

上述内容需要一定的技术功底,本章至此已结束,欢迎阅读下章,谢谢!

相关推荐
爱知菜1 分钟前
Transformer vs Diffusion:为什么扩散模型更擅长捕捉细节?
人工智能·深度学习·transformer·扩散模型
青山木4 分钟前
Hot 100 --- 最小栈
java·数据结构·算法·leetcode
xp_xht1235 分钟前
Day1 概率机器学习 信息论
人工智能·机器学习·信息论
疯狂打码的少年7 分钟前
【数据结构】栈的应用:表达式求值(后缀表达式)
java·数据结构·笔记·算法
HiDev_18 分钟前
【非标自动化】plc执行顺序问题、扫描周期问题
深度学习·算法·机器学习
chuan.bai18 分钟前
Java RAG 实战(第 3 篇):从交互式聊天到多轮上下文
java·人工智能·macos·ai
雪隐22 分钟前
个人电脑玩AI-16让5060 Ti给你打工——MiniMax H3 提速实录:从"泡杯茶等视频"到"视频等你",一张 5060 Ti 的自我修养
前端·人工智能·后端
深兰科技25 分钟前
深兰科技亮相天津医疗器械创新生态大会,DeepAgent智能体赋能医疗医美并签约天津OPC项目
人工智能·科技·r语言·symfony·视觉大模型·深兰科技·deepagent智能体
cxr82826 分钟前
从“对象本体”到“关系本体”
人工智能·架构
shxjnpl29 分钟前
Whisper + CAM++ + 本地大模型:一套完全离线的AI会议处理链路
人工智能·机器学习·whisper