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

我谈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.lryc.cn/news/469184.html

相关文章:

  • 算法的学习笔记—平衡二叉树(牛客JZ79)
  • SSM学习day01 JS基础语法
  • kubeadm快速自动化部署k8s集群
  • 解决JAVA使用@JsonProperty序列化出现字段重复问题(大写开头的字段重复序列化)
  • 分布式理论基础
  • Java应用程序的测试覆盖率之设计与实现(二)-- jacoco agent
  • 【机器学习】13. 决策树
  • 《a16z : 2024 年加密货币现状报告》解析
  • Laravel 使用Simple QrCode 生成PNG遇到问题
  • 一站式学习 Shell 脚本语法与编程技巧,踏出自动化的第一步
  • 批处理操作的优化
  • 机器视觉运动控制一体机在DELTA并联机械手视觉上下料应用
  • RHCE-web篇
  • Java - 人工智能;SpringAI
  • MFC开发,给对话框添加定时器
  • LED灯珠:技术、类型与选择指南
  • C语言二刷
  • C++模块化程序设计举例
  • 毕业设计选题:基于Python的招聘信息爬取和可视化平台
  • 机器人学习仿真框架
  • 力扣每日一题打卡 3180. 执行操作可获得的最大总奖励 I
  • NVR录像机汇聚管理EasyNVR多品牌NVR管理工具/设备视频报警功能详解
  • springboot073车辆管理系统设计与实现(论文+源码)_kaic.zip
  • 2024.10月22日- MySql的 补充知识点
  • Java中的对象——生命周期详解
  • vue文件报Cannot find module ‘webpack/lib/RuleSet‘错误处理
  • 第 6 章 机器人系统仿真
  • 爬虫——scrapy的基本使用
  • 聚类分析算法——K-means聚类 详解
  • 【Sublime Text】设置中文 最新最详细