1. cvfitline用的什麼演算法
1、cvLoadImage:將圖像文件載入至內存;
2、cvNamedWindow:在屏幕上創建一個窗口;
3、cvShowImage:在一個已創建好的窗口中顯示圖像;
4、cvWaitKey:使程序暫停,等待用戶觸發一個按鍵操作;
5、cvReleaseImage:釋放圖像文件所分配的內存;
6、cvDestroyWindow:銷毀顯示圖像文件的窗口;
7、cvCreateFileCapture:通過參數設置確定要讀入的AVI文件;
8、cvQueryFrame:用來將下一幀文件載入內存;
9、cvReleaseCapture:釋放CvCapture結構開辟的內存空間;
10、cvCreateTrackbar:創建一個滾動條;
11、cvSetCaptureProperty:設置CvCapture對象的各種屬性;
12、cvGetCaptureProperty:查詢CvCapture對象的各種屬性;
13、cvGetSize:當前圖像結構的大小;
14、cvSmooth:對圖像進行平滑處理;
15、cvPyrDown:圖像金字塔,降采樣,圖像縮小為原來四分之一;
16、cvCanny:Canny邊緣檢測;
17、cvCreateCameraCapture:從攝像設備中讀入數據;
18、cvCreateVideoWriter:創建一個寫入設備以便逐幀將流寫入文件;
19、cvWriteFrame:逐幀將流寫入文件;
20、cvReleaseVideoWriter:釋放CvVideoWriter結構開辟的內存空間;
21、CV_MAT_ELEM:從矩陣中得到一個元素;
22、cvAbs:計算數組中所有元素的絕對值;
23、cvAbsDiff:計算兩個數組差值的絕對值;
24、cvAbsDiffS:計算數組和標量差值的絕對值;
25、cvAdd:兩個數組的元素級的加運算;
26、cvAddS:一個數組和一個標量的元素級的相加運算;
27、cvAddWeighted:兩個數組的元素級的加權相加運算(alpha運算);
28、cvAvg:計算數組中所有元素的平均值;
29、cvAvgSdv:計算數組中所有元素的絕對值和標准差;
30、cvCalcCovarMatrix:計算一組n維空間向量的協方差;
31、cvCmp:對兩個數組中的所有元素運用設置的比較操作;
32、cvCmpS:對數組和標量運用設置的比較操作;
33、cvConvertScale:用可選的縮放值轉換數組元素類型;
34、cvCopy:把數組中的值復制到另一個數組中;
35、cvCountNonZero:計算數組中非0值的個數;
36、cvCrossProct:計算兩個三維向量的向量積(叉積);
37、cvCvtColor:將數組的通道從一個顏色空間轉換另外一個顏色空間;
38、cvDet:計算方陣的行列式;
39、cvDiv:用另外一個數組對一個數組進行元素級的除法運算;
40、cvDotProct:計算兩個向量的點積;
41、cvEigenVV:計算方陣的特徵值和特徵向量;
42、cvFlip:圍繞選定軸翻轉;
43、cvGEMM:矩陣乘法;
44、cvGetCol:從一個數組的列中復制元素;
45、cvGetCols:從數據的相鄰的多列中復制元素;
46、cvGetDiag:復制數組中對角線上的所有元素;
47、cvGetDims:返回數組的維數;
48、cvGetDimSize:返回一個數組的所有維的大小;
49、cvGetRow:從一個數組的行中復制元素值;
50、cvGetRows:從一個數組的多個相鄰的行中復制元素值;
51、cvGetSize:得到二維的數組的尺寸,以CvSize返回;
52、cvGetSubRect:從一個數組的子區域復制元素值;
53、cvInRange:檢查一個數組的元素是否在另外兩個數組中的值的范圍內;
54、cvInRangeS:檢查一個數組的元素的值是否在另外兩個標量的范圍內;
55、cvInvert:求矩陣的逆;
56、cvMahalonobis:計算兩個向量間的馬氏距離;
57、cvMax:在兩個數組中進行元素級的取最大值操作;
58、cvMaxS:在一個數組和一個標量中進行元素級的取最大值操作;
59、cvMerge:把幾個單通道圖像合並為一個多通道圖像;
60、cvMin:在兩個數組中進行元素級的取最小值操作;
61、cvMinS:在一個數組和一個標量中進行元素級的取最小值操作;
62、cvMinMaxLoc:尋找數組中的最大最小值;
63、cvMul:計算兩個數組的元素級的乘積(點乘);
64、cvNot:按位對數組中的每一個元素求反;
65、cvNormalize:將數組中元素進行歸一化;
66、cvOr:對兩個數組進行按位或操作;
67、cvOrs:在數組與標量之間進行按位或操作;
68、cvRece:通過給定的操作符將二維數組簡為向量;
69、cvRepeat:以平鋪的方式進行數組復制;
70、cvSet:用給定值初始化數組;
71、cvSetZero:將數組中所有元素初始化為0;
72、cvSetIdentity:將數組中對角線上的元素設為1,其他置0;
73、cvSolve:求出線性方程組的解;
74、cvSplit:將多通道數組分割成多個單通道數組;
75、cvSub:兩個數組元素級的相減;
76、cvSubS:元素級的從數組中減去標量;
77、cvSubRS:元素級的從標量中減去數組;
78、cvSum:對數組中的所有元素求和;
79、cvSVD:二維矩陣的奇異值分解;
80、cvSVBkSb:奇異值回代計算;
81、cvTrace:計算矩陣跡;
82、cvTranspose:矩陣的轉置運算;
83、cvXor:對兩個數組進行按位異或操作;
84、cvXorS:在數組和標量之間進行按位異或操作;
85、cvZero:將所有數組中的元素置為0;
86、cvConvertScaleAbs:計算可選的縮放值的絕對值之後再轉換數組元素的類型;
87、cvNorm:計算數組的絕對范數, 絕對差分范數或者相對差分范數;
88、cvAnd:對兩個數組進行按位與操作;
89、cvAndS:在數組和標量之間進行按位與操作;
90、cvScale:是cvConvertScale的一個宏,可以用來重新調整數組的內容,並且可以將參數從一種數
據類型轉換為另一種;
91、cvT:是函數cvTranspose的縮寫;
92、cvLine:畫直線;
93、cvRectangle:畫矩形;
94、cvCircle:畫圓;
95、cvEllipse:畫橢圓;
96、cvEllipseBox:使用外接矩形描述橢圓;
97、cvFillPoly、cvFillConvexPoly、cvPolyLine:畫多邊形;
98、cvPutText:在圖像上輸出一些文本;
99、cvInitFont:採用一組參數配置一些用於屏幕輸出的基本個特定字體;
100、cvSave:矩陣保存;
101、cvLoad:矩陣讀取;
102、cvOpenFileStorage:為讀/寫打開存儲文件;
103、cvReleaseFileStorage:釋放存儲的數據;
104、cvStartWriteStruct:開始寫入新的數據結構;
105、cvEndWriteStruct:結束寫入數據結構;
106、cvWriteInt:寫入整數型;
107、cvWriteReal:寫入浮點型;
108、cvWriteString:寫入字元型;
109、cvWriteComment:寫一個XML或YAML的注釋字串;
110、cvWrite:寫一個對象;
111、cvWriteRawData:寫入多個數值;
112、cvWriteFileNode:將文件節點寫入另一個文件存儲器;
113、cvGetRootFileNode:獲取存儲器最頂層的節點;
114、cvGetFileNodeByName:在映圖或存儲器中找到相應節點;
115、cvGetHashedKey:為名稱返回一個惟一的指針;
116、cvGetFileNode:在映圖或文件存儲器中找到節點;
117、cvGetFileNodeName:返迴文件的節點名;
118、cvReadInt:讀取一個無名稱的整數型;
119、cvReadIntByName:讀取一個有名稱的整數型;
120、cvReadReal:讀取一個無名稱的浮點型;
121、cvReadRealByName:讀取一個有名稱的浮點型;
122、cvReadString:從文件節點中尋找字元串;
123、cvReadStringByName:找到一個有名稱的文件節點並返回它;
124、cvRead:將對象解碼並返回它的指針;
125、cvReadByName:找到對象並解碼;
126、cvReadRawData:讀取多個數值;
127、cvStartReadRawData:初始化文件節點序列的讀取;
128、cvReadRawDataSlice:讀取文件節點的內容;
129、cvGetMoleInfo:檢查IPP庫是否已經正常安裝並且檢驗運行是否正常;
130、cvResizeWindow:用來調整窗口的大小;
131、cvSaveImage:保存圖像;
132、cvMoveWindow:將窗口移動到其左上角為x,y的位置;
133、cvDestroyAllWindow:用來關閉所有窗口並釋放窗口相關的內存空間;
134、cvGetTrackbarPos:讀取滑動條的值;
135、cvSetTrackbarPos:設置滑動條的值;
136、cvGrabFrame:用於快速將幀讀入內存;
137、cvRetrieveFrame:對讀入幀做所有必須的處理;
138、cvConvertImage:用於在常用的不同圖像格式之間轉換;
139、cvErode:形態腐蝕;
140、cvDilate:形態學膨脹;
141、cvMorphologyEx:更通用的形態學函數;
142、cvFloodFill:漫水填充演算法,用來進一步控制哪些區域將被填充顏色;
143、cvResize:放大或縮小圖像;
144、cvPyrUp:圖像金字塔,將現有的圖像在每個維度上都放大兩倍;
145、cvPyrSegmentation:利用金字塔實現圖像分割;
146、cvThreshold:圖像閾值化;
147、cvAcc:可以將8位整數類型圖像累加為浮點圖像;
148、cvAdaptiveThreshold:圖像自適應閾值;
149、cvFilter2D:圖像卷積;
150、cvCopyMakeBorder:將特定的圖像輕微變大,然後以各種方式自動填充圖像邊界;
151、cvSobel:圖像邊緣檢測,Sobel運算元;
152、cvLaplace:拉普拉斯變換、圖像邊緣檢測;
153、cvHoughLines2:霍夫直線變換;
154、cvHoughCircles:霍夫圓變換;
155、cvRemap:圖像重映射,校正標定圖像,圖像插值;
156、cvWarpAffine:稠密仿射變換;
157、cvGetQuadrangleSubPix:仿射變換;
158、cvGetAffineTransform:仿射映射矩陣的計算;
159、cvCloneImage:將整個IplImage結構復制到新的IplImage中;
160、cv2DRotationMatrix:仿射映射矩陣的計算;
161、cvTransform:稀疏仿射變換;
162、cvWarpPerspective:密集透視變換(單應性);
163、cvGetPerspectiveTransform:計算透視映射矩陣;
164、cvPerspectiveTransform:稀疏透視變換;
165、cvCartToPolar:將數值從笛卡爾空間到極坐標(極性空間)進行映射;
166、cvPolarToCart:將數值從極性空間到笛卡爾空間進行映射;
167、cvLogPolar:對數極坐標變換;
168、cvDFT:離散傅里葉變換;
169、cvMulSpectrums:頻譜乘法;
170、cvDCT:離散餘弦變換;
171、cvIntegral:計算積分圖像;
172、cvDistTransform:圖像的距離變換;
173、cvEqualizeHist:直方圖均衡化;
174、cvCreateHist:創建一新直方圖;
175、cvMakeHistHeaderForArray:根據已給出的數據創建直方圖;
176、cvNormalizeHist:歸一化直方圖;
177、cvThreshHist:直方圖閾值函數;
178、cvCalcHist:從圖像中自動計算直方圖;
179、cvCompareHist:用於對比兩個直方圖的相似度;
180、cvCalcEMD2:陸地移動距離(EMD)演算法;
181、cvCalcBackProject:反向投影;
182、cvCalcBackProjectPatch:圖塊的方向投影;
183、cvMatchTemplate:模板匹配;
184、cvCreateMemStorage:用於創建一個內存存儲器;
185、cvCreateSeq:創建序列;
186、cvSeqInvert:將序列進行逆序操作;
187、cvCvtSeqToArray:復制序列的全部或部分到一個連續內存數組中;
188、cvFindContours:從二值圖像中尋找輪廓;
189、cvDrawContours:繪制輪廓;
190、cvApproxPoly:使用多邊形逼近一個輪廓;
191、cvContourPerimeter:輪廓長度;
192、cvContoursMoments:計算輪廓矩;
193、cvMoments:計算Hu不變矩;
194、cvMatchShapes:使用矩進行匹配;
195、cvInitLineIterator:對任意直線上的像素進行采樣;
196、cvSampleLine:對直線采樣;
197、cvAbsDiff:幀差;
198、cvWatershed:分水嶺演算法;
199、cvInpaint:修補圖像;
200、cvGoodFeaturesToTrack:尋找角點;
201、cvFindCornerSubPix:用於發現亞像素精度的角點位置;
202、cvCalcOpticalFlowLK:實現非金字塔的Lucas-Kanade稠密光流演算法;
203、cvMeanShift:mean-shift跟蹤演算法;
204、cvCamShift:camshift跟蹤演算法;
205、cvCreateKalman:創建Kalman濾波器;
206、cvCreateConDensation:創建condensation濾波器;
207、cvConvertPointsHomogenious:對齊次坐標進行轉換;
208、cvFindChessboardCorners:定位棋盤角點;
209、cvFindHomography:計算單應性矩陣;
210、cvRodrigues2:羅德里格斯變換;
211、cvFitLine:直線擬合演算法;
212、cvCalcCovarMatrix:計算協方差矩陣;
213、cvInvert:計算協方差矩陣的逆矩陣;
214、cvMahalanobis:計算Mahalanobis距離;
215、cvKMeans2:K均值;
216、cvCloneMat:根據一個已有的矩陣創建一個新矩陣;
217、cvPreCornerDetect:計算用於角點檢測的特徵圖;
218、cvGetImage:CvMat圖像數據格式轉換成IplImage圖像數據格式;
219、cvMatMul:兩矩陣相乘;
2. 求C++中利用opencv計算輪廓圖像傅里葉描述子的代碼
一、特徵點(角點)匹配
圖像匹配能夠應用的場合非常多,如目標跟蹤,檢測,識別,圖像拼接等,而角點匹配最核心的技術就要屬角點匹配了,所謂角點匹配是指尋找兩幅圖像之間的特徵像素點的對應關系,從而確定兩幅圖像的位置關系。
角點匹配可以分為以下四個步驟:
1、提取檢測子:在兩張待匹配的圖像中尋找那些最容易識別的像素點(角點),比如紋理豐富的物體邊緣點等。
2、提取描述子:對於檢測出的角點,用一些數學上的特徵對其進行描述,如梯度直方圖,局部隨機二值特徵等。檢測子和描述子的常用提取方法有:sift,harris,surf,fast,agast,brisk,freak,brisk,brief/orb等。
3、匹配:通過各個角點的描述子來判斷它們在兩張圖像中的對應關系,常用方法如 flann等。
4、消噪:去除錯誤匹配的外點,保留正確的匹配點。常用方法有KDTREE,BBF,Ransac,GTM等。
二、SIFT匹法的提出
為了排除因為圖像遮擋和背景混亂而產生的無匹配關系的關鍵點,SIFT的作者Lowe提出了比較最近鄰距離與次近鄰距離的SIFT匹式:取一幅圖像中的一個SIFT關鍵點,並找出其與另一幅圖像中歐式距離最近的前兩個關鍵點,在這兩個關鍵點中,如果最近的距離除以次近的距離得到的比率ratio少於某個閾值T,則接受這一對匹配點。因為對於錯誤匹配,由於特徵空間的高維性,相似的距離可能有大量其他的錯誤匹配,從而它的ratio值比較高。顯然降低這個比例閾值T,SIFT匹配點數目會減少,但更加穩定,反之亦然。
Loweratio的閾值為0.8,但作者對大量任意存在尺度、旋轉和亮度變化的兩幅圖片進行匹配,結果表明ratio取值在0. 4~0. 6 之間最佳,小於0. 4的很少有匹配點,大於0. 6的則存在大量錯誤匹配點,所以建議ratio的取值原則如下:
ratio=0. 4:對於准確度要求高的匹配;
ratio=0. 6:對於匹配點數目要求比較多的匹配;
ratio=0. 5:一般情況下。
三、常見的SIFT匹配代碼
1、vlfeat中sift toolbox中的vl_ubcmatch.c使用的是普通的歐氏距離進行匹配(該SIFT代碼貢獻自Andrea
Vedaldi)。
2、Lowe的C++代碼中使用的是歐氏距離,但是在matlab代碼中為了加速計算,使用的是向量夾角來近似歐氏距離:先將128維SIFT特徵向量歸一化為單位向量(每個數除以平方和的平方根),然後點乘來得到向量夾角的餘弦值,最後利用反餘弦(acos函數)求取向量夾角。實驗證明Lowe的辦法正確率和耗時都很不錯。
同樣,也可以採用knnsearch函數求最近點和次近點:knnsearch採用euclidean距離時得到的結果與lowe採用的近似方法結果幾乎一致,正好印證了模擬歐氏距離的效果。
3、Rob Hess的OpenSIFT採用了KDTREE來對匹配進行優化。
4、CSDN大神v_JULY_v實現了KDTREE+BBF對SIFT匹配的優化和消除錯誤匹配:從K近鄰演算法、距離度量談到KD樹、SIFT+BBF演算法
- 結構之法 演算法之道 - 博客頻道 - CSDN.NET。
5、OpenCV中features2d實現的SIFT匹配有多種matcher:VectorDescriptorMatcher,BFMatcher(Brute-force descriptor matcher),FernDescriptorMatcher,OneWayDescriptorMatcher,FlannBasedMatcher 等等。目前只知道採用knnsearch,提供了多種距離度量方式,具體區別不懂。
3. EdgeBox&DPM
EdgeBox與DPM均是用於進行目標檢測。
EdgeBox的演算法原理大體如下圖所示:
在這兒參考了一片博客 blog.sina.com.cn/s/blog_e1b9226a0102w5rt.html ,大體總結Edgebox進行目標檢測的思路為:首先利用結構化的方法檢測出邊緣,並利用非極大值抑制對邊緣進行篩選;然後基於某種策略將似乎在一條直線上的邊緣點集合成若干個edge group,並計算edge group之間的相似度,越是在同一直線上的edge group,其相似度越高。再通過edge group來確定輪廓數,實現策略為給每個edge group計算一個權值,將權值為1的edge group歸為proposal內輪廓上的一部分,將權值為 0 的edge group歸為proposal外或proposal框重疊的一部分,由此便提取得到proposal,並對proposal進行評分,選取得分最高的proposal作為最後的檢測輸出。
但是該演算法有一個明顯的缺陷是當一幅圖像中包含多個相同的檢測目標時,其得分最高的proposal幾乎包含整幅圖像,而不是單獨的目標。原因在於,其不是基於「學習」的演算法,沒有訓練的過程,也就沒有具體的針對目標的模型,故這使得其在進行單一類別多目標檢測時效果不佳。
DPM(Deformable Parts Model):
由名字可以看出,該目標檢測的模型是可變形的,即具有一定的彈性。參考了博文 blog.csdn.net/carson2005/article/details/22499565
其與HoG的大體思路一致,訓練得到一個目標的梯度模型,然後再根據該梯度模型對待檢測目標進行匹配操作。只是DPM在形成模型時做了更多的改進工作,相比於Hog的但模型結構,其得到的是多模型結構。
其大體流程為:
訓練得到多個主模型(即不同視角下的物體表徵),然後形成多個子模型結構,在進行檢測時,根據主模型與子模型兩者匹配結果的綜合,來實現目標的最終檢測結果。之所以會有子模型結構的提出,主要是為了解決非剛性物體的形變問題,利用子模型與主模型間的先驗知識(如距離等)來判斷出在產生形變後的物體是否仍為待檢目標。其檢測流程可見下圖:
即首先利用主模型對圖像進行匹配操作,然後利用子模型對圖像進行匹配操作,最後將匹配後的結果進行某種運算,即基於子模型高相應中心是否在理論上該出現的位置,最後將結果進行綜合得到最後的檢測結果。
DPM模型的本質是 一種彈簧模型,即允許待檢測物體產生一定程度上的形變,由主模型與子模型間的檢測結果的綜合來實現檢測任務。
4. 雙目視覺的匹配演算法是不是有好幾種具體是哪幾種
與普通的圖像模板匹配不同的是,立體匹配是通過在兩幅或多幅存在視點差異、幾何畸變、灰度畸變、雜訊干擾的圖像對之間進行的,不存在任何標准模板進行匹配。立體匹配方法一般包含以下三個問題:(1)基元的選擇,即選擇適當的圖像特徵如點、直線、相位等作為匹配基元;(2)匹配的准則,將關於物理世界的某些固有特徵表示為匹配所必須遵循的若干規則,使匹配結果能真實反映景物的本來面目;(3)演算法結構,通過利用適當的數學方法設計能正確匹配所選擇基元的穩定演算法。
根據匹配基元的不同,立體視覺匹配演算法目前主要分為三大類,即區域匹配、相位匹配和特徵匹配:
基於區域灰度的匹配演算法是把一幅圖像(基準圖)中某一點的灰度鄰域作為模板,在另一幅圖像(待匹配圖)中搜索具有相同(或相似)灰度值分布的對應點鄰域,從而實現兩幅圖像的匹配。這類演算法的性能取決於度量演算法及搜索策略的選擇。另外,也必須考慮匹配窗口大小、形式的選擇,大窗口對於景物中存在的遮擋或圖像不光滑的情況會更多的出現誤匹配,小窗口則不具有足夠的灰度變化信息,不同的窗口形式對匹配信息也會有不同的影響。因此應該合理選取匹配區域的大小和形式來達到較好的匹配結果。
相位匹配是近二十年發展起來的一種匹配演算法,相位作為匹配基元,即認為圖像對中的對應點局部相位是一致的。最常用的相位匹配演算法有相位相關法和相位差——頻率法,雖然該方法是一種性能穩定、具有較強的抗輻射抗透視畸變能力、簡單高效、能得到稠密視差圖的特徵匹配方法。但是,當局部結構存在的假設不成立時,相位匹配演算法因帶通輸出信號的幅度太低而失去有效性,也就是通常提到的相位奇點問題,在相位奇點附近,相位信息對位置和頻率的變化極為敏感,因此用這些像素所確定的相位差異來衡量匹配誤差將導致極不可靠的結果。此外,相位匹配演算法的收斂范圍與帶通濾波器的波長有關,通常要考慮相位卷繞,在用相位差進行視差計算時,由於所採用的相位只是原信號某一帶通條件下的相位,故視差估計只能限制在某一限定范圍之內,隨視差范圍的增大,其精確性會有所下降。
基於特徵的圖像匹配方法是目前最常用的方法之一,由於它能夠將對整個圖像進行的各種分析轉化為對圖像特徵(特徵點、特徵曲線等)的分析的優點,從而大大減小了圖像處理過程的計算量,對灰度變化、圖像變形、噪音污染以及景物遮擋等都有較好的適應能力。
基於特徵的匹配方法是為使匹配過程滿足一定的抗噪能力且減少歧義性問題而提出來的。與基於區域的匹配方法不同,基於特徵的匹配方法是有選擇地匹配能表示景物自身特性的特徵,通過更多地強調空間景物的結構信息來解決匹配歧義性問題。這類方法將匹配的搜索范圍限制在一系列稀疏的特徵上。利用特徵間的距離作為度量手段,具有最小距離的特徵對就是最相近的特徵對,也就是匹配對。特徵間的距離度量有最大最小距離、歐氏距離等。
特徵點匹配演算法嚴格意義上可以分成特徵提取、特徵匹配和消除不良匹配點三步。特徵匹配不直接依賴於灰度,具有較強的抗干擾性。該類方法首先從待匹配的圖像中提取特徵,用相似性度量和一些約束條件確定幾何變換,最後將該變換作用於待匹配圖像。匹配中常用的特徵基元有角點、邊緣、輪廓、直線、顏色、紋理等。同時,特徵匹配演算法也同樣地存在著一些不足,主要表現為:
(l)特徵在圖像中的稀疏性決定了特徵匹配只能得到稀疏的視差場,要獲得密集的視差場必須通過使用插值的過程,插值過程通常較為復雜。
(2)特徵的提取和定位的准確與否直接影響特徵匹配結果的精確度。
(3)由於其應用場合的局限性,特徵匹配往往適用於具有特徵信息顯著的環境中,在缺少顯著主導特徵環境中該方法有很大困難。
總之,特徵匹配基元包含了演算法編程上的靈活性以及令人滿意的統計特性。演算法的許多約束條件均能清楚地應用於數據結構,而數據結構的規則性使得特徵匹配非常適用於硬體設計。例如,基於線段的特徵匹配演算法將場景模型描繪成相互聯結的邊緣線段,而不是區域匹配中的平面模型,因此能很好地處理一些幾何畸變問題,對對比度和明顯的光照變化等相對穩定。特徵匹配由於不直接依賴於灰度,計算量小,比基於區域的匹配演算法速度快的多。且由於邊緣特徵往往出現在視差不連續的區域,特徵匹配較易處理立體視覺匹配中的視差不連續問題。
5. 工業機器人視覺是基於位置還是基於圖像的
提取工件的邊緣特徵,經過對各種經典邊緣檢測運算元的分析比較表明:Canny運算元以其定位的准確性、響應的單一性而獲得較好的邊緣檢測效果。 其次,針對工件識別,本文在傳統圖像匹配演算法的基礎上,提出了基於改進遺傳演算法和Hausdorff距離的工件識別演算法。該演算法採用工件的邊緣為匹配特徵,將修正的Hausdorff距離作為目標物體輪廓的相似性度量准則,並應用遺傳演算法進行最佳匹配的快速搜索,在距離變換空間內,成功實現了目標物體的匹配識別。實驗結果表明:本文的方法能有效地檢測出具有平移、旋轉和小尺度變化以及有遮擋的目標物體。 第三,在對工件進行空間定位時,採用基於恆定旋轉矩陣法的單目移動視覺獲得工件的深度信息,並完成工件的三維定位。該方法通過保持機器人連桿三到機器人基坐標系的旋轉矩陣恆定來直接獲得世界坐標,簡化復雜的手眼標定和相機標定。
廣東粵為工業機器人學院解答
6. opencv 怎麼匹配一幅圖像多個輪廓
沒有現成的。利用現有匹配演算法得到匹配結果,然後設定區域間隔,閾值,是種方法。
7. 人臉識別系統的技術原理
人臉識別技術包含三個部分:
(1)人臉檢測
面貌檢測是指在動態的場景與復雜的背景中判斷是否存在面像,並分離出這種面像。一般有下列幾種方法:
①參考模板法
首先設計一個或數個標准人臉的模板,然後計算測試採集的樣品與標准模板之間的匹配程度,並通過閾值來判斷是否存在人臉;
②人臉規則法
由於人臉具有一定的結構分布特徵,所謂人臉規則的方法即提取這些特徵生成相應的規則以判斷測試樣品是否包含人臉;
③樣品學習法
這種方法即採用模式識別中人工神經網路的方法,即通過對面像樣品集和非面像樣品集的學習產生分類器;
④膚色模型法
這種方法是依據面貌膚色在色彩空間中分布相對集中的規律來進行檢測。
⑤特徵子臉法
這種方法是將所有面像集合視為一個面像子空間,並基於檢測樣品與其在子孔間的投影之間的距離判斷是否存在面像。
值得提出的是,上述5種方法在實際檢測系統中也可綜合採用。
(2)人臉跟蹤
面貌跟蹤是指對被檢測到的面貌進行動態目標跟蹤。具體採用基於模型的方法或基於運動與模型相結合的方法。此外,利用膚色模型跟蹤也不失為一種簡單而有效的手段。
(3)人臉比對
面貌比對是對被檢測到的面貌像進行身份確認或在面像庫中進行目標搜索。這實際上就是說,將采樣到的面像與庫存的面像依次進行比對,並找出最佳的匹配對象。所以,面像的描述決定了面像識別的具體方法與性能。目前主要採用特徵向量與面紋模板兩種描述方法:
①特徵向量法
該方法是先確定眼虹膜、鼻翼、嘴角等面像五官輪廓的大小、位置、距離等屬性,然後再計算出它們的幾何特徵量,而這些特徵量形成一描述該面像的特徵向量。
②面紋模板法
該方法是在庫中存貯若干標准面像模板或面像器官模板,在進行比對時,將采樣面像所有象素與庫中所有模板採用歸一化相關量度量進行匹配。此外,還有採用模式識別的自相關網路或特徵與模板相結合的方法。
人臉識別技術的核心實際為「局部人體特徵分析」和「圖形/神經識別演算法。」這種演算法是利用人體面部各器官及特徵部位的方法。如對應幾何關系多數據形成識別參數與資料庫中所有的原始參數進行比較、判斷與確認。一般要求判斷時間低於1秒。 一般分三步:
(1)首先建立人臉的面像檔案。即用攝像機採集單位人員的人臉的面像文件或取他們的照片形成面像文件,並將這些面像文件生成面紋(Faceprint)編碼貯存起來。
(2)獲取當前的人體面像。即用攝像機捕捉的當前出入人員的面像,或取照片輸入,並將當前的面像文件生成面紋編碼。
(3)用當前的面紋編碼與檔案庫存的比對。即將當前的面像的面紋編碼與檔案庫存中的面紋編碼進行檢索比對。上述的「面紋編碼」方式是根據人臉臉部的本質特徵和開頭來工作的。這種面紋編碼可以抵抗光線、皮膚色調、面部毛發、發型、眼鏡、表情和姿態的變化,具有強大的可靠性,從而使它可以從百萬人中精確地辯認出某個人。人臉的識別過程,利用普通的圖像處理設備就能自動、連續、實時地完成。
8. opencv的人臉識別基於什麼特徵
基於幾何特徵的人臉識別方法
基於特徵的方法是一種自下而上的人臉檢測方法,由於人眼可以將人臉在不此研究人員認為有一個潛在的假設:人臉或人臉的部件可能具有在各種條件下都不會改變的特徵或屬性,如形狀、膚色、紋理、邊緣信息等。基於特徵的方法的目標就是尋找上述這些不變特徵,並利用這些特徵來定位入臉。這類方法在特定的環境下非常有效且檢測速度較高,對人臉姿態、表情、旋轉都不敏感。但是由於人臉部件的提取通常都藉助於邊緣運算元,因此,這類方法對圖像質量要求較高,對光照和背景等有較高的要求,因為光照、噪音、陰影都極有可能破壞人臉部件的邊緣,從而影響演算法的有效性。
模板匹配演算法首先需要人TN作標准模板(固定模板)或將模板先行參數化(可變模板),然後在檢測人臉時,計算輸入圖像與模板之間的相關值,這個相關值通常都是獨立計算臉部輪廓、眼睛、鼻子和嘴各自的匹配程度後得出的綜合描述,最後再根據相關值和預先設定的閾值來確定圖像中是否存在人臉。基於可變模板的人臉檢測演算法比固定模板演算法檢測效果要好很多,但是它仍不能有效地處理人臉尺度、姿態和形狀等方面的變化。
基於外觀形狀的方法並不對輸入圖像進行復雜的預處理,也不需要人工的對人臉特徵進行分析或是抽取模板,而是通過使用特定的方法(如主成分分析方法(PCA)、支持向量機(SVM)、神經網路方法(ANN)等)對大量的人臉和非人臉樣本組成的訓練集(一般為了保證訓練得到的檢測器精度,非人臉樣本集的容量要為人臉樣本集的兩倍以上)進行學習,再將學習而成的模板或者說分類器用於人臉檢測。因此,這也是j種自下而上的方法。這種方法的優點是利用強大的機器學習演算法快速穩定地實現了很好的檢測結果,並且該方法在復雜背景下,多姿態的人臉圖像中也能得到有效的檢測結果。但是這種方法通常需要遍歷整個圖片才能得到檢測結果,並且在訓練過程中需要大量的人臉與非人臉樣本,以及較長的訓練時間。近幾年來,針對該方法的人臉檢測研究相對比較活躍。
基於代數特徵的人臉識別方法
在基於代數特徵的人臉識別中,每一幅人臉圖像被看成是以像素點灰度為元素的矩陣,用反映某些性質的數據特徵來表示人臉的特徵。 設人臉圖像 ) , ( y x I 為二維 N M × 灰度圖像,同樣可以看成是 N M n × = 維列向量,可視為 N M × 維空間中的一個點。但這樣的一個空間中,並不是空間中的每一部分都包含有價值的信息,故一般情況下,需要通過某種變換,將如此巨大的空間中的這些點映射到一個維數較低的空間中去。然後利用對圖像投影間的某種度量來確定圖像間的相似度,最常見的就是各種距離度量。 在基於代數特徵的人臉識別方法中,主成分分析法(PCA)和Fisher 線性判別分析(LDA)是研究最多的方法。本章簡要介紹介紹了PCA。
完整的PCA(PrincipalComponentAnalysis)人臉識別的應用包括四個步驟:人臉圖像預處理;讀入人臉庫,訓練形成特徵子空間;把訓練圖像和測試圖像投影的上一步驟中得到的子空間上;選擇一定的距離函數進行識別。詳細描述如下:
4.1讀入人臉庫
一歸一化人臉庫後,將庫中的每個人選擇一定數量的圖像構成訓練集,設歸一化後的圖像是n×n,按列相連就構成n2維矢量,可視為n2維空間中的一個點,可以通過K-L變換用一個低維子空間描述這個圖像。
4.2計算K.L變換的生成矩陣
訓練樣本集的總體散布矩陣為產生矩陣,即
或者寫成:
式中xi為第i個訓練樣本的圖像向量,|l為訓練樣本的均值向量,M為訓練樣本的總數。為了求n2×n2維矩陣∑的特徵值和正交歸一化的特徵向量,要直接計算的話,計算量太大,由此引入奇異值分解定理來解決維數過高的問題。
4.3利用奇異值分解(AVD)定理計算圖像的特徵值和特徵向量
設A是一個秩為r的行n×r維矩陣,則存在兩個正交矩陣和對角陣:
其中凡則這兩個正交矩陣和對角矩陣滿足下式:
其中為矩陣的非零特徵值,
4.4 把訓練圖像和測試圖像投影到特徵空間每一副人臉圖像向特徵臉子空間投影,得到一組坐標系數,就對應於子空間中的一個點。同樣,子空間中的任一點也對應於~副圖像。這組系數便可作為人臉識別的依據,也就是這張人臉圖像的特徵臉特徵。也就是說任何一幅人臉圖像都可以表示為這組特徵臉的線性組合,各個加權系數就是K.L變換的展開系數,可以作為圖像的識別特徵,表明了該圖像在子空間的位置,也就是向量
可用於人臉檢測,如果它大於某個閾值,可以認為f是人臉圖像,否則就認為不是。這樣原來的人臉圖象識別問題就轉化為依據子空間的訓練樣本點進行分類的問題。
基於連接機制的人臉識別方法
基於連接機制的識別方法的代表性有神經網路和彈性匹配法。
神經網路(ANN)在人工智慧領域近年來是一個研究熱門,基於神經網路技術來進行人臉特徵提取和特徵識別是一個積極的研究方向。神經網路通過大量簡單神經元互聯來構成復雜系統,在人臉識別中取得了較好的效果,特別是正面人臉圖像。常用的神經網路有:BP網路、卷積網路、徑向基函數網路、自組織網路以及模糊神經網路等n¨。BP網路的運算量較小耗時也短,它的自適應功能使系統的魯棒性增強。神經網路用於人臉識別,相比較其他方法,其可以獲得識別規則的隱性表達,缺點是訓練時間長、運算量大、收斂速度慢且容易陷入局部極小點等。Gutta等人結合RBF與樹型分類器的混合分類器模型來進行人臉識別乜螂1。Lin等人採用虛擬樣本進行強化和反強化學習,採用模塊化的網路結構網路的學習加快,實現了基於概率決策的神經網路方法獲得了較理想結果,。此種方法能較好的應用於人臉檢測和識別的各步驟中。彈性匹配法採用屬性拓撲圖代表人臉,拓撲圖的每個頂點包含一個特徵向量,以此來記錄人臉在該頂點位置周圍的特徵信息¨引。拓撲圖的頂點是採用小波變換特徵,對光線、角度和尺寸都具有一定的適應性,且能適應表情和視角的變化,其在理論上改進了特徵臉演算法的一些缺點。
基於三維數據的人臉識別方法
一個完整的人臉識別系統包括人臉面部數據的獲取、數據分析處理和最終結果輸出三個部分。圖2-1 顯示了三維人臉識別的基本步驟:1 、通過三維數據採集設備獲得人臉面部的三維形狀信息;2 、對獲取的三維數據進行平滑去噪和提取面部區域等預處理;3 、從三維數據中提取人臉面部特徵,通過與人臉庫中的數據進行比對;4 、用分類器做分類判別,輸出最後決策結果。
基於三維數據的方法的代表性是基於模型合成的方法和基於曲率的方法。
基於模型合成的方法,它的基本思想為:輸入人臉圖像的二維的,用某種技術恢復(或部分恢復)人臉的三維信息,再重新合成指定條件下的人臉圖像。典型代表是3D可變形模型和基於形狀恢復的3D增強人臉識別演算法。3D可變形模型首先通過200個高精度的3D人臉模型構建一個可變形的3D人臉模型,用這個模型來對給定的人臉圖像擬合,獲得一組特定的參數,再合成任何姿態和光照的人臉圖像n卜捌。基於形狀恢復的3D增強人臉識別演算法是利用通用的3D人臉模型合成新的人臉圖像,合成過程改變了一定的姿態與光源情況。
曲率是最基本的表達曲面信息的局部特徵,因而最早用來處理3D人臉識別問題的是人臉曲面的曲率。Lee禾lJ用平均曲率和高斯曲率值,將人臉深度圖中凸的區域分割出來。
如果你是開發者的話,可以去Tel一下colorreco,更好地技術解答。
9. 數字圖像處理處理中的數學怎麼提高
(一)數學模型
包括各種具有實際背景及應用價值的有關圖像恢復等圖像處理問題的數學模型;
(二)數值方程
包括與圖像處理有關的非線性偏微分方程、變分法的理論及各種數值方程;
(三)圖像偏微分方程的數值解法,
包括輪廓線匹配演算法、圖像匹配演算法、基於擴散方程的保邊界降雜訊演算法和近年發展較快的水平集法及總變分方法.
10. 想問一下有沒有比較方便的人臉識別演算法,求推薦
主流的人臉識別技術基本上可以歸結為三類,即:基於幾何特徵的方法、基於模板的方法和基於模型的方法。
1. 基於幾何特徵的方法是最早、最傳統的方法,通常需要和其他演算法結合才能有比較好的效果;
2. 基於模板的方法可以分為基於相關匹配的方法、特徵臉方法、線性判別分析方法、奇異值分解方法、神經網路方法、動態連接匹配方法等。
3. 基於模型的方法則有基於隱馬爾柯夫模型,主動形狀模型和主動外觀模型的方法等。
1. 基於幾何特徵的方法
人臉由眼睛、鼻子、嘴巴、下巴等部件構成,正因為這些部件的形狀、大小和結構上的各種差異才使得世界上每個人臉千差萬別,因此對這些部件的形狀和結構關系的幾何描述,可以做為人臉識別的重要特徵。幾何特徵最早是用於人臉側面輪廓的描述與識別,首先根據側面輪廓曲線確定若干顯著點,並由這些顯著點導出一組用於識別的特徵度量如距離、角度等。Jia 等由正麵灰度圖中線附近的積分投影模擬側面輪廓圖是一種很有新意的方法。
採用幾何特徵進行正面人臉識別一般是通過提取人眼、口、鼻等重要特徵點的位置和眼睛等重要器官的幾何形狀作為分類特徵,但Roder對幾何特徵提取的精確性進行了實驗性的研究,結果不容樂觀。
可變形模板法可以視為幾何特徵方法的一種改進,其基本思想是 :設計一個參數可調的器官模型 (即可變形模板),定義一個能量函數,通過調整模型參數使能量函數最小化,此時的模型參數即做為該器官的幾何特徵。
這種方法思想很好,但是存在兩個問題,一是能量函數中各種代價的加權系數只能由經驗確定,難以推廣,二是能量函數優化過程十分耗時,難以實際應用。 基於參數的人臉表示可以實現對人臉顯著特徵的一個高效描述,但它需要大量的前處理和精細的參數選擇。同時,採用一般幾何特徵只描述了部件的基本形狀與結構關系,忽略了局部細微特徵,造成部分信息的丟失,更適合於做粗分類,而且目前已有的特徵點檢測技術在精確率上還遠不能滿足要求,計算量也較大。
2. 局部特徵分析方法(Local Face Analysis)
主元子空間的表示是緊湊的,特徵維數大大降低,但它是非局部化的,其核函數的支集擴展在整個坐標空間中,同時它是非拓撲的,某個軸投影後臨近的點與原圖像空間中點的臨近性沒有任何關系,而局部性和拓撲性對模式分析和分割是理想的特性,似乎這更符合神經信息處理的機制,因此尋找具有這種特性的表達十分重要。基於這種考慮,Atick提出基於局部特徵的人臉特徵提取與識別方法。這種方法在實際應用取得了很好的效果,它構成了FaceIt人臉識別軟體的基礎。
3. 特徵臉方法(Eigenface或PCA)
特徵臉方法是90年代初期由Turk和Pentland提出的目前最流行的演算法之一,具有簡單有效的特點, 也稱為基於主成分分析(principal component analysis,簡稱PCA)的人臉識別方法。
特徵子臉技術的基本思想是:從統計的觀點,尋找人臉圖像分布的基本元素,即人臉圖像樣本集協方差矩陣的特徵向量,以此近似地表徵人臉圖像。這些特徵向量稱為特徵臉(Eigenface)。
實際上,特徵臉反映了隱含在人臉樣本集合內部的信息和人臉的結構關系。將眼睛、面頰、下頜的樣本集協方差矩陣的特徵向量稱為特徵眼、特徵頜和特徵唇,統稱特徵子臉。特徵子臉在相應的圖像空間中生成子空間,稱為子臉空間。計算出測試圖像窗口在子臉空間的投影距離,若窗口圖像滿足閾值比較條件,則判斷其為人臉。
基於特徵分析的方法,也就是將人臉基準點的相對比率和其它描述人臉臉部特徵的形狀參數或類別參數等一起構成識別特徵向量,這種基於整體臉的識別不僅保留了人臉部件之間的拓撲關系,而且也保留了各部件本身的信息,而基於部件的識別則是通過提取出局部輪廓信息及灰度信息來設計具體識別演算法。現在Eigenface(PCA)演算法已經與經典的模板匹配演算法一起成為測試人臉識別系統性能的基準演算法;而自1991年特徵臉技術誕生以來,研究者對其進行了各種各樣的實驗和理論分析,FERET'96測試結果也表明,改進的特徵臉演算法是主流的人臉識別技術,也是具有最好性能的識別方法之一。
該方法是先確定眼虹膜、鼻翼、嘴角等面像五官輪廓的大小、位置、距離等屬性,然後再計算出它們的幾何特徵量,而這些特徵量形成一描述該面像的特徵向量。其技術的核心實際為「局部人體特徵分析」和「圖形/神經識別演算法。」這種演算法是利用人體面部各器官及特徵部位的方法。如對應幾何關系多數據形成識別參數與資料庫中所有的原始參數進行比較、判斷與確認。Turk和Pentland提出特徵臉的方法,它根據一組人臉訓練圖像構造主元子空間,由於主元具有臉的形狀,也稱為特徵臉 ,識別時將測試 圖像投影到主元子空間上,得到一組投影系數,和各個已知人的人臉圖像比較進行識別。Pentland等報告了相當好的結果,在 200個人的 3000幅圖像中得到 95%的正確識別率,在FERET資料庫上對 150幅正面人臉象只有一個誤識別。但系統在進行特徵臉方法之前需要作大量預處理工作如歸一化等。
在傳統特徵臉的基礎上,研究者注意到特徵值大的特徵向量 (即特徵臉 )並不一定是分類性能好的方向,據此發展了多種特徵 (子空間 )選擇方法,如Peng的雙子空間方法、Weng的線性歧義分析方法、Belhumeur的FisherFace方法等。事實上,特徵臉方法是一種顯式主元分析人臉建模,一些線性自聯想、線性壓縮型BP網則為隱式的主元分析方法,它們都是把人臉表示為一些向量的加權和,這些向量是訓練集叉積陣的主特徵向量,Valentin對此作了詳細討論。總之,特徵臉方法是一種簡單、快速、實用的基於變換系數特徵的演算法,但由於它在本質上依賴於訓練集和測試集圖像的灰度相關性,而且要求測試圖像與訓練集比較像,所以它有著很大的局限性。
基於KL 變換的特徵人臉識別方法
基本原理:
KL變換是圖象壓縮中的一種最優正交變換,人們將它用於統計特徵提取,從而形成了子空間法模式識別的基礎,若將KL變換用於人臉識別,則需假設人臉處於低維線性空間,且不同人臉具有可分性,由於高維圖象空間KL變換後可得到一組新的正交基,因此可通過保留部分正交基,以生成低維人臉空間,而低維空間的基則是通過分析人臉訓練樣本集的統計特性來獲得,KL變換的生成矩陣可以是訓練樣本集的總體散布矩陣,也可以是訓練樣本集的類間散布矩陣,即可採用同一人的數張圖象的平均來進行訓練,這樣可在一定程度上消除光線等的干擾,且計算量也得到減少,而識別率不會下降。
4. 基於彈性模型的方法
Lades等人針對畸變不變性的物體識別提出了動態鏈接模型 (DLA),將物體用稀疏圖形來描述 (見下圖),其頂點用局部能量譜的多尺度描述來標記,邊則表示拓撲連接關系並用幾何距離來標記,然後應用塑性圖形匹配技術來尋找最近的已知圖形。Wiscott等人在此基礎上作了改進,用FERET圖像庫做實驗,用 300幅人臉圖像和另外 300幅圖像作比較,准確率達到 97.3%。此方法的缺點是計算量非常巨大 。
Nastar將人臉圖像 (Ⅰ ) (x,y)建模為可變形的 3D網格表面 (x,y,I(x,y) ) (如下圖所示 ),從而將人臉匹配問題轉化為可變形曲面的彈性匹配問題。利用有限元分析的方法進行曲面變形,並根據變形的情況判斷兩張圖片是否為同一個人。這種方法的特點在於將空間 (x,y)和灰度I(x,y)放在了一個 3D空間中同時考慮,實驗表明識別結果明顯優於特徵臉方法。
Lanitis等提出靈活表現模型方法,通過自動定位人臉的顯著特徵點將人臉編碼為 83個模型參數,並利用辨別分析的方法進行基於形狀信息的人臉識別。彈性圖匹配技術是一種基於幾何特徵和對灰度分布信息進行小波紋理分析相結合的識別演算法,由於該演算法較好的利用了人臉的結構和灰度分布信息,而且還具有自動精確定位面部特徵點的功能,因而具有良好的識別效果,適應性強識別率較高,該技術在FERET測試中若干指標名列前茅,其缺點是時間復雜度高,速度較慢,實現復雜。
5. 神經網路方法(Neural Networks)
人工神經網路是一種非線性動力學系統,具有良好的自組織、自適應能力。目前神經網路方法在人臉識別中的研究方興未艾。Valentin提出一種方法,首先提取人臉的 50個主元,然後用自相關神經網路將它映射到 5維空間中,再用一個普通的多層感知器進行判別,對一些簡單的測試圖像效果較好;Intrator等提出了一種混合型神經網路來進行人臉識別,其中非監督神經網路用於特徵提取,而監督神經網路用於分類。Lee等將人臉的特點用六條規則描述,然後根據這六條規則進行五官的定位,將五官之間的幾何距離輸入模糊神經網路進行識別,效果較一般的基於歐氏距離的方法有較大改善,Laurence等採用卷積神經網路方法進行人臉識別,由於卷積神經網路中集成了相鄰像素之間的相關性知識,從而在一定程度上獲得了對圖像平移、旋轉和局部變形的不變性,因此得到非常理想的識別結果,Lin等提出了基於概率決策的神經網路方法 (PDBNN),其主要思想是採用虛擬 (正反例 )樣本進行強化和反強化學習,從而得到較為理想的概率估計結果,並採用模塊化的網路結構 (OCON)加快網路的學習。這種方法在人臉檢測、人臉定位和人臉識別的各個步驟上都得到了較好的應用,其它研究還有 :Dai等提出用Hopfield網路進行低解析度人臉聯想與識別,Gutta等提出將RBF與樹型分類器結合起來進行人臉識別的混合分類器模型,Phillips等人將MatchingPursuit濾波器用於人臉識別,國內則採用統計學習理論中的支撐向量機進行人臉分類。
神經網路方法在人臉識別上的應用比起前述幾類方法來有一定的優勢,因為對人臉識別的許多規律或規則進行顯性的描述是相當困難的,而神經網路方法則可以通過學習的過程獲得對這些規律和規則的隱性表達,它的適應性更強,一般也比較容易實現。因此人工神經網路識別速度快,但識別率低 。而神經網路方法通常需要將人臉作為一個一維向量輸入,因此輸入節點龐大,其識別重要的一個目標就是降維處理。
PCA的演算法描述:利用主元分析法 (即 Principle Component Analysis,簡稱 PCA)進行識別是由 Anderson和 Kohonen提出的。由於 PCA在將高維向量向低維向量轉化時,使低維向量各分量的方差最大,且各分量互不相關,因此可以達到最優的特徵抽取。