【翻譯:OpenCV-Python教程】理解特徵

⚠️由於自己的拖延症,3.4.3翻到一半,OpenCV發佈了4.0.1了正式版,所以接下來是按照4.0.1翻譯的。

⚠️除了版本之外,其他還是照舊,Understanding Features,原文

目標

在這一章中,我們將只是嘗試理解什麼是特徵,爲什麼它們很重要,爲什麼角很重要等等。

解釋

你們多數人都肯定玩過拼圖遊戲。你有某張圖片的一大堆的碎片,你需要把他們正確的整合起來,形成一張真正的大圖片。那麼問題來了,怎麼做呢?把同樣的理論應用到電腦程序中,讓電腦玩拼圖遊戲,怎麼樣?如果電腦會玩拼圖遊戲,爲什麼我們不能給電腦一堆真是的美麗風景圖,然後讓它把他們縫合在一起成一張大圖呢?如果計算機能將幾張自然圖像拼接成一幅,那麼給出一堆建築或任何結構的圖片,並讓計算機從中創建一個3D模型,會怎麼樣呢?

好吧,讓問題和想象繼續。但這完全取決於最基本的問題:你如何玩拼圖遊戲?如何將大量的圖像碎片排列成一個大的單一圖像?你怎麼去把許多自然圖像縫到一張圖像上?

答案是,我們要去尋找獨特的、易於跟蹤的、易於比較的特定模式或特定特性。如果我們非要找個定義來描述這種特徵,我們可能會發現很難用語言來表達它,但我們知道它們是什麼。如果有人讓你指出一個好的特徵,可以在多個圖像之間進行比較,你卻可以指出一個。這就是爲什麼即使是小孩子也能簡單地玩這些遊戲。我們在一幅圖像中搜索這些特徵,找到它們,在其他圖像中尋找相同的特徵並對齊它們。就是這樣。(在拼圖遊戲中,我們更關注不同圖像的連續性)。所有這些能力都是我們與生俱來的。

所以現在,我們的基本問題又多了一個,但卻變得更細節了。是這些特徵是什麼?(你的答案要讓計算機也能“聽懂”哦。)

很難講人類到底是咋發現這些特徵的。它老早已經在我們腦瓜子裏編碼好了。但如果我們仔細觀察一些圖片,搜索不同的特徵,我們會發下一些有趣的事情,比方說,如下圖:

feature_building.jpg

這圖片很簡單。在圖片上方,給出了六張小的圖片碎片。留給你的問題是要在原始圖像中找到這些碎片的準確位置。你能找到多少個正確的結果?

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

而C和D就要簡單得多了。它們是建築的邊緣。你可以找到一個近似的位置,但要定出一個確切的點還是要花點功夫。這是因爲沿着邊緣的模式都是一樣的。但在垂直於邊緣的方向上,情況就不同了。因此,邊緣比平坦區域的特徵更好,但還不夠好(在拼圖中比較邊緣的連續性很好)。

最後,E和F是一些建築的角。它們就可以被輕鬆的找到。因爲在針對這些角,無論你往什麼方向移動這個碎片,它看起來都不一樣。所以它們可以被認爲是很好的特徵。爲了更好地理解,現在我們來看看更簡單的(並且被廣泛使用的)圖像。

feature_simple.png

就像上面一樣,藍框碎片是平坦的區域,很難去尋找和跟蹤。無論你怎麼移動藍框碎片,它看起來都是一樣的。黑框碎片裏面有一條邊。如果你沿着垂直方向移動它(即沿着圖像梯度)它就會改變。沿着邊緣移動(平行於邊緣),看起來是一樣的。對於紅框碎片,它是一個角。無論你移動碎片到哪裏,它看起來都不一樣,意味着它是唯一的。基本上,角被認爲是圖像中很好的特徵。(不僅僅是角落,在某些情況下,半點也被認爲是很好的特特徵)。

現在我們回答了剛纔的問題,“這些特徵是什麼?”。但下一個問題出現了。我們如何找到他們?或者我們怎麼去找這些角呢?我們用直觀的方式來回答這個問題,即,尋找當圖像在移動(少量移動)時,引發變化最大的區域。這將在接下來的章節中被投射到計算機語言中。那麼,尋找這些圖像特徵稱爲特徵檢測

我們在圖像中找到了特徵。一旦你找到了它,你應該能夠在其他圖像中找到相同的。這是怎麼做到的?我們取一個區域圍繞着這個特徵,我們用自己的語言解釋它,比如“上面的部分是藍天,下面的部分是建築的區域,在那個建築上有玻璃等等”,然後你在其他圖像中搜索相同的區域。基本上,你在做的就是在描述特性。類似地,計算機也應該描述特徵周圍的區域,以便在其他圖像中找到它。這就是我們說的特徵描述。一旦你有了特徵和特徵描述,你可以在所有的圖像中找到相同的特徵,並將它們對齊,將它們縫在一起或做一些任何你想做的事情。

所以在這個模塊中,我們在OpenCV中尋找不同的算法來尋找特徵,描述它們,匹配它們等等。

額外資源

練習


上篇:【翻譯:OpenCV-Python教程】用GrabCut算法進行交互式的前景提取

下篇:【翻譯:OpenCV-Python教程】圖像金字塔

So in this module, we are looking to different algorithms in OpenCV to find features, describe them, match them etc.
所以在這個模塊中,我們在OpenCV中尋找不同的算法來尋找特徵,描述它們,匹配它們等等。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章