真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯網站制作重慶分公司

特征向量函數Python 特征函數和特征向量

OpenCV-Python之——圖像SIFT特征提取

在一定的范圍內,無論物體是大還是小,人眼都可以分辨出來。然而計算機要有相同的能力卻不是那么的容易,在未知的場景中,計算機視覺并不能提供物體的尺度大小,其中的一種方法是把物體不同尺度下的圖像都提供給機器,讓機器能夠對物體在不同的尺度下有一個統(tǒng)一的認知。在建立統(tǒng)一認知的過程中,要考慮的就是在圖像在不同的尺度下都存在的特征點。

我們提供的服務有:網站設計制作、做網站、微信公眾號開發(fā)、網站優(yōu)化、網站認證、克山ssl等。為上千企事業(yè)單位解決了網站和推廣的問題。提供周到的售前咨詢和貼心的售后服務,是有科學管理、有技術的克山網站制作公司

在早期圖像的多尺度通常使用圖像金字塔表示形式。圖像金字塔是同一圖像在不同的分辨率下得到的一組結果其生成過程一般包括兩個步驟:

多分辨率的圖像金字塔雖然生成簡單,但其本質是降采樣,圖像的局部特征則難以保持,也就是無法保持特征的尺度不變性。

我們還可以通過圖像的模糊程度來模擬人在距離物體由遠到近時物體在視網膜上成像過程,距離物體越近其尺寸越大圖像也越模糊,這就是高斯尺度空間,使用不同的參數模糊圖像(分辨率不變),是尺度空間的另一種表現形式。

構建尺度空間的目的是為了檢測出在不同的尺度下都存在的特征點,而檢測特征點較好的算子是Δ^2G(高斯拉普拉斯,LoG)

使用LoG雖然能較好的檢測到圖像中的特征點,但是其運算量過大,通??墒褂肈oG(差分高斯,Difference of Gaussina)來近似計算LoG。

從上式可以知道,將相鄰的兩個高斯空間的圖像相減就得到了DoG的響應圖像。為了得到DoG圖像,先要構建高斯尺度空間,而高斯的尺度空間可以在圖像金字塔降采樣的基礎上加上高斯濾波得到,也就是對圖像金字塔的每層圖像使用不同的參數σ進行高斯模糊,使每層金字塔有多張高斯模糊過的圖像。

如下圖,octave間是降采樣關系,且octave(i+1)的第一張(從下往上數)圖像是由octave(i)中德倒數第三張圖像降采樣得到。octave內的圖像大小一樣,只是高斯模糊使用的尺度參數不同。

對于一幅圖像,建立其在不同尺度scale下的圖像,也稱為octave,這是為了scale-invariant,也就是在任何尺度都能有對應的特征點。下圖中右側的DoG就是我們構建的尺度空間。

為了尋找尺度空間的極值點,每一個采樣點要和它所有的相鄰點比較,看其是否比它的圖像域和尺度域的相鄰點大或者小。如圖所示,中間的檢測點和它同尺度的8個相鄰點和上下相鄰尺度對應的9×2個點共26個點比較,以確保在尺度空間和二維圖像空間都檢測到極值點。 一個點如果在DOG尺度空間本層以及上下兩層的26個領域中是最大或最小值時,就認為該點是圖像在該尺度下的一個特征點。下圖中將叉號點要比較的26個點都標為了綠色。

找到所有特征點后, 要去除低對比度和不穩(wěn)定的邊緣效應的點 ,留下具有代表性的關鍵點(比如,正方形旋轉后變?yōu)榱庑危绻眠吘壸鲎R別,4條邊就完全不一樣,就會錯誤;如果用角點識別,則穩(wěn)定一些)。去除這些點的好處是增強匹配的抗噪能力和穩(wěn)定性。最后,對離散的點做曲線擬合,得到精確的關鍵點的位置和尺度信息。

近來不斷有人改進,其中最著名的有 SURF(計算量小,運算速度快,提取的特征點幾乎與SIFT相同)和 CSIFT(彩色尺度特征不變變換,顧名思義,可以解決基于彩色圖像的SIFT問題)。

其中sift.detectAndCompute()函數返回kp,des。

上圖dog的shape為(481, 500, 3),提取的特征向量des的shape為(501, 128),501個128維的特征點。

該方法可以在特征點處繪制一個小圓圈。

PCA(主成分分析)python實現

回顧了下PCA的步驟,并用python實現。深刻的發(fā)現當年學的特征值、特征向量好強大。

PCA是一種無監(jiān)督的學習方式,是一種很常用的降維方法。在數據信息損失最小的情況下,將數據的特征數量由n,通過映射到另一個空間的方式,變?yōu)閗(kn)。

這里用一個2維的數據來說明PCA,選擇2維的數據是因為2維的比較容易畫圖。

這是數據:

畫個圖看看分布情況:

協(xié)方差的定義為:

假設n為數據的特征數,那么協(xié)方差矩陣M, 為一個n n的矩陣,其中Mij為第i和第j個特征的協(xié)方差,對角線是各個特征的方差。

在我們的數據中,n=2,所以協(xié)方差矩陣是2 2的,

通過numpy我們可以很方便的得到:

得到cov的結果為:

array([[ 0.61655556, 0.61544444],

[ 0.61544444, 0.71655556]])

由于我們之前已經做過normalization,因此對于我們來說,

這個矩陣就是 data*data的轉置矩陣。

得到結果:

matrix([[ 5.549, 5.539],

[ 5.539, 6.449]])

我們發(fā)現,其實協(xié)方差矩陣和散度矩陣關系密切,散度矩陣 就是協(xié)方差矩陣乘以(總數據量-1)。因此他們的 特征根 和 特征向量 是一樣的。這里值得注意的一點就是,散度矩陣是 SVD奇異值分解 的一步,因此PCA和SVD是有很大聯系的,他們的關系這里就不詳細談了,以后有機會再寫下。

用numpy計算特征根和特征向量很簡單,

但是他們代表的意義非常有意思,讓我們將特征向量加到我們原來的圖里:

其中紅線就是特征向量。有幾點值得注意:

藍色的三角形就是經過坐標變換后得到的新點,其實他就是紅色原點投影到紅線、藍線形成的。

得到特征值和特征向量之后,我們可以根據 特征值 的大小,從大到小的選擇K個特征值對應的特征向量。

這個用python的實現也很簡單:

從eig_pairs選取前k個特征向量就行。這里,我們只有兩個特征向量,選一個最大的。

主要將原來的數據乘以經過篩選的特征向量組成的特征矩陣之后,就可以得到新的數據了。

output:

數據果然變成了一維的數據。

最后我們通過畫圖來理解下數據經過PCA到底發(fā)生了什么。

綠色的五角星是PCA處理過后得到的一維數據,為了能跟以前的圖對比,將他們的高度定位1.2,其實就是紅色圓點投影到藍色線之后形成的點。這就是PCA,通過選擇特征根向量,形成新的坐標系,然后數據投影到這個新的坐標系,在盡可能少的丟失信息的基礎上實現降維。

通過上述幾步的處理,我們簡單的實現了PCA第一個2維數據的處理,但是原理就是這樣,我們可以很輕易的就依此實現多維的。

用sklearn的PCA與我們的pca做個比較:

得到結果:

用我們的pca試試

得到結果:

完全一致,完美~

值得一提的是,sklearn中PCA的實現,用了部分SVD的結果,果然他們因緣匪淺。

python sklearn主成分分析法 各個特征向量是啥意思

主成分分析(PCA)是一種基于變量協(xié)方差矩陣對數據進行壓縮降維、去噪的有效方法。

PCA的思想是將n維特征映射到k維上(kn),這k維特征稱為主元,是舊特征的線性組合,這些線性組合最大化樣本方差,盡量使新的k個特征互不相關。

python處理圖片數據?

生成一張純色的圖片

先設置圖片的顏色,接著利用Image模塊的new方法新生成一張圖片,png格式的圖片需要設置成rgba,類似的還有rgb,L(灰度圖等),尺寸設定為640,480,這個可以根據自己的情況設定,顏色同樣如此。

批量生成圖片

上面生成了一張圖片,那要生成十張圖片呢,這種步驟一樣,只是顏色改變的,利用循環(huán)就可以解決。首先創(chuàng)建一個顏色列表,把要生成的圖片顏色放進去。接著循環(huán)獲取不同的顏色,保存的時候利用字符串拼接的方法改變圖片的名字。

本地生成的圖片

封裝成函數

前面的方法已經可以批量生成圖片了,為了通用性強一點,我們可以封裝成函數,把哪些可以改變的參數單獨抽離出來。尺寸也同樣,使用的時候,可以根據自己的需要定義顏色列表和尺寸。當然還有加一些提示用語和報錯兼容性,這里就不講了。

本地生成的圖片

OpenCV+Python特征提取算法與圖像描述符之SIFT / SURF / ORB

算法效果比較博文

用于表示和量化圖像的數字列表,簡單理解成將圖片轉化為一個數字列表表示。特征向量中用來描述圖片的各種屬性的向量稱為特征矢量。

參考

是一種算法和方法,輸入1個圖像,返回多個特征向量(主要用來處理圖像的局部,往往會把多個特征向量組成一個一維的向量)。主要用于圖像匹配(視覺檢測),匹配圖像中的物品。

SIFT論文

原理

opencv官網解釋

實質是在不同的尺度空間上查找關鍵點(特征點),并計算出關鍵點的方向。SIFT所查找到的關鍵點是一些十分突出,不會因光照,仿射變換和噪音等因素而變化的點,如角點、邊緣點、暗區(qū)的亮點及亮區(qū)的暗點等。

尺度不變特征轉換(Scale-invariant feature transform或SIFT)是一種電腦視覺的算法用來偵測與描述影像中的局部性特征,它在空間尺度中尋找極值點,并提取出其位置、尺度、旋轉不變量。

其應用范圍包含物體辨識、機器人地圖感知與導航、影像縫合、3D模型建立、手勢辨識、影像追蹤和動作比對。

對現實中物體的描述一定要在一個十分重要的前提下進行,這個前提就是對自然界建模時的尺度。當用一個機器視覺系統(tǒng)分析未知場景時,計算機沒有辦法預先知道圖像中物體的尺度,因此我們需要同時考慮圖像在多尺度下的描述,獲知感興趣物體的最佳尺度。圖像的尺度空間表達指的是圖像的所有尺度下的描述。

KeyPoint數據結構解析

SURF論文

原理

opencv官網解釋

SURF是SIFT的加速版,它善于處理具有模糊和旋轉的圖像,但是不善于處理視角變化和光照變化。在SIFT中使用DoG對LoG進行近似,而在SURF中使用盒子濾波器對LoG進行近似,這樣就可以使用積分圖像了(計算圖像中某個窗口內所有像素和時,計算量的大小與窗口大小無關)??傊?,SURF最大的特點在于采用了Haar特征以及積分圖像的概念,大大加快了程序的運行效率。

因為專利原因,OpenCV3.3開始不再免費開放SIFT\SURF,需要免費的請使用ORB算法

ORB算法綜合了FAST角點檢測算法和BRIEFF描述符。

算法原理

opencv官方文檔

FAST只是一種特征點檢測算法,并不涉及特征點的特征描述。

論文

opencv官方文檔

中文版

Brief是Binary Robust Independent Elementary Features的縮寫。這個特征描述子是由EPFL的Calonder在ECCV2010上提出的。主要思路就是在特征點附近隨機選取若干點對,將這些點對的灰度值的大小,組合成一個二進制串,并將這個二進制串作為該特征點的特征描述子。文章同樣提到,在此之前,需要選取合適的gaussian kernel對圖像做平滑處理。

1:不具備旋轉不變性。

2:對噪聲敏感

3:不具備尺度不變性。

ORB論文

OpenCV官方文檔

ORB采用了FAST作為特征點檢測算子,特征點的主方向是通過矩(moment)計算而來解決了BRIEF不具備旋轉不變性的問題。

ORB還做了這樣的改進,不再使用pixel-pair,而是使用9×9的patch-pair,也就是說,對比patch的像素值之和,解決了BRIEF對噪聲敏感的問題。

關于計算速度:

ORB是sift的100倍,是surf的10倍。

對圖片數據、特征分布的一種統(tǒng)計

對數據空間(bin)進行量化

Kmeans

邊緣:尺度問題-不同的標準差 捕捉到不同尺度的邊緣

斑點 Blob:二階高斯導數濾波LoG

關鍵點(keypoint):不同視角圖片之間的映射,圖片配準、拼接、運動跟蹤、物體識別、機器人導航、3D重建

SIFT\SURF

特征值,特征向量,標準正交向量組與numpy

使用python的數值計算庫numpy來計算矩陣的特征值,特征向量與標準正交向量組

1.求矩陣 的特征值和各特征值所對應的特征向量

2.求矩陣 的特征值和各特征值所對應的特征向量

3.由向量組 構造一組標準正交向量組


當前標題:特征向量函數Python 特征函數和特征向量
文章位置:http://weahome.cn/article/doddoog.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部