计算机视觉(七):特征检测/提取(feature detection/extraction)

更多内容关注公众号:数学的旋律
在这里插入图片描述


关键点检测和匹配流水线四个阶段

① 特征检测/提取(feature detection):
      特征检测/提取的过程指从每一幅图像中寻找那些能在其他图像中较好匹配的位置。
      另外需要注意的是,这里也涉及图像分割的内容。分割将图像细分为构成它的子区域或物体。细分的程度取决于要解决的问题。也就是说,在应用中,当感兴趣的物体或区域已经被检测出来时,就停止分割。
② 特征描述(feature description):
      特征描述即把检测到的关键点周围的每一个区域转化成一个更紧凑和稳定(不变的)的描述子。
      使用图像分割的方法将一幅图像分割成多个区域后,分割后的像素集合经常需要以一种适合于计算机进一步处理的形式来表示和描述,此时我们可以使用特征描述子对其进行描述。
③ 特征匹配(feature matching):
      特征匹配即在其他图像中高效地搜索可能的匹配候选。一旦我们从两幅或多幅图像中提取特征及其描述子,下一步就是要在这些图像之间建立一些初始化特征之间的匹配。
④ 特征跟踪(feature tracking):
      特征跟踪是第三个阶段的另一种替代方法,它只在检测到的特征点周围一个小的领域内寻找匹配,因此更适合视频处理。
以上介绍将贯彻接下来要介绍的特征检测/提取、图像分割、特征描述、特征匹配、特征跟踪。


tb店铺搜:FUN STORE玩物社,专业买手挑选送礼好物

一、背景知识

1. 图像特征

      本文主要介绍灰度空间的特征检测,所讨论的特征检测跟特征提取有相同的概念,特征被检测后它可以从图像中被提取出来。我们感兴趣的三种图像特征是孤立点、线、边缘。
      边缘像素是图像中灰度突变的那些像素,而边缘是相连边缘像素的集合。边缘检测器是设计用来检测边缘像素的局部图像处理方法。
      一条线可视为一条边缘线段,该线两侧的背景灰度要么远亮于该线的像素的灰度,要么远暗于该线的像素的灰度。
      类似的,孤立点可视为一条线,只是其长度和宽度都为一个像素。

2. 数字函数的一阶导数和二阶导数

      我们在空间域滤波器中介绍过一阶微分和二阶微分的差分形式。若将函数 f ( x + Δ x ) f(x+\Delta x) f(x+Δx) 展开为关于 x x x 的泰勒级数,令 Δ x = 1 \Delta x = 1 Δx=1,且只保留该级数的线性项,结果数字差分是:
∂ f ∂ x = f ′ ( x ) = f ( x + 1 ) − f ( x ) {∂f\over ∂x} = f'(x) = f(x+1) - f(x) xf=f(x)=f(x+1)f(x)      对上式关于 x x x 微分,我们得到一个二阶导数表达式:
∂ 2 f ∂ x 2 = ∂ f ′ ( x ) ∂ x = f ′ ( x + 1 ) − f ′ ( x ) = f ( x + 2 ) + f ( x ) − 2 f ( x + 1 ) {∂^2f\over ∂x^2} = {∂f'(x)\over ∂x} = f'(x+1) - f'(x) = f(x+2) + f(x) - 2f(x+1) x22f=xf(x)=f(x+1)f(x)=f(x+2)+f(x)2f(x+1)      这一展开是关于点 x + 1 x+1 x+1 的,我们的兴趣是关于点 x x x 的二阶导数,故将上式中的变量减1后,得到
∂ 2 f ∂ x 2 = f ′ ′ ( x ) = f ( x + 1 ) + f ( x − 1 ) − 2 f ( x ) {∂^2f\over ∂x^2} = f''(x) = f(x+1) + f(x-1) - 2f(x) x22f=f′′(x)=f(x+1)+f(x1)2f(x)

3. 导数与图像特征关系

      ① 一阶导数通常在图像中产生较粗的边缘。
      ② 二阶导数对精细细节,如细线、孤立点和噪声有较强的响应。
      ③ 二阶导数在灰度斜坡和灰度台阶过渡处会产生双边缘响应。
      ④ 二阶导数的符号可用于确定边缘的过渡是从亮到暗还是从暗到亮。



二、孤立点的检测

      孤立点的检测以二阶导数为基础,这意味着使用拉普拉斯算子(详细可见空间域滤波器):
∇ 2 f ( x , y ) = f ( x + 1 , y ) + f ( x − 1 , y ) + f ( x , y + 1 ) + f ( x , y − 1 ) − 4 f ( x , y ) \nabla^2f(x,y) = f(x+1,y) + f(x-1,y) + f(x,y+1) + f(x,y-1) - 4f(x,y) 2f(x,y)=f(x+1,y)+f(x1,y)+f(x,y+1)+f(x,y1)4f(x,y)      输出是使用如下表达式得到的:
g ( x , y ) = { 1 , ∣ R ( x , y ) ≥ T | 0 , 其他 g(x,y) = \begin{cases}1, & \text {$|R(x,y) \geq T$|} \\ 0, & \text{其他} \end{cases} g(x,y)={ 1,0,R(x,y)T|其他式中, g g g 是输出图像, T T T 是一个非负的阈值, R R R 由上式的拉普拉斯算子给出。从直观上看,这一概念是一个孤立点的灰度将完全不同于其周围像素的灰度,因而,使用这种类型的模板可很容易地检测出这个孤立点。



三、线检测

      复杂度更高的检测是线检测。对于线检测,可以预期二阶导数将导致更强的响应,并产生比一阶导数更细的线。我们可以使用拉普拉斯算子,另外,必须适当处理二阶导数的双线效应,这里可以使用拉普拉斯的正值实现。
      通常,我们的兴趣在于检测特定方向的线,对于不同方向的线,我们可以使用以下模板(其中角度是相对于正x轴度量的角度):
在这里插入图片描述



四、边缘检测

1. 边缘模型

      边缘检测基于灰度突变。边缘的三种模型分别为:台阶模型、斜坡模型、屋顶边缘模型,如图1所示:
在这里插入图片描述

图1    从左到右分别为台阶模型、斜坡模型、屋顶边缘模型(理想表示)以及它们的相应灰度剖面

      一阶导数的幅度可用于检测图像中的某个点处是否存在一个边缘(存在边缘则导数不为0);二阶导数的符号可用于确定一个边缘像素是位于该边缘的暗测还是位于该边缘的亮侧(正为暗、负为亮)。
      围绕一条边缘的二阶导数有两个附加性质:① 对图像中的每条边缘,二阶导数生成两个值(一个不希望的特点);② 二阶导数的零交叉点可用于定义粗边缘的中心,具体见图2。
在这里插入图片描述

图2    由一条理想垂直边缘分开的两个恒定灰度区域;边缘附近的细节,显示了一个水平灰度剖面及其一阶导数和二阶导数

      执行边缘检测有以下三个步骤:
① 为降噪对图像进行平滑处理。
② 边缘点的检测。这是一个局部操作,从一幅图像中提取所有的点,这些点是变为边缘点的潜在候选者。
③ 边缘定位。这一步的目的是从候选边缘点中选择组成边缘点集合的真实成员。
      以下讨论实现这三个步骤的一些技术。

2. 基本边缘检测

以下边缘检测使用一阶导数。
① Roberts算子
      Roberts算子以求对角像素之差为基础,该算子用于识别对角线方向的边缘:
g x = ( z 9 − z 5 )    和    g y = ( z 8 − z 6 ) g_x = (z_9 - z_5)\ \ \ 和\ \ \ g_y = (z_8 - z_6) gx=(z9z5)      gy=(z8z6)      模板如下图所示:
在这里插入图片描述

② Prewitt算子
      Prewitt算子使用以 z 5 z_5 z5 为中心的 3 × 3 3\times 3 3×3 邻域对 g x g_x gx g y g_y gy 的近似如下式所示:
g x = ( z 7 + z 8 + z 9 ) − ( z 1 + z 2 + z 3 ) g_x = (z_7 + z_8 + z_9) - (z_1 +z_2 +z_3) gx=(z7+z8+z9)(z1+z2+z3) g y = ( z 3 + z 6 + z 9 ) − ( z 1 + z 4 + z 7 ) g_y = (z_3 + z_6 + z_9) - (z_1 +z_4 +z_7) gy=(z3+z6+z

  • 6
    点赞
  • 87
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值