[读书笔记] 计算机视觉与算法应用 Chapter 4.2 边缘

4.2  边缘

尽管特征点对于寻找2D中能够精确匹配的图像位置非常有用,但是边缘点更为丰富且常常包含重要的语义关联。

4.2.1 边缘检测

  • 边缘出现在颜色、亮度或者纹理不一样的区域之间。
  • 通常只使用局部信息来检测边缘更为合适
  • 一个表面的斜率和方向通过它的梯度来实现

局部梯度向量J指向亮度函数的极速上升(steepest ascent)方向,它的幅值是其斜率或者变化强度的一个指示,它的方向指向了与其局部轮廓垂直的方向。

  • 因为高频部分噪声和信号的比例较大,所以求取图像的导数强调了高频率的部分因而放大了噪声。这就需要在计算梯度之前将图像用一个低通滤波器进行平滑。因为边缘检测器的响应与方向无关,所以需要一个圆对称的平滑滤波器。高斯函数是唯一可分离的圆对称滤波器,所以大多数边缘检测算法都使用了它。

参数σ反映了高斯函数的带宽。

  • 希望将连续梯度图像稀疏化使之仅存在于孤立的边缘,即仅以单个像素分布在沿着边缘轮廓的离散位置上。这个可以通过在与边缘方向(梯度方向)垂直方向上寻找边缘响应(梯度幅值)的极大值来获得。
  • 求取上述极大值对应于将强度场沿着梯度方向求取方向导数,然后寻找过零点。

实践中经常将高斯二阶导数卷积换成高斯差分(DoG)来计算,因为其核函数的形状在性质上相似。

  • 尺度选择和模糊估计:
  1. 导数、拉普拉斯和高斯滤波器的差分都需要选择空间尺度参数σ。
  2. 只检测强烈的边缘,滤波器的带宽可以从图像的噪声特性来确定;检测出现在不同分辨率下的边缘需要一种尺度空间上的方法来寻找不同尺度上的边缘。
  3. Elder and Zucker(1998)给出了一种解决办法:给定一个噪声级别,他们的办法可以为每一个像素计算可以可靠地检测出边缘的最小尺度。

  • 彩色边缘检测
  1. 灰度检测器在每个颜色空间独立输出的结果结合起来——问题是带符号的梯度可能会抵消。
  2. 或者将每个颜色空间独立地检测边缘,然后再联合起来——问题是可能会导致边缘加粗或者出现双倍的边缘而难以连接。
  3. 比较好的办法是:在每个颜色空间计算有向能量(oriented energy),将加权的有向能量加起来再寻找它们联合的最佳方向——这个能量的方向导数可能没有一个闭合解,不能使用过零点策略。但可以使用每个像素周围区域估计局部颜色统计信息。
  4. 结合边缘特征线索

4.2.2 边缘连接

  • 若边缘已经通过某个函数的过零点检测到,那么连接拥有共同端点的边界元会非常直接(有序列表、2D数组)。
  • 若过零点没有检测到边缘,就会需要一些技巧,比如有歧义时看相邻边界元的方向。
  • 带滞后作用的阈值化处理:允许高于较高阈值的被跟踪曲线包含低至低阈值的边缘。
  • 弧长参数化(arc length parameterization):x(s), s表示一条曲线上的弧长度。

弧长参数化的优势是:它使得匹配和处理操作更加容易。

4.2.3  应用: 边缘编辑和增强

  • 边缘不仅可以用作物体识别的一个组件或者用作匹配的特征,它们还可以直接用于图像编辑。

  • 另一个潜在应用:卡通或笔墨画中增强显著边缘。
时间: 2024-10-11 04:03:41

[读书笔记] 计算机视觉与算法应用 Chapter 4.2 边缘的相关文章

[读书笔记] 计算机视觉与算法应用 Chapter 4.3 线条

4.3 线条 4.3.1 逐次近似 直线简化(line simplification): 分段线性的折线或者B样条曲线 4.3.2 Hough 变换 一种根据边缘来对可能的直线位置进行投票的方法:每个边缘点为通过它的所有可能直线进行投票(利用每个边界基元的局部方向信息),检查那些对应着最高累加器或者区间的直线以寻找可能的线匹配. 利用点线对偶性(duality): 图像空间中共线的点对应在参数空间里共点的线 哈夫变换根据点线对偶性把图像空间的直线检测问题转换成了参数空间的点检测问题,后者只需要简

[读书笔记] 计算机视觉与算法应用

<计算机视觉与算法应用>这本书其实我已经读到第四章了,之前一直都用笔记在笔记本上了,现在直接继续在这里记啦,之前的也不再补充了~ Chapter 4 特征检测与匹配 “关键点特征”或“兴趣点”或“角点” “边缘” 4.1 点和块 获取特征点及其之间的对应关系主要有两种方法:1)在第一幅图像中寻找那些可以使用局部搜索方法来精确跟踪的特征,比如相关或者最小二乘 2)在所有考察的图像中独立地检测特征点然后再基于它们的局部表观进行匹配 关键点检测和匹配流水线:1)特征检测(提取)2)特征描述 3)特征

我的读书笔记(排序算法)

1.快速排序 假设待排序的序列为L[m...n],而一趟排序目的就是将其分割为两个子序列,分别为L[m...middle-1]和L[middle+1...n],其中L[m...middle-1]中的每个元素都小于L[middle],而L[middle+1...n]中的每个元素都大于L[middle] 递归调用快速排序算法,对L[m...middle-1]和L[middle+1..n]分别进行排序 由于是原地排序,所以递归结束后就自然形成了有序序列 1 /// <summary> 2 /// 快

《算法导论》读书笔记之排序算法—Merge Sort 归并排序算法

自从打ACM以来也算是用归并排序了好久,现在就写一篇博客来介绍一下这个算法吧 :) 图片来自维基百科,显示了完整的归并排序过程.例如数组{38, 27, 43, 3, 9, 82, 10}. 在算法导论讲分治算法一章的时候提到了归并排序.首先,归并排序是一个分治算法. 归并(Merge)排序法是将两个(或两个以上)有序表合并成一个新的有序表, 即把待排序序列分为若干个有序的子序列,再把有序的子序列合并为整体有序序列. merg() 函数是用来合并两个已有序的数组.  是整个算法的关键. 那么归并

【读书笔记】——终极算法

Note1:网飞的推荐倾向于长尾 Note2: 符号学派:逆向演绎,从哲学.心理学.逻辑学寻求洞见-->逆向演绎 连接学派:对大脑进行逆向分析,来源于神经科学和物理学-->反向传播 进化学派:在计算机上进行模拟,利用遗传学和进化生物学-->遗传编程 贝叶斯学派:概率推理,理论基础是统计学-->贝叶斯推理 类推学派:通过相似性判断来外推学习,接受心理学和数学最优化的影响 -->支持向量机 Note3: 机器学习是人工智能的子领域. Note4: 为什么商业用户机器学习? 商业的

数据结构与算法(刺猬书)读书笔记----目录

最近在抓底层的语言基础,以前对数据结构和算法并没有太大感觉,但越往深处学就越觉得这些基础真的是要牢牢掌握住.一个简简单单的数组,深究起来都有很多学问.所以打算写个一系列的读书笔记,好好梳理一下这一块的基础知识.这本书是<数据结构预算法JavaScript描述>,是基于JavaScript的.里面大致介绍了数组.列表.栈.队列.链表.散列.集合及各种常见基础算法.作为基础读物算是很全面的.这系列读书笔记也将会跟着书里的顺序一章章的进行梳理.整个过程计划耗时2-3个月,每周更新一到两张,更新的笔记

《深入理解计算机系统》 Chapter 7 读书笔记

<深入理解计算机系统>Chapter 7 读书笔记 链接是将各种代码和数据部分收集起来并组合成为一个单一文件的过程,这个文件可被加载(货被拷贝)到存储器并执行. 链接的时机 编译时,也就是在源代码被翻译成机器代码时 加载时,也就是在程序被加载器加载到存储器并执行时 运行时,由应用程序执行 链接器使分离编译称为可能. 一.编译器驱动程序 大部分编译系统提供编译驱动程序:代表用户在需要时调用语言预处理器.编译器.汇编器和链接器. 1.将示例程序从ASCⅡ码源文件翻译成可执行目标文件的步骤 (1)运

程序语言的奥妙:算法解读 &mdash;&mdash;读书笔记

算法(Algorithm) 是利用计算机解决问题的处理步骤. 算法是古老的智慧.如<孙子兵法>,是打胜仗的算法. 算法是古老智慧的结晶,是程序的范本. 学习算法才能编写出高质量的程序. 懂得了算法,游戏水平会更高. 比如下棋,如果懂得棋谱,就不需要每次考虑"寻找最好的一步棋",按照棋谱 就可以走出最好的几步棋.棋谱是先人们智慧的结果,因此掌握多种棋谱的人更 容易在对弈中获得胜利. 算法的学习类似学习游戏攻略. 算法是编写好程序的"棋谱". 算法必须满足&

《Linux内核设计与实现》Chapter 2 读书笔记

<Linux内核设计与实现>Chapter 2 读书笔记 一.获取内核源码 1.使用Git 我们曾经在以前的学习中使用过Git方法 $ git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git 更新分支到Linux的最新分支 $ git pull 可以获取并随时保持与内核官方的代码树一致 2.安装内核源代码 压缩形式为bzip2 $ tar xvjf linux-x.y.z.tar.bz2 压缩