在一定的范圍內(nèi),無(wú)論物體是大還是小,人眼都可以分辨出來(lái)。然而計(jì)算機(jī)要有相同的能力卻不是那么的容易,在未知的場(chǎng)景中,計(jì)算機(jī)視覺(jué)并不能提供物體的尺度大小,其中的一種方法是把物體不同尺度下的圖像都提供給機(jī)器,讓機(jī)器能夠?qū)ξ矬w在不同的尺度下有一個(gè)統(tǒng)一的認(rèn)知。在建立統(tǒng)一認(rèn)知的過(guò)程中,要考慮的就是在圖像在不同的尺度下都存在的特征點(diǎn)。
我們提供的服務(wù)有:網(wǎng)站設(shè)計(jì)制作、做網(wǎng)站、微信公眾號(hào)開(kāi)發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、克山ssl等。為上千企事業(yè)單位解決了網(wǎng)站和推廣的問(wèn)題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的克山網(wǎng)站制作公司
在早期圖像的多尺度通常使用圖像金字塔表示形式。圖像金字塔是同一圖像在不同的分辨率下得到的一組結(jié)果其生成過(guò)程一般包括兩個(gè)步驟:
多分辨率的圖像金字塔雖然生成簡(jiǎn)單,但其本質(zhì)是降采樣,圖像的局部特征則難以保持,也就是無(wú)法保持特征的尺度不變性。
我們還可以通過(guò)圖像的模糊程度來(lái)模擬人在距離物體由遠(yuǎn)到近時(shí)物體在視網(wǎng)膜上成像過(guò)程,距離物體越近其尺寸越大圖像也越模糊,這就是高斯尺度空間,使用不同的參數(shù)模糊圖像(分辨率不變),是尺度空間的另一種表現(xiàn)形式。
構(gòu)建尺度空間的目的是為了檢測(cè)出在不同的尺度下都存在的特征點(diǎn),而檢測(cè)特征點(diǎn)較好的算子是Δ^2G(高斯拉普拉斯,LoG)
使用LoG雖然能較好的檢測(cè)到圖像中的特征點(diǎn),但是其運(yùn)算量過(guò)大,通??墒褂肈oG(差分高斯,Difference of Gaussina)來(lái)近似計(jì)算LoG。
從上式可以知道,將相鄰的兩個(gè)高斯空間的圖像相減就得到了DoG的響應(yīng)圖像。為了得到DoG圖像,先要構(gòu)建高斯尺度空間,而高斯的尺度空間可以在圖像金字塔降采樣的基礎(chǔ)上加上高斯濾波得到,也就是對(duì)圖像金字塔的每層圖像使用不同的參數(shù)σ進(jìn)行高斯模糊,使每層金字塔有多張高斯模糊過(guò)的圖像。
如下圖,octave間是降采樣關(guān)系,且octave(i+1)的第一張(從下往上數(shù))圖像是由octave(i)中德倒數(shù)第三張圖像降采樣得到。octave內(nèi)的圖像大小一樣,只是高斯模糊使用的尺度參數(shù)不同。
對(duì)于一幅圖像,建立其在不同尺度scale下的圖像,也稱為octave,這是為了scale-invariant,也就是在任何尺度都能有對(duì)應(yīng)的特征點(diǎn)。下圖中右側(cè)的DoG就是我們構(gòu)建的尺度空間。
為了尋找尺度空間的極值點(diǎn),每一個(gè)采樣點(diǎn)要和它所有的相鄰點(diǎn)比較,看其是否比它的圖像域和尺度域的相鄰點(diǎn)大或者小。如圖所示,中間的檢測(cè)點(diǎn)和它同尺度的8個(gè)相鄰點(diǎn)和上下相鄰尺度對(duì)應(yīng)的9×2個(gè)點(diǎn)共26個(gè)點(diǎn)比較,以確保在尺度空間和二維圖像空間都檢測(cè)到極值點(diǎn)。 一個(gè)點(diǎn)如果在DOG尺度空間本層以及上下兩層的26個(gè)領(lǐng)域中是最大或最小值時(shí),就認(rèn)為該點(diǎn)是圖像在該尺度下的一個(gè)特征點(diǎn)。下圖中將叉號(hào)點(diǎn)要比較的26個(gè)點(diǎn)都標(biāo)為了綠色。
找到所有特征點(diǎn)后, 要去除低對(duì)比度和不穩(wěn)定的邊緣效應(yīng)的點(diǎn) ,留下具有代表性的關(guān)鍵點(diǎn)(比如,正方形旋轉(zhuǎn)后變?yōu)榱庑危绻眠吘壸鲎R(shí)別,4條邊就完全不一樣,就會(huì)錯(cuò)誤;如果用角點(diǎn)識(shí)別,則穩(wěn)定一些)。去除這些點(diǎn)的好處是增強(qiáng)匹配的抗噪能力和穩(wěn)定性。最后,對(duì)離散的點(diǎn)做曲線擬合,得到精確的關(guān)鍵點(diǎn)的位置和尺度信息。
近來(lái)不斷有人改進(jìn),其中最著名的有 SURF(計(jì)算量小,運(yùn)算速度快,提取的特征點(diǎn)幾乎與SIFT相同)和 CSIFT(彩色尺度特征不變變換,顧名思義,可以解決基于彩色圖像的SIFT問(wèn)題)。
其中sift.detectAndCompute()函數(shù)返回kp,des。
上圖dog的shape為(481, 500, 3),提取的特征向量des的shape為(501, 128),501個(gè)128維的特征點(diǎn)。
該方法可以在特征點(diǎn)處繪制一個(gè)小圓圈。
回顧了下PCA的步驟,并用python實(shí)現(xiàn)。深刻的發(fā)現(xiàn)當(dāng)年學(xué)的特征值、特征向量好強(qiáng)大。
PCA是一種無(wú)監(jiān)督的學(xué)習(xí)方式,是一種很常用的降維方法。在數(shù)據(jù)信息損失最小的情況下,將數(shù)據(jù)的特征數(shù)量由n,通過(guò)映射到另一個(gè)空間的方式,變?yōu)閗(kn)。
這里用一個(gè)2維的數(shù)據(jù)來(lái)說(shuō)明PCA,選擇2維的數(shù)據(jù)是因?yàn)?維的比較容易畫(huà)圖。
這是數(shù)據(jù):
畫(huà)個(gè)圖看看分布情況:
協(xié)方差的定義為:
假設(shè)n為數(shù)據(jù)的特征數(shù),那么協(xié)方差矩陣M, 為一個(gè)n n的矩陣,其中Mij為第i和第j個(gè)特征的協(xié)方差,對(duì)角線是各個(gè)特征的方差。
在我們的數(shù)據(jù)中,n=2,所以協(xié)方差矩陣是2 2的,
通過(guò)numpy我們可以很方便的得到:
得到cov的結(jié)果為:
array([[ 0.61655556, 0.61544444],
[ 0.61544444, 0.71655556]])
由于我們之前已經(jīng)做過(guò)normalization,因此對(duì)于我們來(lái)說(shuō),
這個(gè)矩陣就是 data*data的轉(zhuǎn)置矩陣。
得到結(jié)果:
matrix([[ 5.549, 5.539],
[ 5.539, 6.449]])
我們發(fā)現(xiàn),其實(shí)協(xié)方差矩陣和散度矩陣關(guān)系密切,散度矩陣 就是協(xié)方差矩陣乘以(總數(shù)據(jù)量-1)。因此他們的 特征根 和 特征向量 是一樣的。這里值得注意的一點(diǎn)就是,散度矩陣是 SVD奇異值分解 的一步,因此PCA和SVD是有很大聯(lián)系的,他們的關(guān)系這里就不詳細(xì)談了,以后有機(jī)會(huì)再寫(xiě)下。
用numpy計(jì)算特征根和特征向量很簡(jiǎn)單,
但是他們代表的意義非常有意思,讓我們將特征向量加到我們?cè)瓉?lái)的圖里:
其中紅線就是特征向量。有幾點(diǎn)值得注意:
藍(lán)色的三角形就是經(jīng)過(guò)坐標(biāo)變換后得到的新點(diǎn),其實(shí)他就是紅色原點(diǎn)投影到紅線、藍(lán)線形成的。
得到特征值和特征向量之后,我們可以根據(jù) 特征值 的大小,從大到小的選擇K個(gè)特征值對(duì)應(yīng)的特征向量。
這個(gè)用python的實(shí)現(xiàn)也很簡(jiǎn)單:
從eig_pairs選取前k個(gè)特征向量就行。這里,我們只有兩個(gè)特征向量,選一個(gè)最大的。
主要將原來(lái)的數(shù)據(jù)乘以經(jīng)過(guò)篩選的特征向量組成的特征矩陣之后,就可以得到新的數(shù)據(jù)了。
output:
數(shù)據(jù)果然變成了一維的數(shù)據(jù)。
最后我們通過(guò)畫(huà)圖來(lái)理解下數(shù)據(jù)經(jīng)過(guò)PCA到底發(fā)生了什么。
綠色的五角星是PCA處理過(guò)后得到的一維數(shù)據(jù),為了能跟以前的圖對(duì)比,將他們的高度定位1.2,其實(shí)就是紅色圓點(diǎn)投影到藍(lán)色線之后形成的點(diǎn)。這就是PCA,通過(guò)選擇特征根向量,形成新的坐標(biāo)系,然后數(shù)據(jù)投影到這個(gè)新的坐標(biāo)系,在盡可能少的丟失信息的基礎(chǔ)上實(shí)現(xiàn)降維。
通過(guò)上述幾步的處理,我們簡(jiǎn)單的實(shí)現(xiàn)了PCA第一個(gè)2維數(shù)據(jù)的處理,但是原理就是這樣,我們可以很輕易的就依此實(shí)現(xiàn)多維的。
用sklearn的PCA與我們的pca做個(gè)比較:
得到結(jié)果:
用我們的pca試試
得到結(jié)果:
完全一致,完美~
值得一提的是,sklearn中PCA的實(shí)現(xiàn),用了部分SVD的結(jié)果,果然他們因緣匪淺。
主成分分析(PCA)是一種基于變量協(xié)方差矩陣對(duì)數(shù)據(jù)進(jìn)行壓縮降維、去噪的有效方法。
PCA的思想是將n維特征映射到k維上(kn),這k維特征稱為主元,是舊特征的線性組合,這些線性組合最大化樣本方差,盡量使新的k個(gè)特征互不相關(guān)。
生成一張純色的圖片
先設(shè)置圖片的顏色,接著利用Image模塊的new方法新生成一張圖片,png格式的圖片需要設(shè)置成rgba,類似的還有rgb,L(灰度圖等),尺寸設(shè)定為640,480,這個(gè)可以根據(jù)自己的情況設(shè)定,顏色同樣如此。
批量生成圖片
上面生成了一張圖片,那要生成十張圖片呢,這種步驟一樣,只是顏色改變的,利用循環(huán)就可以解決。首先創(chuàng)建一個(gè)顏色列表,把要生成的圖片顏色放進(jìn)去。接著循環(huán)獲取不同的顏色,保存的時(shí)候利用字符串拼接的方法改變圖片的名字。
本地生成的圖片
封裝成函數(shù)
前面的方法已經(jīng)可以批量生成圖片了,為了通用性強(qiáng)一點(diǎn),我們可以封裝成函數(shù),把哪些可以改變的參數(shù)單獨(dú)抽離出來(lái)。尺寸也同樣,使用的時(shí)候,可以根據(jù)自己的需要定義顏色列表和尺寸。當(dāng)然還有加一些提示用語(yǔ)和報(bào)錯(cuò)兼容性,這里就不講了。
本地生成的圖片
算法效果比較博文
用于表示和量化圖像的數(shù)字列表,簡(jiǎn)單理解成將圖片轉(zhuǎn)化為一個(gè)數(shù)字列表表示。特征向量中用來(lái)描述圖片的各種屬性的向量稱為特征矢量。
參考
是一種算法和方法,輸入1個(gè)圖像,返回多個(gè)特征向量(主要用來(lái)處理圖像的局部,往往會(huì)把多個(gè)特征向量組成一個(gè)一維的向量)。主要用于圖像匹配(視覺(jué)檢測(cè)),匹配圖像中的物品。
SIFT論文
原理
opencv官網(wǎng)解釋
實(shí)質(zhì)是在不同的尺度空間上查找關(guān)鍵點(diǎn)(特征點(diǎn)),并計(jì)算出關(guān)鍵點(diǎn)的方向。SIFT所查找到的關(guān)鍵點(diǎn)是一些十分突出,不會(huì)因光照,仿射變換和噪音等因素而變化的點(diǎn),如角點(diǎn)、邊緣點(diǎn)、暗區(qū)的亮點(diǎn)及亮區(qū)的暗點(diǎn)等。
尺度不變特征轉(zhuǎn)換(Scale-invariant feature transform或SIFT)是一種電腦視覺(jué)的算法用來(lái)偵測(cè)與描述影像中的局部性特征,它在空間尺度中尋找極值點(diǎn),并提取出其位置、尺度、旋轉(zhuǎn)不變量。
其應(yīng)用范圍包含物體辨識(shí)、機(jī)器人地圖感知與導(dǎo)航、影像縫合、3D模型建立、手勢(shì)辨識(shí)、影像追蹤和動(dòng)作比對(duì)。
對(duì)現(xiàn)實(shí)中物體的描述一定要在一個(gè)十分重要的前提下進(jìn)行,這個(gè)前提就是對(duì)自然界建模時(shí)的尺度。當(dāng)用一個(gè)機(jī)器視覺(jué)系統(tǒng)分析未知場(chǎng)景時(shí),計(jì)算機(jī)沒(méi)有辦法預(yù)先知道圖像中物體的尺度,因此我們需要同時(shí)考慮圖像在多尺度下的描述,獲知感興趣物體的最佳尺度。圖像的尺度空間表達(dá)指的是圖像的所有尺度下的描述。
KeyPoint數(shù)據(jù)結(jié)構(gòu)解析
SURF論文
原理
opencv官網(wǎng)解釋
SURF是SIFT的加速版,它善于處理具有模糊和旋轉(zhuǎn)的圖像,但是不善于處理視角變化和光照變化。在SIFT中使用DoG對(duì)LoG進(jìn)行近似,而在SURF中使用盒子濾波器對(duì)LoG進(jìn)行近似,這樣就可以使用積分圖像了(計(jì)算圖像中某個(gè)窗口內(nèi)所有像素和時(shí),計(jì)算量的大小與窗口大小無(wú)關(guān))。總之,SURF最大的特點(diǎn)在于采用了Haar特征以及積分圖像的概念,大大加快了程序的運(yùn)行效率。
因?yàn)閷@?,OpenCV3.3開(kāi)始不再免費(fèi)開(kāi)放SIFT\SURF,需要免費(fèi)的請(qǐng)使用ORB算法
ORB算法綜合了FAST角點(diǎn)檢測(cè)算法和BRIEFF描述符。
算法原理
opencv官方文檔
FAST只是一種特征點(diǎn)檢測(cè)算法,并不涉及特征點(diǎn)的特征描述。
論文
opencv官方文檔
中文版
Brief是Binary Robust Independent Elementary Features的縮寫(xiě)。這個(gè)特征描述子是由EPFL的Calonder在ECCV2010上提出的。主要思路就是在特征點(diǎn)附近隨機(jī)選取若干點(diǎn)對(duì),將這些點(diǎn)對(duì)的灰度值的大小,組合成一個(gè)二進(jìn)制串,并將這個(gè)二進(jìn)制串作為該特征點(diǎn)的特征描述子。文章同樣提到,在此之前,需要選取合適的gaussian kernel對(duì)圖像做平滑處理。
1:不具備旋轉(zhuǎn)不變性。
2:對(duì)噪聲敏感
3:不具備尺度不變性。
ORB論文
OpenCV官方文檔
ORB采用了FAST作為特征點(diǎn)檢測(cè)算子,特征點(diǎn)的主方向是通過(guò)矩(moment)計(jì)算而來(lái)解決了BRIEF不具備旋轉(zhuǎn)不變性的問(wèn)題。
ORB還做了這樣的改進(jìn),不再使用pixel-pair,而是使用9×9的patch-pair,也就是說(shuō),對(duì)比patch的像素值之和,解決了BRIEF對(duì)噪聲敏感的問(wèn)題。
關(guān)于計(jì)算速度:
ORB是sift的100倍,是surf的10倍。
對(duì)圖片數(shù)據(jù)、特征分布的一種統(tǒng)計(jì)
對(duì)數(shù)據(jù)空間(bin)進(jìn)行量化
Kmeans
邊緣:尺度問(wèn)題-不同的標(biāo)準(zhǔn)差 捕捉到不同尺度的邊緣
斑點(diǎn) Blob:二階高斯導(dǎo)數(shù)濾波LoG
關(guān)鍵點(diǎn)(keypoint):不同視角圖片之間的映射,圖片配準(zhǔn)、拼接、運(yùn)動(dòng)跟蹤、物體識(shí)別、機(jī)器人導(dǎo)航、3D重建
SIFT\SURF
使用python的數(shù)值計(jì)算庫(kù)numpy來(lái)計(jì)算矩陣的特征值,特征向量與標(biāo)準(zhǔn)正交向量組
1.求矩陣 的特征值和各特征值所對(duì)應(yīng)的特征向量
2.求矩陣 的特征值和各特征值所對(duì)應(yīng)的特征向量
3.由向量組 構(gòu)造一組標(biāo)準(zhǔn)正交向量組
分享題目:特征向量函數(shù)Python 特征函數(shù)和特征向量
標(biāo)題路徑:http://jinyejixie.com/article6/doddoog.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站改版、動(dòng)態(tài)網(wǎng)站、ChatGPT、網(wǎng)站設(shè)計(jì)、響應(yīng)式網(wǎng)站、自適應(yīng)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)