当前位置: 首页 > article >正文

我谈Canny算子

在Canny算子的论文中,提出了好的边缘检测算子应满足三点:①检测错误率低——尽可能多地查找出图像中的实际边缘,边缘的误检率(将边缘识别为非边缘)低,且避免噪声产生虚假边缘(将非边缘识别为边缘);②定位准确率高——标识出的边缘与图像中的实际边缘尽可能接近,准确定位边缘;③最小边缘宽度——对同一边缘产生尽可能少的响应次数,最好仅标识一次。

Rafael Gonzalez和Richard Woods的《数字图像处理》中是这样的,还只说是目标,到底实现目标了吗?若实现了,怎么实现的。

在这里插入图片描述
肯定是不能绝对实现,完全实现了也就不叫目标了。那如果相对达成目标,总有参照方法吧。没前没后的,一个抄一个。

Canny边缘检测算法的具体过程可以描述为下述三个步骤 :①通过高斯函数的一阶微分计算图像的梯度;②通过非极大值抑制(non-maximum suppression)沿梯度方向查找边缘梯度的单个局部极大值点;③使用双阈值检测强边缘和弱边缘,若弱边缘与强边缘连通,则将弱边缘包含到输出中。

看看在梯度算子的基础上,Canny算子多出来的步骤都干了什么?

  • 由于差分对噪声敏感,通过平滑处理对图像降噪,避免虚假边缘的产生。①后半句 ✓ \checkmark
  • 通过弱边缘的检测连接图像的边缘,使边缘的误检率低。①前半句 ✓ \checkmark
  • 梯度算子检测的边缘有一定宽度,可以通过细化处理产生单像素宽的边缘,但是细化处理无差别地删除边界像素形成线宽为1的细线。Canny算子通过查找梯度的脊线(ridgeline)使边缘定位准确,且产生单像素宽的边缘。②③ ✓ \checkmark
    在这里插入图片描述

John F. Canny提出了Canny算子,Canny使用了变分法推导出在满足上述约束条件下的最优函数,可表示为四个指数项之和的形式,可以通过高斯函数的一阶导数来近似。

目前Canny边缘检测算法具有多个实现版本,Rafael Gonzalez的《数字图像处理》中非极大值抑制的实现我认为不好。我偏向MATLAB的实现。

禹晶、肖创柏、廖庆敏《数字图像处理(面向新工科的电工电子信息基础课程系列教材)》P237
依据MATLAB图像处理工具包的edge函数总结了Canny边缘检测过程。

这里给出了阶段结果。

在这里插入图片描述在这里插入图片描述
在这里插入图片描述
向量的可视化一般都用箭头图。关于梯度方向的可视化,我首先想到箭头图,分辨率不高还挺好,但是分辨率高了,什么都看不清。

在这里插入图片描述

[X,Y] = meshgrid(0:pi/8:pi,-pi:pi/8:pi);
U1 = sin(X);
V1 = cos(Y);
tiledlayout(1,1)
ax1 = nexttile;
quiver(ax1,X,Y,V1,U1)
axis equal
title(ax1,'Left Plot')
>> axis off

在这里插入图片描述
在这里插入图片描述

所以光流法那边提出了用颜色平面来可视化,也不知道哪位高人想到的,效果确实不错,从颜色一目了然观察向量的方向。

wocan
在这里插入图片描述
所以,即使是教材也要跟上时代的发展和进步,所以不做科研的人,也做不好教学。


http://www.kler.cn/a/373894.html

相关文章:

  • STL---unordered_set与unordered_map与前言(哈希表)
  • 在深度学习研究方向有哪些创新点
  • docker设置加速
  • Mac OS 搭建MySQL开发环境
  • 分别用webpack和vite注册全局组件
  • 提示词高级阶段学习day4.1
  • leetcode双指针题目总结
  • SAP B1 功能模块字段介绍 - 价格清单(上)
  • Flutter动画渐变
  • Java面试经典 150 题.P169. 多数元素(005)
  • java.sql.SQLException: ORA-00971: 缺失 SET 关键字
  • 瑞格智慧心理服务平台 NPreenSMSList.asmx sql注入漏洞复现
  • Python 从入门到实战43(Pandas数据结构)
  • Ika赋予Sui开发者与其他链交互的能力
  • Java | Leetcode Java题解之第517题超级洗衣机
  • 如何实现易快报合同付款申请单对接金蝶云星空
  • python 模块和包、类和对象
  • 【JSON改】同结构JSON的批量修改工具
  • 高并发设计模式之ForkJoin模式
  • ssm010基于ssm的新能源汽车在线租赁管理系统(论文+源码)_kaic
  • Vue学习笔记(十二)
  • 【AAOS】【源码分析】CarSystemUI
  • 分库分表常见面试问题
  • 进一步认识ICMP协议
  • PAT甲级-1074 Reversing Linked List
  • H5中文可以换行,英文无法换行