OpenCV-Python 理解特徵 | 三十六

2020-02-02     人工智慧遇見磐創

目標

在本章中,我們將嘗試理解什麼是特徵,為什麼拐角重要等等

解釋

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

好了,問題和想像力還在繼續。但這全都取決於最基本的問題:你如何玩拼圖遊戲?你如何將許多被擾的圖像片段排列成一個大的單張圖像?你如何將許多自然圖像拼接到一張圖像上?

答案是,我們正在尋找獨特的,易於跟蹤和比較的特定模板或特定特徵。如果我們對這種特徵進行定義,可能會發現很難用語言來表達它,但是我們知道它們是什麼。如果有人要求你指出一項可以在多張圖像中進行比較的良好特徵,則可以指出其中一項。這就是為什麼即使是小孩也可以玩這些遊戲的原因。我們在圖像中搜索這些特徵,找到它們,在其他圖像中尋找相同的特徵並將它們對齊。僅此而已。(在拼圖遊戲中,我們更多地研究了不同圖像的連續性)。所有這些屬性都是我們固有的。

因此,我們的一個基本問題擴展到更多,但變得更加具體。這些特徵是什麼?(答案對於計算機也應該是可以理解的。)

很難說人類如何發現這些特徵。這已經在我們的大腦中進行了編碼。但是,如果我們深入研究某些圖片並搜索不同的模板,我們會發現一些有趣的東西。例如,看以下的圖片:

圖像非常簡單。在圖像的頂部,給出了六個小圖像塊。你的問題是在原始圖像中找到這些補丁的確切位置。你可以找到多少正確的結果?

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

C和D更簡單。它們是建築物的邊緣。你可以找到一個大概的位置,但是準確的位置仍然很困難。這是因為沿著邊緣的每個地方的圖案都是相同的。但是,在邊緣,情況有所不同。因此,與平坦區域相比,邊緣是更好的特徵,但不夠好(在拼圖遊戲中比較邊緣的連續性很好)。

最後,E和F是建築物的某些角落。而且很容易找到它們。因為在拐角處,無論將此修補程序移動到何處,它的外觀都將有所不同。因此,它們可以被視為很好的特徵。因此,現在我們進入更簡單(且被廣泛使用的圖像)以更好地理解。

就像上面一樣,藍色補丁是平坦區域,很難找到和跟蹤。無論你將藍色補丁移到何處,它看起來都一樣。黑色補丁有一個邊緣。如果你沿垂直方向(即沿漸變)移動它,則它會發生變化。沿著邊緣(平行於邊緣)移動,看起來相同。對於紅色補丁,這是一個角落。無論你將補丁移動到何處,它看起來都不同,這意味著它是唯一的。因此,基本上,拐點被認為是圖像中的良好特徵。(不僅是角落,在某些情況下,斑點也被認為是不錯的功能)。

因此,現在我們回答了我們的問題,「這些特徵是什麼?」。但是出現了下一個問題。我們如何找到它們?還是我們如何找到角落?我們以一種直觀的方式回答了這一問題,即尋找圖像中在其周圍所有區域中移動(少量)變化最大的區域。在接下來的章節中,這將被投影到計算機語言中。因此,找到這些圖像特徵稱為特徵檢測。

我們在圖像中找到了特徵。找到它之後,你應該能夠在其他圖像中找到相同的圖像。怎麼做?我們圍繞該特徵採取一個區域,我們用自己的語言解釋它,例如「上部是藍天,下部是建築物的區域,在建築物上有玻璃等」,而你在另一個建築物中搜索相同的區域圖片。基本上,你是在描述特徵。同樣,計算機還應該描述特徵周圍的區域,以便可以在其他圖像中找到它。所謂的描述稱為特徵描述。獲得特徵及其描述後,你可以在所有圖像中找到相同的功能並將它們對齊,縫合在一起或進行所需的操作。

因此,在此模塊中,我們正在尋找OpenCV中的不同算法來查找功能,對其進行描述,進行匹配等。

文章來源: https://twgreatdaily.com/zh-tw/FqNzDnAB3uTiws8Kawey.html