opencv python 了解特徵

2021-10-05 18:20:44 字數 1565 閱讀 3940

相信大多數人都玩過拼圖遊戲。你會得到許多零零散散的碎片,然後需要正確地組裝它們以形成乙個大的完整的影象。問題是,你是怎麼做到的?如何將相同的理論應用到電腦程式中,以便計算機可以玩拼圖遊戲?如果計算機可以玩拼圖遊戲,為什麼我們不能給計算機提供很多真實自然景觀的真實影象,並告訴它將所有這些影象拼接成乙個大的單個影象?如果計算機可以將幾個零散影象拼接成乙個,那麼提供大量建築物或任何結構的給計算機, 如何從中建立3d模型呢?

問題和想象力可以是無邊無際的,但這一切都取決於最基本的問題:你是如何玩拼圖遊戲的?你如何將大量的混亂影象片段排列成乙個大的完整的影象?如何將大量零散影象拼接成整體影象?

因此,我們的乙個基本問題擴充套件到更多,但變得更具體。這些功能是什麼?(答案對於計算機也應該是可以理解的。)

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

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

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

c和d要簡單得多。它們是建築物的邊緣。你可以找到乙個大概的位置,但確切的位置仍然很困難。這是因為沿著邊緣的模式是相同的。然而,在邊緣,它是不同的。因此,與平坦區域相比,邊緣是更好的特徵,但是不夠好(用於比較邊緣的連續性在拼圖中是好的)。

最後,e和f是建築物的一些角點。它們很容易找到。因為在角點,無論你移動這個補丁,它都會有所不同。所以它們可以被認為是很好的功能。所以現在我們進入更簡單(和廣泛使用的影象)以便更好地理解。

就像上面一樣,藍色斑塊是平坦的區域,很難找到和跟蹤。無論你移動藍色補丁,它看起來都一樣。黑色貼片有邊緣。如果沿垂直方向(即沿著漸變方向)移動它會改變。沿邊緣移動(平行於邊緣),看起來一樣。對於紅色補丁,它是乙個角點。無論你移動補丁,它看起來都不同,意味著它是獨一無二的。所以基本上,角點被認為是影象中的好特徵。(不僅僅是角點,在某些情況下,blob被認為是很好的特徵)。

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

我們在影象中找到了這些功能。一旦找到它,你應該能夠在其他影象中找到相同的內容。這是怎麼做到的?我們用乙個區域圍繞這個特徵,我們用自己的話解釋它,比如「上部是藍天,下部是建築物的區域,那個建築物上有玻璃等」,你在另乙個地方尋找相同的區域。基本上,你正在描述該功能。類似地,計算機還應該描述特徵周圍的區域,以便它可以在其他影象中找到它。所謂的描述稱為特徵描述。獲得這些功能及其描述後,你可以在所有影象中找到相同的功能並對齊它們,將它們拼接在一起或做任何你想做的事情。

因此,在本單元中,我們正在尋找opencv中的不同演算法來查詢功能,描述功能,匹配它們等。

OpenCV Python模糊處理

import cv2 as cv import numpy as np 均值模糊 defblur demo img dst cv.blur img,5 5 cv.imshow blur image dst import cv2 as cv import numpy as np 中值模糊 defmed...

OpenCV Python 人臉檢測

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!例項總結 下午的時候,配好了opencv的python環境,opencv的python環境搭建。於是迫不及待的想體驗一下opencv的人臉識別,如下文。haar like百科釋義。通俗的來講,就是作為人臉特徵即可。haar特徵值反映了影象的灰度變化...

Opencv python 人臉檢測

import numpy as np import cv2 as cv cv.namedwindow face detected cap cv.videocapture 0 success,frame cap.read 載入opencv識別器 face cascade cv.cascadeclass...