计算机视觉-边缘检测

devtools/2025/2/10 7:40:13/

 一、边缘

1.1 边缘的类型

①实体上的边缘
②深度上的边缘
③符号的边缘
④阴影产生的边缘

不同任务关注的边缘不一样

1.2 提取边缘

        突变-求导(求导也是一种卷积)

        近似,\varepsilon=1(右边的一个值-自己=可以用卷积做)

        该点f(x,y)在x方向上的导数为f(x+1,y)*1 + f(x,y)*(-1),也就是f(x,y)*g(x,y)在卷积区域内求和,卷积区域为1*2,-1与1对应的是g(x,y)。

        对x求导,是y方向左右差异比较大的

        对y求导,是x方向上下差异比较大的

eg:-1、1与原图卷积就是出现左下方的图,(右减左)

1.3 图像的梯度

        梯度方向与边(边缘)垂直

        梯度指向信号方向大的地方

        梯度值\left \| \bigtriangledown f \right \|越大,说明这个点是边缘的可能性就越大

        

eg:

Prewitt:自己左边的值与右边的值相减,衡量自己是不是边缘值

Sobel:先平滑高斯滤波,再边缘提取(对噪声敏感程度更低)

Roberts:M_{x}是检测135度的线,M_{y}是检测45度的线

检测模版与线的方向是垂直的

1.4 噪声的影响

        现实中信号有噪声,求导后找不到梯度的极大值和极小值

        先用高斯核与原图像卷积进行滤波去噪,再求导就能找到极值点了(费时)?

         改进:利用卷积的交换律和结合律,先算高斯核的导数再算与原图像的卷积(高斯偏导模版

        高斯偏导模版(越黑越负)

        x方向求偏导:衡量y方向差异  

        y方向求偏导:衡量x方向差异

1.5 高斯核的参数

        用高斯偏导核卷积图像就可以得到去噪后的边缘图像

        像素代表方差,方差越大,平滑能力越强

        给出标准差就能生成高斯模版(高斯模版只需要σ和窗宽两个量就可以计算出,而窗宽=2σ+1)

1.6 回顾 高斯平滑核和高斯偏导核

高斯平滑核:用来做平滑的,不会有负数,权值和等于1

高斯偏导核:用来提取边缘信息,会有负数,权值和等于0

二、Canny算法

2.1 Canny算法

用x方向的卷积模版计算一次再用y方向的卷积模版计算一次,求和

        一个阈值,减小宽度

2.2 非极大值抑制

        减小线条宽度

        计算梯度大小,剔除掉梯度小的点,选择合适的边缘点

        抑制后图像 

2.3 双门限法

下巴边没有了??怎么办   双门限

高门限:检测出边缘边

低门限:排除噪声(把有连接的找出来)

2.4 算法步骤

1、高斯偏导(考虑到噪声)滤波器:先对图像进行x、y方向滤波

2、衡量每个点的梯度强度,梯度方向(看有没有比它还大的)

3、非最大化抑制(宽边变成细边)

4、定义两个门限


http://www.ppmy.cn/devtools/157576.html

相关文章

驱动开发系列35 - Linux Graphics GEM Buffer Object 介绍

一:概述 在 Linux 内核中,DRM(Direct Rendering Manager)模块 是用于管理显示硬件和图形渲染的核心框架。它负责协调用户空间应用程序(例如 X Server、Wayland Compositors、Mesa 等)和 GPU 硬件之间的通信,是 Linux 图形子系统的重要组成部分。 GEM (Graphics Executio…

我们来学人工智能 -- 将Ollama已下载的模型从C盘迁出

题记 未配置OLLAMA_MODELS系统变量导致模型下载到了C盘 迁移步骤 退出ollama 配置OLLAMA_MODELS系统变量 OLLAMA_MODELS:D:\ollama\models 直接将C盘下的models目录剪切到指定目录 检查 cmd命令窗口退出重新打开

从算法到落地:DeepSeek如何突破AI工具的同质化竞争困局

🎁个人主页:我们的五年 🔍系列专栏:Linux网络编程 🌷追光的人,终会万丈光芒 🎉欢迎大家点赞👍评论📝收藏⭐文章 ​ Linux网络编程笔记: https://blog.cs…

代码随想录day06

242.有效的字母异位词 刚学哈希表想着使用unordered_set来实现,结果无法通过,原因是对字母异位词理解有问题,字母异位词是通过重新排列不同单词或短语的字母而形成的单词或短语,并使用所有原字母一次。对字母出现的次数有要求&am…

[转]Java面试近一个月的面试总结

本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/46753275 前言 打算换个工作,近一个月面试了不少的公司,下面将一些面试经验和思考分享给大家。另外校招也快要开始了,为…

Vue全流程--Vue2路由

引入路由的原因: 实现单页面应用(SPA) 什么是单页面应用: 1、点击跳转链接后直接在原本的页面展示。路径发生相应改变 2、整个应用只有一个完整页面 3、数据需要通过ajax获取 Vue2中的路由是什么: Vue2路由是一…

Activity相关学习(二)

Activity启动流程(基于android-13.0.0_r83) 整体流程 启动方式 Activity主要有三种方式 从 Launcher 桌面上点击 App 图标启动一个App。App 启动后,按 Home 键退回到 Launcher 界面,再点击 App 图标。同个应用内启动,如从 Activity1 跳转…

redis中的list类型

可以看作一个双向链表结构,支持正向和反向检索,有序,元素可以重复,插入和删除快,查询速度一般 list类型常见命令: LPUSH key element... : 向链表左侧插入一个或多个元素 LPOP key:移除并返回…