Coursera自动驾驶课程第9讲:Visual Features Detection Description and Matching
在上一講《Coursera自動駕駛課程第8講:Basics of 3D Computer Vision》中我們學習了計算機視覺基本知識。
本講我們將學習計算機視覺中的視覺特征模塊。
B站視頻鏈接:https://www.bilibili.com/video/BV1PE411D72p
文章目錄
- 1. Introduction to Image features and Feature Detectors
- 1.1 Overview
- 1.2 Points of Interest
- 1.3 Feature Extraction
- 2. Image Feature Descriptors
- 2.1 Feature Descriptors
- 2.2 Designing Invariant Descriptors: SIFT (重點)
- 3. Feature Matching (重點)
- 3.1 Overview
- 3.2 Distance Function
- 3.3 Brute Force Feature Matching
- 4. Handing Ambiguity in Matching
- 4.1 Overview
- 4.2 Distance Ratio
- 4.3 Updated Feature Matching
- 5. Outlier Rejection
- 5.1 Image Features: Localization
- 5.2 Random Sample Consensus (RANSAC)
- 5.3 Image Features: Localization (Updated)
- 6. Visual Odometry
- 6.1 Overview
- 6.2 Problem Formulation
- 6.3 Visual Odometry (重點)
1. Introduction to Image features and Feature Detectors
1.1 Overview
視覺特征可用于跟蹤目標的運動并識別目標在地圖中的位置。 本講將會介紹如何通過一系列圖像來檢測和跟蹤特征,以及如何與其他來源融合以進行定位。
我們以一個實際的應(yīng)用程序來開始,即圖像拼接來描述此過程。 我們從兩個不同的相機獲得了兩張圖像,我們希望將它們縫合在一起以形成全景。
- 首先,我們需要識別圖像中的特殊點。 我們稱這些點為圖像特征。
- 其次,我們?yōu)槊總€特征從其鄰域關(guān)聯(lián)一個描述。
- 最后,我們使用這些描述在兩個或多個圖像上匹配特征。
1.2 Points of Interest
我們開始定義圖像特征的真正含義。特征是圖像中的興趣點。興趣點通常有以下特征:
- 獨特的,可識別的,并且與鄰區(qū)域所不同。
- 可重復(fù)的。這意味著我們應(yīng)該能夠從同一場景的兩個獨立圖像中提取相同的特征。
- 局部的。這意味著,如果遠離緊鄰區(qū)域的圖像區(qū)域發(fā)生變化,則要素不應(yīng)改變。
- 特征應(yīng)該在圖像中豐富。這是因為許多應(yīng)用需要最少數(shù)量的獨特點才能有效執(zhí)行。
- 最后,生成特征不需要大量的計算。
1.3 Feature Extraction
如左圖所示,在進行特征提取時往往有幾點是需要考慮的。
- 重復(fù)紋理較少的地方往往很難定位。
- 具有較大對比度變化的色塊(在漸變較大的地方)更容易定位,但是沿特定圖像邊緣的色塊可能仍然令人困惑。例如,同一車道標記邊緣上的兩個紅色矩形看起來非常相似。同樣,這些位置具有挑戰(zhàn)性,很難用作特征。
- 定位圖像的最簡單概念是角落。當在至少兩個明顯不同的方向上的梯度較大時,會出現(xiàn)拐角。角落的示例以紅色矩形顯示。
現(xiàn)在我們來看看常用的特征檢測算法:
- 最著名的檢測算法是哈里斯拐角檢測器,它使用圖像梯度信息來識別在xxx和yyy方向上強度變化很大的像素。但是,Harris拐角檢測器檢測到的拐角不是比例不變的,這意味著拐角的外觀可能會有所不同,具體取決于相機與生成拐角的對象的距離。為了解決這個問題,研究人員提出了Harris-Laplace角檢測器。
- Harris-Laplace檢測器可檢測不同比例的拐角,并根據(jù)圖像的拉普拉斯算子選擇最佳比例。
- 此外,研究人員還能夠通過機器學習角點。快速角檢測器是一種杰出的算法,由于其非常高的計算效率和可靠的檢測性能,因此是最常用的特征檢測器之一。
- 還有例如高斯的拉普拉斯算子檢測器等。我們在這里不會深入討論這些檢測器,因為它們代表了正在進行研究的復(fù)雜領(lǐng)域,但是我們可以輕松地使用各種特征提取器。多虧了像OpenCV這樣強大的開源實現(xiàn)。
現(xiàn)在,讓我們看看這些檢測器的一些示例。在這里,您可以看到哈里斯角落探測器檢測到的角落。
這些功能主要捕獲預(yù)期的拐角,在此可見強烈的照明變化。在這里,您可以在同一張圖片上看到Harris-Laplace特征。通過使用拉普拉斯算子來確定比例,我們可以檢測變角,這些變角在車輛相對于場景移動時更容易匹配。比例尺是通過每個要素周圍的圓圈大小來表示的。圓圈越大,該要素的比例越大。
2. Image Feature Descriptors
2.1 Feature Descriptors
讓我們開始定義什么是特征描述符。在數(shù)學上,我們通過特征點在圖像中的坐標uuu和vvv來定義。我們將描述符fff描述為與每個特征相關(guān)的nnn維向量。描述符的任務(wù)是在特征本身附近提供圖像信息的summaty,可以采用多種形式。
與特征檢測器的設(shè)計相似,我們還具有描述符設(shè)計所需的一些有利特征,以實現(xiàn)可靠的特征匹配。
- 與特征檢測器一樣,描述符應(yīng)該是可重復(fù)的,這意味著無論位置,比例和照明如何變化,兩個圖像中相同的興趣點都應(yīng)具有大致相同的描述符。
- 特征描述符的第二個重要特征是獨特性。
- 最后,描述符應(yīng)該緊湊且有效地進行計算。這是因為我們通常需要對自動駕駛應(yīng)用程序進行實時匹配。
2.2 Designing Invariant Descriptors: SIFT (重點)
已經(jīng)開發(fā)出多種有效的描述符用于特征匹配。因此,讓我們看一下有關(guān)單個特征描述符設(shè)計的案例,以使您對描述符的工作有所了解。我們將描述如何計算由David Lowe在1999年專門設(shè)計的變速SIFT描述符。計算過程如下:
- 給定圖像中的特征,移位描述符在其周圍占據(jù)16 x 16像素的窗口,我們將此窗口稱為特征局部鄰域。
- 然后,我們將此窗口分為四個4×4單元格,以便每個單元格包含16個像素。
- 接下來,我們使用梯度濾波器,計算每個像素的邊緣和邊緣方向。
- 為了使描述符穩(wěn)定,我們使用預(yù)定義的閾值抑制了弱邊緣,因為它們的方向可能會發(fā)生很大變化,而圖像之間的噪聲很小。
- 最后,我們?yōu)槊總€單元格計算方向的32維直方圖。并將所有四個單元格的直方圖連接起來,以獲得針對當前特征的最終128維直方圖,我們稱此直方圖為描述符。
SIFT是人為設(shè)計的特征描述符的一個示例,并且在許多最新系統(tǒng)中使用。通常會在多個比例和方向上進行計算,以獲得更好的比例和旋轉(zhuǎn)不變性。最后,當與尺度不變特征檢測器(例如高斯檢測器的差)結(jié)合使用時,它會生成高度健壯的特征檢測器和描述符對。
值得一提的是,關(guān)于特征檢測器和描述符的文獻很多。例如,SURF描述使用與SIFT類似的概念,但計算速度明顯更快。文獻中還存在許多其他變體,包括GLOH描述符,BRIEF和ORB描述符。
這里有很多首字母縮寫詞要記住,但是不用擔心,我們不希望您記住所有這些。但是您可以在可用于開源計算機視覺庫的實現(xiàn)中看到它們。現(xiàn)在,我們已經(jīng)完成了關(guān)于特征檢測器和描述符的討論。盡管討論的大多數(shù)算法都具有開源實現(xiàn),但SIFT和SURF之類的專利已獲得專利,未經(jīng)作者批準,不得在商業(yè)上使用。
3. Feature Matching (重點)
3.1 Overview
這里有一個特征匹配問題的例子。 給定一個特征及其在圖像1中的描述符,我們想嘗試在圖像2中找到該特征的最佳匹配。 那么如何解決這個問題呢? 匹配問題的最簡單解決方案稱為暴力特征匹配,描述如下。
- 首先,定義距離函數(shù)ddd,該距離函數(shù)比較兩個特征fif_ifi?和fjf_jfj?的描述符,并定義二者之間的距離。 兩個描述符彼此之間越相似,則它們之間的距離越小。
- 其次,對于圖像1中的每個特征fif_ifi?,我們應(yīng)用距離函數(shù)ddd來計算圖像2中每個特征fjf_jfj?的距離。
- 最后,我們將返回圖像2中稱為fcf_cfc?的特征,并將其與圖像1中特征fif_ifi?的最小距離作為匹配。
3.2 Distance Function
下面介紹一些常見的距離函數(shù):
- 用于比較描述符的最常見距離函數(shù)是平方和(SSD)。 平方項懲罰兩個描述符之間的變化,使其對描述符中的大變化敏感,但對較小的變化不敏感。
- 其他距離函數(shù)(如絕對差(SAD))也是可行的替代方法, 絕對差之和等于均等地懲罰所有變化。
- Hamming Distance用于二進制特征,對此所有描述符元素都是二進制值。
3.3 Brute Force Feature Matching
下面我們看幾個特征匹配的例子,第一種情況,看看我們的暴力匹配器在實際中是如何工作的。考慮黃色邊框內(nèi)的特征。
為簡單起見,此功能具有一個二維描述符,我們將其稱為f1f_1f1?。讓我們計算f1f_1f1?和圖像2中第一個特征之間的距離,我們將其標記為f2f_2f2?。得到的SSD值為9。然后,我們計算f1f_1f1?和圖像2中第二個特征之間的距離,我們將其標記為f3f_3f3?。在這里,我們得到的SSD值為652。現(xiàn)在,我們可以對第二張圖像中的所有其他特征重復(fù)此過程,最終我們選擇特征f2f_2f2?作為我們的匹配項,因為它與f1f_1f1?的距離最小。
現(xiàn)在,讓我們考慮第二種情況,即特征檢測器嘗試匹配圖像一中的特征,而在圖像二中沒有相應(yīng)的特征。讓我們看看當特征檢測器遇到這種情況時,暴力方法會做什么。按照與之前相同的步驟,我們在圖像1中特征f1f_1f1?的描述符和圖像2中所有特征的描述符之間計算SSD。得出f2f_2f2?的得分最低。雖然為441,它仍然與原始圖像中的f1f_1f1?特征描述符完全不同。最終f2f_2f2?為我們的最佳匹配。顯然,這是不正確的。因為特征f1f_1f1?與場景中的特征f2f_2f2?不是相同的興趣點。那么如何解決這個問題呢?我們可以通過設(shè)置距離閾值δ\deltaδ來解決此問題。這意味著,即使圖像2中任何特征距f1f_1f1?的距離都大于δ\deltaδ,也不會被視為匹配。
現(xiàn)在,讓我們用閾值更新蠻力匹配算法。我們通常根據(jù)經(jīng)驗定義δ\deltaδ,它取決于應(yīng)用程序和所使用的描述符。再次,我們定義距離函數(shù)以量化兩個特征描述符的相似性。我們?yōu)榭??接受的匹配設(shè)置了最大距離閾值δ\deltaδ。然后,對于圖像1中的每個特征,我們計算到圖像2中每個特征的距離,并將最短距離作為最可能的匹配項。
當我們要匹配的特征數(shù)量較少時,暴力匹配是可行的。當特征數(shù)量增大時,使用特殊數(shù)據(jù)結(jié)構(gòu)(例如k-d樹)來加速匹配。不過好在OpenCV都已經(jīng)提供了其實現(xiàn)。
4. Handing Ambiguity in Matching
4.1 Overview
我們先回顧幾個特征匹配的例子。第一種情況下,我們有一個有效的特征f1f_1f1?,第二個圖片中匹配的特征為f2f_2f2?。
第二種情況,在圖像2中無法找到與圖像1中相匹配地描述符。在這種情況下,我們使用`閾修改了暴力匹配算法,以消除不正確的匹配。由于特征和圖像兩者的距離都大于距離閾值δ\deltaδ,因此暴力匹配器將特征f2f_2f2?和f3f_3f3?都拒絕為潛在匹配,并且不返回任何匹配。
但是,讓我們考慮第三種情況,我們再次嘗試將圖像1中的特征f1f_1f1?與圖像2中的對應(yīng)特征進行匹配。利用此處提供的特征向量,特征f1f_1f1?與特征$f_2$2的SSD值為9。另一個特征f3,SSD值仍為9。這兩個特征都具有小于 δ\deltaδ的SSD(在這種情況下為20),兩者都是有效的匹配。我們該怎么辦呢?
4.2 Distance Ratio
對第三種情況,我們將特征fif_ifi?稱為具有模糊匹配的特征。 David Lowe在1999年提出了一個解決該問題的精巧解決方案。解決方案如下。
- 首先,我們計算特征fif_ifi?與圖像2中的所有特征fjf_jfj?之間的距離。
- 我們選擇圖像2中的特征fcf_cfc?,為與特征fif_ifi?為最接近的匹配特征。
- 然后,我們繼續(xù)選取特征fsf_sfs?,即與fif_ifi?第二接近的特征。
- 最后,我們發(fā)現(xiàn)最接近的匹配fcf_cfc?比我們的第二接近的匹配fsf_sfs?接近多少。這可以通過距離比來完成,其公式為:
0≤d(fi,fc)d(fi,fs)≤10 \leq \frac{d\left(f_{i}, f_{c}\right)}{d\left(f_{i}, f_{s}\right)} \leq 10≤d(fi?,fs?)d(fi?,fc?)?≤1
如果距離比接近于1,則意味著根據(jù)我們的描述符和距離函數(shù),fif_ifi?匹配fsf_sfs?和fcf_cfc?。在這種情況下,我們不想在以后的處理中使用此匹配項,因為我們的匹配器顯然不知道圖像2中的哪個位置對應(yīng)于圖像1中的特征。
4.3 Updated Feature Matching
讓我們用距離比公式更新暴力匹配算法。
將距離替換為距離比,作為我們保持匹配的指標。 通常,我們將距離比閾值設(shè)置為0.5左右,這意味著我們要求最佳匹配至少要比初始特征描述符的第二最佳匹配接近兩倍。
5. Outlier Rejection
5.1 Image Features: Localization
定位問題定義如下:從不同的角度給出同一場景的任意兩個圖像,找到第一幅圖像的坐標系(以紅色顯示)和第二幅圖像的綠色系之間的平移T。 要解決此定位問題,我們需要執(zhí)行以下步驟。
- 首先,我們需要找到圖像1在圖像2的uuu圖像軸上的位移。 我們稱這個位移為tut_utu?。
- 其次,我們需要在圖像2的vvv軸上找到圖像1的位移,我們將其稱為位移tvt_vtv?。
- 最后求解最能使這些匹配特征對齊的位移。
我們首先從圖像1和圖像2中計算特征及其描述符開始。首先,讓我們根據(jù)匹配特征從數(shù)學上定義問題的解決方案。
我們將圖像1和圖像2中的特征對表示為fi(1)f^{(1)}_ifi(1)?和fi(2)f^{(2)}_ifi(2)?。其中iii介于0和NNN之間,即我們的匹配算法返回的特征對總數(shù)。特征對中的每個特征均由其像素坐標uiu_iui?和viv_ivi?表示。請注意,在應(yīng)用平移之后,圖像中的每個像素應(yīng)與圖像2中的相應(yīng)像素重合。然后,我們可以使用特征對轉(zhuǎn)換進行建模,轉(zhuǎn)換公式為:
ui(1)+tu=ui(2)vi(1)+tv=vi(2)u_{i}^{(1)}+t_{u}=u_{i}^{(2)} \\v_{i}^{(1)}+t_{v}=v_{i}^{(2)}ui(1)?+tu?=ui(2)?vi(1)?+tv?=vi(2)?
通過模型參數(shù)tut_utu?和tvt_vtv?將圖像1平移到圖像2中的相應(yīng)位置。這里,所有特征的平移都是相同的,我們假設(shè)剛體運動。
然后使用最小二乘估計。最小二乘求解是tut_utu?和tvt_vtv?的值,該值最小化所有像素對之間的平方誤差之和。現(xiàn)在我們已經(jīng)定義了定位問題。
讓我們返回特征匹配的結(jié)果。通過視覺觀察特征位置,可以看到紫色圓圈中的特征對實際上是不正確的匹配。即使使用距離比方法,也會發(fā)生這種情況,這在特征匹配中很常見。我們稱此類特征對為離群值(outlier)。
5.2 Random Sample Consensus (RANSAC)
讓我們看看是否可以識別這些離群值,并避免在最小二乘求解中使用它們。可以使用稱為RANSAC的基于模型的異常值排除方法來處理異常值。由Martin Fischler和Robert Bolles于1981年開發(fā)。
RANSAC算法的過程如下:
- 首先,給定一個用于從一組數(shù)據(jù)點中識別問題解決方案的模型,找到計算該模型的參數(shù)所需的最小數(shù)量的數(shù)據(jù)點或樣本。在我們的案例中,模型參數(shù)是最小二乘解的tut_utu?和tvt_vtv?。
- 其次,從數(shù)據(jù)中隨機選擇MMM個樣本。
- 第三,僅使用從數(shù)據(jù)集中選擇的MMM個樣本來計算模型參數(shù)。
- 第四,使用計算出的參數(shù)并計算剩余多少數(shù)據(jù)點與此計算出的解決方案相符。并將其稱為內(nèi)部值。
- 第五,如果CCC大于內(nèi)部閾值,或者算法已迭代超過預(yù)設(shè)的最大迭代數(shù),則終止并返回計算出的解和內(nèi)線集。否則,返回第二步并重復(fù)。
- 最后,重新計算并從最佳內(nèi)部值集返回模型參數(shù)。
5.3 Image Features: Localization (Updated)
要估計tut_utu?和tvt_vtv?,我們需要一對特征。現(xiàn)在,讓我們通過RANSAC算法來解決這個問題。
-
首先,我們從匹配的樣本中隨機選擇一個特征對。
-
現(xiàn)在,我們需要使用計算出的特征對來估計模型。使用特征對,我們計算沿uuu圖像軸的位移tut_utu?和沿vvv圖像軸的位移tvt_vtv?。
現(xiàn)在,我們需要通過計算內(nèi)部數(shù)來檢查我們的模型是否有效。在這里,我們使用公差來確定內(nèi)部值,因為我們不太可能以100%的精度滿足模型。不幸的是,我們的第一次迭代選擇了較差的特征匹配來計算模型參數(shù)。當使用該模型計算圖像一中有多少特征轉(zhuǎn)換為圖像二中它們的匹配位置時,我們注意到它們都沒有。由于我們的內(nèi)部數(shù)為零,因此我們返回并隨機選擇另一個特征對,然后重新啟動RANSAC流程。
我們使用新的隨機采樣特征對來獲得新的模型參數(shù)。這次我們選擇兩個特征來計算模型參數(shù), 這次我們可以看到大多數(shù)特征實際上都適合此模型。 實際上,在12個特征中有11個被視為內(nèi)部特征。 由于我們的大多數(shù)功能都是inliers,因此我們對此模型感到滿意,并且可以停止RANSAC算法。
使用特征匹配時,離群值移除是提高魯棒性的關(guān)鍵過程,并且可以大大提高定位結(jié)果的質(zhì)量。
6. Visual Odometry
6.1 Overview
視覺里程計可以定義為通過檢查車載攝像機圖像上的運動變化來逐步估計車輛姿態(tài)的過程。
下面是視覺里程計的優(yōu)勢:
- 視覺里程計不會受車輪打滑地影響。
- 并且與車輪里程計相比,能夠產(chǎn)生更準確的軌跡。這是因為可從圖像獲得更多信息。但是,我們通常無法從單個攝像機估計絕對姿態(tài)。這意味著需要通過調(diào)整兩個圖像之間的相對運動估算。
因此我們就得到了視覺里程計的劣勢:
- 通常我們需要至少一個附加地傳感器,如第二個攝像頭或慣性測量單元,以便在使用VO時能夠提供精確縮放的軌跡。
- 此外,攝像機對極端的光照變化敏感,因此很難在夜間以及有前燈和路燈的情況下進行VO。
- 最后,從其他里程計估計機制可以看出,隨著VO估計誤差的累積,來自VO的姿態(tài)估計將始終隨時間漂移。因此,我們經(jīng)常將VO性能表示為單位行駛距離的百分比誤差。
6.2 Problem Formulation
讓我們以數(shù)學方式定義視覺里程計問題。 給定兩個連續(xù)的圖像幀Ik?1I_{k-1}Ik?1?和IkI_kIk?,我們想估計由平移TTT和兩個幀之間的旋轉(zhuǎn)RRR定義的變換矩陣TkT_kTk?。
當我們有連續(xù)的mmm幀圖像時,我們能夠恢復(fù)相機的全部軌跡,由于相機被固定在自動駕駛汽車上,這也代表了車輛軌跡的估計。
6.3 Visual Odometry (重點)
現(xiàn)在,我們來描述視覺里程計處理的一般過程。 給定兩個連續(xù)的圖像幀,IkI_kIk?和Ik?1I_{k-1}Ik?1?,我們想估計這兩個幀之間的變換TkT_kTk?。
- 首先,我們進行特征檢測和描述。 我們最終得到一組特征fkf_kfk?和fk?1f_{k-1}fk?1?,然后,我們進行特征匹配。
- 之后,我們使用匹配的特征來估計由變換TkT_kTk?表示的兩個攝像機幀之間的運動。
- 最后,我們擴展到多個幀進行定位優(yōu)化。
運動估計是VO中最重要的一步,它將成為本課程的主題。我們執(zhí)行運動估計步驟的方式取決于我們擁有哪種類型的特征表示。
- 在2D?2D2D-2D2D?2D運動估計中,兩個幀中的特征匹配僅在圖像坐標中描述。這種視覺測距法非常適合跟蹤圖像框中的對象。例如,這對于攝像中的視覺跟蹤非常有用。
- 在3D?3D3D-3D3D?3D運動估計中,特征匹配在世界3D坐標系中描述。這種方法需要能夠在3D3D3D空間中定位新的圖像特征,因此與深度相機,立體相機和其他可提供深度信息的多相機配置一起使用。
- 3D?2D3D-2D3D?2D運動估計,其中在3D3D3D世界坐標中特征為fk?1f_{k-1}fk?1?,而在圖像坐標中指定對應(yīng)投影為fkf_kfk?。
下面介紹3D?2D3D-2D3D?2D運動估計的方法。已知在k?1k-1k?1幀中圖像特征和其對應(yīng)3D3D3D坐標,通過特征匹配,我們還可以在新幀kkk中獲得相同特征的2D2D2D圖像坐標。
我們希望使用此信息來估計兩個相機幀之間的旋轉(zhuǎn)矩陣RRR和平移矢量ttt。這會讓您想起我們以前學到的東西嗎?如果您正在考慮相機標定,那是正確的。實際上,我們也使用與在視覺里程計中進行標定所使用的投影幾何方程式相同的方法。標定和VO之間要注意的簡化區(qū)別是,照相機固有內(nèi)參矩陣k是已知的。因此,我們不必再次解決它。現(xiàn)在,我們的問題簡化為使用所有匹配特征構(gòu)建的方程組對變換分量RRR和ttt進行估計。
求解旋轉(zhuǎn)矩陣和平移向量的一種常用算法是PNP算法。給定3D3D3D中的特征位置,中其對應(yīng)的2D2D2D投影以及相機固有標定矩陣kkk,PnP算法處理流程如下:
- 首先,PnP使用直接線性變換來求解RRR和ttt的初始值。用于估計RRR和ttt的DLT方法需要一個線性模型,并構(gòu)建一組線性方程式,以使用諸如SVD進行求解。
- 在下一步中,我們將使用迭代非線性優(yōu)化技術(shù)(例如Luvenburg Marquardt方法)來優(yōu)化我們的解決方案。
- PnP算法至少需要三個特征點才能求解RRR和ttt。當僅使用三個特征時,將得出四個可能的解決方案,因此,將使用第四個特征點來確定哪個解決方案最有效。
- 最后,通過假設(shè)PnP在四個點上求解的結(jié)果是我們想要的,可以將RANSAC算法合并到PnP中。然后,我們選擇所有特征匹配的子集來評估該模型,并計算內(nèi)在點百分比以確認所選點匹配的有效性。
實現(xiàn)VO算法時,還有許多有趣的細節(jié)需要考慮。幸運的是,PnP算法在OpenCV中已經(jīng)得到實現(xiàn)了。實際上,OpenCV甚至包含一個帶有RANSAC的PnP版本,以實現(xiàn)異常排除。
總結(jié)
以上是生活随笔為你收集整理的Coursera自动驾驶课程第9讲:Visual Features Detection Description and Matching的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 招行信用卡宽限期是几天 宽限期是最后的安
- 下一篇: lao.exe是什么进程 有什么用 la