1. 程式人生 > 實用技巧 >【轉載】OpenCV-Python系列之理解特徵(四十四)

【轉載】OpenCV-Python系列之理解特徵(四十四)

上個教程結束,標誌著OpenCV的影象處理部分已經結束,從本次教程開始,我們開始討論影象的特徵問題,這是一個龐大的體系,它決定了後面目標識別的基礎,本次我們先來理解影象的特徵問題。

我們大多數都會玩拼圖遊戲。會得到很多小圖片,我們需要正確地將它們組裝起來才能形成一個大的真實影象。問題是,這是如何做到的?如何將相同的理論投射到電腦程式中,讓電腦可以玩拼圖遊戲?如果電腦可以玩拼圖遊戲,為什麼我們不能給計算機提供很多真實的自然風景影象,並告訴它將所有這些影象拼接成一個大的影象?如果計算機可以將幾張自然影象拼接成一張,那麼給建築物或任何結構提供大量圖片並告訴計算機從中建立3D模型呢?

那麼,這些問題和想象力還在繼續。但這一切都取決於最基本的問題,我們如何玩拼圖遊戲?如何將大量的影象拼湊成一個大的單一的影象?怎樣才能將很多自然影象拼接成單一影象?

答案是,我們正在尋找特定的模式或特定的功能,這些模式或功能是獨一無二的,可以輕鬆跟蹤,並且可以輕鬆進行比較。如果我們去定義這樣一個特徵,我們可能會發現用文字表達它很困難,但是我們知道它們是什麼。如果有人要求指出一個可以在多個影象上進行比較的優秀特徵,則可以指出一個特徵。這就是為什麼小孩子也能玩這些遊戲的原因。我們在影象中搜索這些特徵,找到它們,在其它影象中找到相同的特徵,並對齊它們而已。

所以我們的一個基本問題擴大到數量上,但變得更具體。這些功能是什麼?

那麼,很難說人類如何找到這些特徵。它已經在我們的大腦中程式設計了。但如果我們深入研究一些圖片並尋找不同答案,我們會發現一些有趣的東西。

例如,如下影象:

在這裡插入圖片描述

影象非常簡單。在影象的頂部,給出了六個小影象補丁。我們的問題是要在原始影象中找到這補丁的確切位置。最終可以找到多少正確的結果?

A和B是平坦的表面,它們分佈在很多區域。 很難找到這些補丁的確切位置。

C和D要簡單得多。它們是建築物的邊緣。 我們可以找到一個大概的位置,但確切的位置仍然很困難。 這是因為,沿著邊緣,到處都是一樣的。 正常到邊緣,它是不同的。 所以與平坦區域相比,邊緣是一個更好的特徵,但是還不夠好(對於比較邊緣的連續性,它在拼圖遊戲中很好)。

最後,E和F是建築物的一些角落。 他們很容易被發現。 因為在角落裡,無論怎麼移動這個補丁,它看起來都不一樣。所以他們可以被認為是一個很好的特徵。 所以現在我們轉向更簡單(並廣泛使用的影象)以便更好地理解。

在這裡插入圖片描述

就像上面一樣,藍色斑塊是平坦的區域,很難找到和跟蹤。無論怎麼移動藍色補丁,它看起來都一樣。對於黑色補丁,這是一個優勢。如果沿垂直方向(即沿著梯度)移動它,它會發生變化。沿邊緣(平行於邊緣)看起來是一樣的。對於紅色補丁,它是一個角落。無論在哪裡移動補丁,它看起來都不一樣,意味著它是獨一無二的。所以基本上,角落被認為是影象中的優秀特徵。(不僅僅是角落,在某些情況下,斑點被認為是很好的特徵)。

所以現在我們回答了我們的問題:“這些特徵是什麼?”。但下一個問題出現了。我們如何找到它們?或者我們如何找到角落?我們也以一種直觀的方式回答了問題,即尋找影象中周圍所有區域移動時(最小變化)的區域。這將在未來的章節中被投射到計算機語言中。因此找到這些影象特徵稱為特徵檢測。

所以我們找到了影象中的特徵。一旦找到它,應該在其他影象中找到相同的影象。我們所做的?我們在特徵周圍取一個區域,用我們自己的話來解釋它,例如“上半部分是藍天,下半部分是建築物區域,在那個建築物上有一些眼鏡等等”,然後在其他影象中搜索相同的區域。基本上,正在描述這個功能。類似的方式,計算機也應該描述該特徵周圍的區域,以便它可以在其他影象中找到它。所謂的描述稱為特徵描述。一旦我們有了這些特徵和描述,就可以在所有影象中找到相同的特徵並對齊它們,縫合它們或者做我們想做的任何事情。

下次教程,我們將詳述OpenCV中的特徵實現方法。

檢視文章彙總頁https://blog.csdn.net/weixin_44237705/article/details/107864965
更多openvino技術資訊可以入群交流~
申請備註:CSDN
在這裡插入圖片描述