SIFT演算子の概要

 

ディレクトリ

1.SIFTプロフィール

Aと1.1 SIFTアルゴリズム機能

1.2 SIFT特徴検出ステップ

2.尺度空間

以上2.1解像度画像ピラミッド

2.2ガウススケール空間

3.のDoG空間極値検出

4.削除悪い極端なポイント(特徴点)

除く4.1低コントラストの特徴点

4.2不安定なエッジ点の応答を除きます

特徴点の主方向が得られます。

6.機能の記述子生成

7.まとめ

8.のpython-OpenCVのコードが実行されます


1.SIFTプロフィール

SIFTは立っスケール不変に変換フィーチャーカナダの教授デビッドG.Loweが提示し、スケール不変機能変換を。SIFTのための機能、回転、スケール、ズーム、輝度変化が不変のままで、非常に安定している局所特徴

Aと1.1 SIFTアルゴリズム機能

  • 画像、回転、ズームスケールの局所的な特徴は、輝度変化が不変のままで、視野角の変化、アフィン変換は、ノイズ、安定性をある程度維持することです。
  • ユニークで優れた、高速かつ正確なマッチングのための大規模な特徴ライブラリのための情報の豊富な量です。
  • でも、非常にいくつかのオブジェクトの大量SIFT特徴を大量に生産すること
  • 高速、最適化されたSIFTマッチングアルゴリズムであっても、リアルタイムを実現することができます
  • 入学、簡単に他の特徴ベクトルと併せて行うことができます。

1.2 SIFT特徴検出ステップ

  • スケール空間極値検出:  スケール上の電位点を特定し、ガウス関数によって同じ金利差を選択するために、空間の全てのスケール上の画像を検索。
  • 特徴点は:  各候補の位置に細かいモデルをフィッティングキーで、場所を選択し、それらの寸法の安定度に基づいて決定されます。
  • 前記割り当ての方向:  局所画像勾配方向に基づいては、各キーの位置に割り当てられた一つ以上の方向は、後続のすべての操作は、これにより、これらの特徴の不変性を提供し、キーポイントの方向、大きさ及び位置への変換を行いました。
  • 特徴記述子:  各特徴点の周囲の近傍、選択されたスケールで画像の局所的な勾配を測定する、これらの勾配を表現に変換し、この表現は、比較的大きな局所的な形状変形変換およびライティングを可能にします。

     

2.尺度空間

一定の範囲内で、物体が大きいか小さいか、人間の目は違いを見分けることができます。しかし、コンピュータはとても簡単未知のシーンにおいて、コンピュータは、この方法は、異なるスケールでイメージオブジェクトが機械に供給さであることを特徴とする請求オブジェクトの視覚的なスケールの大きさを提供しないれていない同じ容量を持つ必要があり、機械とすることができます異なるスケールでの知識の統一されたボディを持っています。、我々が考慮すべき統一認識を確立する過程で異なるスケールの下で特徴画像が存在している点です。

以上2.1解像度画像ピラミッド

一般に初期画像ピラミッド表現のマルチスケール画像で使用されます。画像ピラミッドは、2つのステップを含む一般的プロセスを生成し、異なる解像度で同一の画像で得られた結果の集合です。

  1. 元の画像をスムージング
  2. (通常、水平1/2垂直)処理、ダウンサンプリング後の画像
    常にダウンサンプリングされた縮小画像のシリーズを得ました。明らかに、それぞれの層の従来のピラミッド画像は、画像の長さ上の層、各半高いです。多重解像度画像ピラミッド生成は簡単であるが、その性質は、ダウンサンプリングされている間、画像の局所的な特徴は、スケール不変特徴が維持できなくなること、維持することは困難です。

2.2ガウススケール空間

画像は、網膜上のプロセスを形成する場合、我々はまた、異なるガウシアンスケール空間で近いオブジェクトサイズが大きいから、よりぼやけた画像、画像のぼけ度によって使用されるパラメータを遠くから近くの物体の明白な範囲内の人体をシミュレートすることができ画像(同じの解像度)、それはスケール空間の別の現れです。

我々は、画像のガウス関数との畳み込み演算は、画像をぼかし度の違いで使用できるさまざまな「ガウスカーネル」を使用して画像をぼかすことができることを知っています。異なるそこガウス畳み込みであるAガウシアンスケール空間画像:

ここで、G(X、Y、σ)はガウスカーネル関数です。


σが大きく、その値よりぼやけた画像、より大きな対応するスケール、画像の程度を反映して、ぼやけたガウス正規分布の標準偏差であるスケール空間因子であると呼ばれます。L(X、Y、σ)は、ガウシアンスケール空間画像を表します。

スケールスペースを構築するために、異なるスケールで特徴点を検出することで存在し、特徴点を検出することが好ましい演算子である\デルタ^ {2} G、(ガウシアンのラプラシアン、ログ)

ログが良好な画像内の特徴点を検出することができる使用して、しかし計算は、一般的に使用して、過大である間のDoG(ガウス分布の違い、Gaussinaの差)近似的にlog [マー及びHidreth]を算出します。

セットK隣接する2つのガウススケールスペースのスケーリング係数、犬の定義:

ここで、L(X、Y、σは ) ガウススケール空間画像です。
上記式から知ることができ、隣接する二つのガウス空間サブトラクションの画像は、イヌの応答画像を取得します。犬の画像は共に基部、最初に構築ガウススケールスペースを得るために、ガウシアンスケール空間ピラミッドは、画像ピラミッドガウスぼかしパラメータσを用いて、各画像に対して異なるガウス・フィルタリングして得られたサンプリングされた画像、ダウンすることができますガウスの各層は、前の画像ボケのシートの複数のピラミッド。

隣接する層の各セットのガウシアンピラミッドの成功建設、後減算犬のピラミッドを得ることができます。


3.のDoG空間極値検出

それはより大きい(または未満)である場合、各画素及び隣接する全ての点を比較するのそれらの画像フィールド(同じスケール空間)とフィールドスケール(スケール空間に隣接する)のために、全相極値点スケールスペースを見つけるために近傍点が、ポイントは、極端なポイントを変更するときです。示されるように、中間点を検出し、その画素の3×3近傍8画像、及び隣接する画素18のその上部及び下部レベルの3×3の領域にあるように、26個のピクセルの合計を比較します。

上記の説明から、最初と最後の層は各極値の画像を得るために比較することはできないことは理解されよう。満足させるために連続スケール変換を、3枚の画像を生成するガウスぼかし画像の各セットの先頭に続きます。
しきい値検出器


4.削除悪い極端なポイント(特徴点)

離散空間に起因して得られた離散的な探索空間が、サンプリングされた連続的なスペースの結果であり、離散空間におけるように、極端な点は、必ずしも極値点の真の意味で発見されていない犬に得られた検出局所極値点を比較することによりそのためのポイントを取り除くしようとする条件を満たしていません。極端なポイントスケール空間ドッグ機能を見つけるためにカーブフィッティングは、このステップの性質は、除去することで、非常に非対称のDoGローカル曲率点
外に非対応のポイントを排除するために主に二つがあります。

  1. 低コントラストの特徴点
  2. 不安定点のエッジに応答して

除く4.1低コントラストの特徴点

4.2不安定なエッジ点の応答を除きます


特徴点の主方向が得られます。

上記の手順の後に特徴点が画像回転不変性、割り当てるべき特徴点の必要性の方向を実現するために、異なるスケールで存在することが見出されています。方向パラメータを決定し、次いで、勾配分布特徴点に隣接する画素を安定したキーポイントの局所構造を得る画像の勾配方向ヒストグラムとします。
特徴点を見つけ、それは特徴点スケールσを得ることができ、それは画像の特徴点スケール場所を得ることができます

中心と特徴点に基づいて、画像の3×1.5σ3×1.5σウェブ半径角及び振幅領域、各点L(x、y)は成形M(x、y)と勾配の方向θ( x、y)は、以下の会社によって決定することができます

计算得到梯度方向后,就要使用直方图统计特征点邻域内像素对应的梯度方向和幅值。梯度方向的直方图的横轴是梯度方向的角度(梯度方向的范围是0到360度,直方图每36度一个柱共10个柱,或者没45度一个柱共8个柱),纵轴是梯度方向对应梯度幅值的累加,在直方图的峰值就是特征点的主方向。在Lowe的论文还提到了使用高斯函数对直方图进行平滑以增强特征点近的邻域点对关键点方向的作用,并减少突变的影响。为了得到更精确的方向,通常还可以对离散的梯度直方图进行插值拟合。具体而言,关键点的方向可以由和主峰值最近的三个柱值通过抛物线插值得到。在梯度直方图中,当存在一个相当于主峰值80%能量的柱值时,则可以将这个方向认为是该特征点辅助方向。所以,一个特征点可能检测到多个方向(也可以理解为,一个特征点可能产生多个坐标、尺度相同,但是方向不同的特征点)。Lowe在论文中指出

15%的关键点具有多方向,而且这些点对匹配的稳定性很关键。

得到特征点的主方向后,对于每个特征点可以得到三个信息(x,y,σ,θ),即位置、尺度和方向。由此可以确定一个SIFT特征区域,一个SIFT特征区域由三个值表示,中心表示特征点位置,半径表示关键点的尺度,箭头表示主方向。具有多个方向的关键点可以被复制成多份,然后将方向值分别赋给复制后的特征点,一个特征点就产生了多个坐标、尺度相等,但是方向不同的特征点。


6. 生成特征描述

通过以上的步骤已经找到了SIFT特征点位置、尺度和方向信息,下面就需要使用一组向量来描述关键点也就是生成特征点描述子,这个描述符不只包含特征点,也含有特征点周围对其有贡献的像素点。描述子应具有较高的独立性,以保证匹配率
特征描述符的生成大致有三个步骤:

  1. 校正旋转主方向,确保旋转不变性。
  2. 生成描述子,最终形成一个128维的特征向量
  3. 归一化处理,将特征向量长度进行归一化处理,进一步去除光照的影响。

为了保证特征矢量的旋转不变性,要以特征点为中心,在附近邻域内将坐标轴旋转θθ(特征点的主方向)角度,即将坐标轴旋转为特征点的主方向。旋转后邻域内像素的新坐标为:

旋转后以主方向为中心取 8×8的窗口。下图所示,左图的中央为当前关键点的位置,每个小格代表为关键点邻域所在尺度空间的一个像素,求取每个像素的梯度幅值与梯度方向,箭头方向代表该像素的梯度方向,长度代表梯度幅值,然后利用高斯窗口对其进行加权运算。最后在每个4×4的小块上绘制8个方向的梯度直方图,计算每个梯度方向的累加值,即可形成一个种子点,如右图所示。每个特征点由4个种子点组成,每个种子点有8个方向的向量信息。这种邻域方向性信息联合增强了算法的抗噪声能力,同时对于含有定位误差的特征匹配也提供了比较理性的容错性。
記述子の生成
与求主方向不同,此时每个种子区域的梯度直方图在0-360之间划分为8个方向区间,每个区间为45度,即每个种子点有8个方向的梯度强度信息。
在实际的计算过程中,为了增强匹配的稳健性,Lowe建议

对每个关键点使用4×44×4共16个种子点来描述,这样一个关键点就可以产生128维的SIFT特征向量。
書き込み絵は、ここで説明しました

通过对特征点周围的像素进行分块,计算块内梯度直方图,生成具有独特性的向量,这个向量是该区域图像信息的一种抽象,具有唯一性。


7. 总结

SIFT特征以其对旋转、尺度缩放、亮度等保持不变性,是一种非常稳定的局部特征,在图像处理和计算机视觉领域有着很重要的作用,其本身也是非常复杂的,下面对其计算过程做一个粗略总结。

  1. DoG尺度空间的极值检测: 首先是构造DoG尺度空间,在SIFT中使用不同参数的高斯模糊来表示不同的尺度空间。而构造尺度空间是为了检测在不同尺度下都存在的特征点,特征点的检测比较常用的方法是Δ2G(高斯拉普拉斯LoG),但是LoG的运算量是比较大的,Marr和Hidreth曾指出,可以使用DoG(差分高斯)来近似计算LoG,所以在DoG的尺度空间下检测极值点。
  2. 删除不稳定的极值点:主要删除两类:低对比度的极值点以及不稳定的边缘响应点。
  3. 确定特征点的主方向:以特征点的为中心、以3×1.5σ为半径的领域内计算各个像素点的梯度的幅角和幅值,然后使用直方图对梯度的幅角进行统计。直方图的横轴是梯度的方向,纵轴为梯度方向对应梯度幅值的累加值,直方图中最高峰所对应的方向即为特征点的方向。
  4. 生成特征点的描述子: 首先将坐标轴旋转为特征点的方向,以特征点为中心的16×16的窗口的像素的梯度幅值和方向,将窗口内的像素分成16块,每块是其像素内8个方向的直方图统计,共可形成128维的特征向量。

     

8. python-opencv 代码执行

import numpy as np
import cv2

img = cv2.imread('img.jpg')
gray= cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)

sift = cv2.xfeatures2d.SIFT_create()
kp = sift.detect(gray,None)

img=cv2.drawKeypoints(gray,kp,img)

cv2.imshow('img',img)
cv2.waitKey()


 9.参考

发布了38 篇原创文章 · 获赞 98 · 访问量 36万+

おすすめ

転載: blog.csdn.net/xijuezhu8128/article/details/89922190