• 机器人学 —— 机器人视觉(特征)


      上回说到机器人视觉的核心任务是estimation,理论框架是射影几何理论。在之前的作业中展现了单应变换的巨大威力。然而,整个estimation 的首要条件是已知像素点坐标,尤其是多幅图中对应点的像素坐标。

      单幅图像的处理方法都是大路货了,不赘述。这篇博客想讲讲不变点检测与不变特征。由于机器人在不断运动,所以可能从不同方向对同一物体进行拍摄。而拍摄的距离有远近,角度有titled. 由于射影变换本身的性质,无法保证两幅图中的物体看上去一样。所以我们需要一种特征提取方法(特征点检测),能够保证检测是旋转,缩放不变的。除此之外还要一种特征描述方法,同样对旋转和缩放不变。

    1、SIFT特征提取

      SIFT特征提取可以分为以下几个步骤,1、多尺度卷积,2、构造金字塔,3、3D非极大值抑制

      多尺度卷积的作用是构造一个由近及远的图像。金字塔则由下采样进行构造。此部分见之前博客

      

      对于不同尺度的图像同一个像素,我们可以跟踪它“灰度”的变化。我们发现,如果某一点对不同 sigma 的模版响应是不同的,最大响应(卷积后的灰度)所对应的scale 成为该点本征scale。这有点像对一个机械结构给不同频率的激励,某一频率下会发生共振,我们可以记录此频率一定程度上代表了此结构(单摆频率只和ml有关,有了f就可以重现系统)。

      所以,我们只要找到一个合适的模版(激励方式),再找到最大响应,就可以获取图片中各个点的 Intrinsic Scale(本征尺度)。同一物体在不同距离拍摄后,都会统一在Intrinsic Scale下进行响应。由此解决了尺度不变的问题。

      3D非极大值抑制是指在某点的3*3*3邻域内,仅取最大响应,作为特征点。由于该点是空间邻域中响应最强的,所以该点也是旋转不变的。从各个方向看,该点响应最强。

    2、SIFT特征描述

      特征提取和特征描述实际上是两码事。在上一节中特征提取已经结束了。假如有两幅图片,那么相同的特征点肯定会被找到。特征描述的作用是为匹配做准备,其以特征点局部区域信息为标准,将两幅图中相同的特征点联系起来。特征的本质是一个高维向量。要求尺度不变,旋转不变。

      这里所使用的是HOG特征。特征描述可以分为两步:1、局部主方向确定,2、计算梯度直方图

      以sigma作为特征描述选择范围是一个合理的想法,因为sigma描述了尺度,特征点位置+尺度 = 特征点所代局部信息。在此基础上,统计其领域内所有像素的梯度方向,以方向统计直方图作为特征向量,至此完成HOG特征构造。重要的是,在统计方向之前,需要把图像主方向和X轴方向对齐。示意图如下:

      

      图中黄色的有点像时钟的东西是特征点+scale,指针代表该片小图像的主方向(PCA)。绿色的是直方图的bin,用于计算特征向量。

      最后,我们只要匹配特征向量就可以得到   图像1 --- 图像2  的对应点对,通过单应矩阵的计算就可以将两幅图拼接在一起。如果已知标定信息则可进行3D reconstruction.

     

    1 I = single(rgb2gray(I)) ;
    2 [f,d] = vl_sift(I) ;
    3 perm = randperm(size(f,2)) ;
    4 sel = perm(1:50) ;
    5 h1 = vl_plotframe(f(:,sel)) ;
    6 h2 = vl_plotframe(f(:,sel)) ;
    7 set(h1,'color','k','linewidth',3) ;
    8 set(h2,'color','y','linewidth',2) ;
    View Code

      

  • 相关阅读:
    day3:python测试题
    day4:Python列表(list)元组( tuple)字典(dict)
    day3:python运算符及数据类型(str)(int)
    2day:Python基础
    1day:了解python
    centos下安装storm
    Linux下添加,删除,修改,查看用户和用户组
    svn默认地址老发生改变,记下默认路径
    hive 遇到的问题及解决方法
    hadoop2.5.2 安装与部署
  • 原文地址:https://www.cnblogs.com/ironstark/p/5456769.html
Copyright © 2020-2023  润新知