特徵提取之旋轉不變性和尺度不變性的通俗理解

2021-10-03 21:52:04 字數 2295 閱讀 1050

特徵匹配(feature match)是計算機視覺中很多應用的基礎,比如說影象配準,攝像機跟蹤,三維重建,物體識別,人臉識別,所以花一些時間去深入理解這個概念是不為過的。本文希望通過一種通俗易懂的方式來闡述特徵匹配這個過程,以及在過程中遇到的一些問題。

首先我通過幾張來指出什麼是特徵匹配,以及特徵匹配的過程。

影象一:彩色圓圈為影象的特徵點

影象二:

影象一與影象二的匹配:

概念理解:什麼是特徵,什麼是特徵描述,什麼是特徵匹配

假設這樣的乙個場景,小白和小黑都在看乙個,但是他們想知道他們看的是否是同一幅,於是他們就通過**描述這個,來判斷是否是同乙個。比如說有下面兩個

對話1:

對話2:

小白:我的乙個特徵左邊是三角形,右邊是圓形,上面是菱形,下面是正方形。

小黑:我也有乙個特徵左邊是三角形,右邊是圓形,上面是菱形,下面是正方形。

對話3:

小白和小黑:那我們看到的就是同乙個特徵了。

上述三個對話其實分別代表這特徵提取,特徵描述和特徵匹配。

那麼來詳細的分析一下,我們的問題是要匹配兩張影象是否是同乙個影象,比較好的方法就是找出影象中特徵顯著的內容然後來進行比較,如果這些特徵都一致,那麼就有很高的概率稱他們為同乙個影象。所以首先第一步就是找出影象中特徵性強的內容(feature detect),上圖中特徵性強的就是五個紅色的圖案。但是只知道有顯著特徵沒用,必須知道兩張影象中的特徵是不是一致的,如何判斷特徵是不是一致的,就需要我們對這個特徵進行描述(feature descriptor),如果描述非常的相似或者說是相同,那麼就可以判斷為是同一特徵。那麼問題來了,該如何去描述乙個特徵,什麼樣的描述是乙個好的描述呢。從對話2中我們可以看出,描述乙個特徵其實就是描述特徵與他周圍內容的相互關係。那麼什麼樣的描述是乙個好的描述呢,就要提到我們為什麼要描述特徵了?我們描述特徵是為了能夠更好的匹配特徵,使得我們認為描述相同的特徵是同乙個特徵的是可信的(概率高的)。所以我們的描述必須是有代表性的,具有排他性的(discriminative),而不是模稜兩可泛泛而談的。最後我們就可以根據描述的相似性來判斷這對特徵是否是同乙個特徵。

特徵不變性的理解:

接下來我們將談一下特徵的不變性。我們用過很多特徵,harris corner、sift、surf、brief、brisk等,而特徵的乙個重要特性就是特徵不變性,常見的就是旋轉不變性和尺度不變性,還有一些具有仿射不變性的特徵。而這些特徵該怎麼理解呢?下面我就用通俗地解釋一下。

旋轉不變性:

再看下面兩張:

於是我們在看審視三個對話,你會發現對話2就改變了。

對話2:

小白:我的乙個特徵左邊是三角形,右邊是圓形,上面是菱形,下面是正方形。

小黑:我有乙個特徵左邊是正方形,右邊是菱形,上面是三角形,下面是圓形。

於是小黑和小白就認為他們看得並不是同乙個。但事實上他們看得確實是同一種。於是我們就說這種特徵不具有旋轉不變性。

那麼如何實現旋轉不變性呢,再看下面兩張:

然後我們再來審視對話2:

對話2:

小白:我的乙個特徵西邊是三角形,東邊是圓形,北邊是菱形,南邊是正方形。

小黑:我也有乙個特徵西邊是三角形,東邊是圓形,北邊是菱形,南邊是正方形。

這時候兩個特徵的描述就一致了,即擁有了旋轉不變性。所以只要對特徵定義方向,然後在同乙個方向上進行特徵描述就可以實現旋轉不變性。這稱之為rotation normalization。

尺度不變性

接下來談一下尺度不變性,依然看下面兩張:

對話2:

小白:我的乙個特徵東邊5個畫素的地方有個圓形。

小黑:我有乙個特徵東邊7個畫素的地方有個圓形。

這就是尺度變化造成的特徵不匹配,為了實現尺度不變性,就需要給特徵加上尺度因子,比如說小白看到的是尺度為5的,小黑看到的是尺度為7的,那麼在進行描述的時候,將尺度統一就可以實現尺度不變性了。這過程稱為scale normalization。

所謂的旋轉不變性和尺度不變性的原理,就是我們在描述乙個特徵之前,將兩張影象都變換到同乙個方向和同乙個尺度上,然後再在這個統一標準上來描述這個特徵。同樣的,如果在描述乙個特徵之前,將影象變換到同乙個仿射尺度或者投影尺度上,那麼就可以實現仿射不變性和投影不變性。分別稱為affine normalization 和 projected normalization.

總結:特徵匹配的方法是先找出特徵顯著的特徵點(feature detect),然後再分別描述兩個特徵點(feature descriptor),最後比較兩個描述的的相似程度來判斷是否為同乙個特徵(feature match)。而在特徵描述之前如果能夠做到確定特徵的方向,則可以實現旋轉不變性(rotation invarient),如果能確定尺度,則可以實現尺度不變性(scale invarient)。

ORB尺度不變性

尺度不變性是由構建影象金字塔,並在金字塔的每一層上檢測角點來實現的 高斯金字塔構建,為了讓尺度體現其連續性,高斯金字塔在簡單降取樣的基礎上加上了高斯濾波,將金字塔每層的一張影象使用不同引數做高斯模糊,使得金字塔的每層含有多張高斯模糊影象,將金字塔每層多張影象合稱為一組,金字塔每層只有一 像,組數和金...

卷積神經網路的旋轉不變性理解

卷積神經網路本身的設計對旋轉不變性沒有進行專門的考慮,只不過max pooling可以稍微補償一下這個功能,只是角度變化太大,可能會作用不大,但因為max pooling並不是為此而設計的,所以總體上說cnn提取旋轉不變的特徵能力是比較弱的。group equivariant convolution...

併發安全 final關鍵字和不變性

例子 person物件,age和name都不能再變 不可變的物件,演示其他類無法修改這個物件,public也不行 public class person 具有不變性的物件一定是執行緒安全的,我們不需要對其採取任何額外的安全措施,也能保證執行緒安全 早期 現在final修飾變數 final修飾 3種變...