A. 關於SURF演算法
於圖像配准演算法的SURF的程序
B. Surf的SURF演算法
加速穩健特徵(Speeded Up Robust Features, SURF)是一個穩健的圖像識別和描述演算法,首先於2006年發表在歐洲計算機視覺國際會議(Europeon Conference on Computer Vision,ECCV)。該演算法可被用於計算機視覺任務,如物件識別和3D重構。他部分的靈感來自於SIFT演算法。SURF標準的版本比SIFT要快數倍,並且其作者聲稱在不同圖像變換方面比SIFT更加穩健。SURF 基於近似的2D 離散小波變換響應和並且有效地利用了積分圖。
該演算法由Herbert Bay於2006年首次發表於ECCV,2008年正式發表在Computer vision and image understanding期刊上,論文被引9000餘次。 Hessian矩陣是SURF演算法的核心,為了方便運算,假設函數f(x,y),Hessian矩陣H是由函數的二階偏導數組成:
C. surf演算法C語言編寫,要做嵌入式開發,不要C++和基於OPENCV的
surf借鑒了sift中簡化近似的思想,將DOH中的高斯二階微分模板進行了近似簡化,使得模板對圖像的濾波只需要進行幾個簡單的加減法運算,並且,這種運算與濾波模板的尺寸有關。實驗證明surf演算法較sift演算法在運算速度上要快3倍左右。
1積分圖像
surf演算法中要用到積分圖像的概念。藉助積分圖像,圖像與高斯二階微分模板的濾波轉化為對積分圖像的加減運算。積分圖像(IntegralImage)的概念是由viola和Jones提出來的,而將類似積分圖像用於盒子濾波是由Simard等人提出。
積分圖像中任意一點(i,j)的值為ii(i,j)為原圖像左上角到任意點(i,j)相應的對角線區域灰度值的總和即:
公式中,I(x`,y`)表示原圖像中點(i`,j`)的灰度值,ii(x,y)可以由下面兩公式迭代計算得到:
公式中,S(x,y)表示一列的積分,且S(i,-1)=0,ii(-1,j)=0.求積分圖像,只需對原圖像的所有像素素進行一遍掃描。下面的代碼為c++語言的實現
pOutImage[0][0]=pInImage[0][0];
for(intx=1,x<nWidth;i++)
{
pOutImage[x][0]=pInImage[x-1][0]+pInImage[x][0];
}
for(inty=1;y<nHeight;y++)
{
intnSum=0;
for(intx=0;x<nWidth;x++)
{
nSum=pInImage[x][y];
pOutImage[x][y]=pInImage[x][y-1]+nSum;
}
}
如圖表示,在求取窗口w內的像元灰度和時,不管窗口W的大小如何,均可利用積分圖像的4個對應點(i1,j1)(i2,j2)(i3,j3)(i4,j4)的值計算的到。也就是說,求取窗口W內的像元灰度和與窗口的尺寸是無關的。窗口W內的像元的灰度和為
Sum(W)=ii(i4,j4)-ii(i2,j2)-ii(i3,j3)+ii(i1,j1)
下面看以截圖,相信都可以看懂
關於矩形區域內像素點的求和應該是一種簡單重復性運算,採用這種思路總體上提高了效率。為什麼這么說呢?假設一幅圖片共有n個像素點,則計算n個位置的積分圖總共的加法運算有n-1次(注意:可不是次哦,要充分利用遞推思想),將這些結果保存在一個跟原圖對應的矩陣M中。當需要計算圖像中某個矩形區域內的所有像素之和是直接像查表一樣,調出A,B,C,D四點的積分圖值,簡單的加減法(注意只需要三次哦)即可得到結果。反之,如果採用naive的方式直接在原圖像中的某個矩形區域內求和,你想想,總共可能的矩形組合有多少?!!且對於一幅圖像n那是相當大啊,所以2^n
那可是天文數字,而且這裡面絕大部分的矩形有重疊,重疊意味著什麼?在算求和的時候有重復性的工作,其實我們是可以有效的利用已經計算過的信息的。這就是積分圖法的內在思想:它實際上是先計算n個互不重疊(專業點說是不相交)的矩形區域內的像素點求和,充分利用這些值(已有值)計算未知值,有點類似遞推的味道...這就完全避免了重復求和運算。
這樣就可以進行2種運算:
(1)任意矩形區域內像素積分。由圖像的積分圖可方便快速地計算圖像中任意矩形內所有像素灰度積分。如下圖2.3所示,點1的積分圖像ii1的值為(其中Sum為求和):
ii1=Sum(A)
同理,點2、點3、點4的積分圖像分別為:
ii2=Sum(A)+Sum(B);ii3=Sum(A)+Sum(C);ii4=Sum(A)+Sum(B)+Sum(C)+Sum(D);
矩形區域D內的所有像素灰度積分可由矩形端點的積分圖像值得到:
Sum(D)=ii1+ii4-(ii2+ii3)(1)
(2)特徵值計算
矩形特徵的特徵值是兩個不同的矩形區域像素和之差,由(1)式可以計算任意矩形特徵的特徵值,下面以圖2.1中特徵原型A為例說明特徵值的計算。
如圖2.4所示,該特徵原型的特徵值定義為:
Sum(A)-Sum(B)
根據(1)式則有:Sum(A)=ii4+ii1-(ii2+ii3);Sum(B)=ii6+ii3-(ii4+ii5);
所以此類特徵原型的特徵值為:
(ii4-ii3)-(ii2-ii1)+(ii4-ii3)-(ii6-ii5)
另示:運用積分圖可以快速計算給定的矩形之所有象素值之和Sum(r)。假設r=(x,y,w,h),那麼此矩形內部所有元素之和等價於下面積分圖中下面這個式子:
Sum(r)=ii(x+w,y+h)+ii(x-1,y-1)-ii(x+w,y-1)-ii(x-1,y+h)
由此可見,矩形特徵特徵值計算只與此特徵端點的積分圖有關,而與圖像坐標值無關。對於同一類型的矩形特徵,不管特徵的尺度和位置如何,特徵值的計算所耗費的時間都是常量,而且都只是簡單的加減運算。其它類型的特徵值計算方法類似。
D. C++ 在寫SURF演算法的時候關於特徵點連接不了的問題
http://www.cnblogs.com/tornadomeet/archive/2012/08/17/2644903.html
聽說回答的字數夠長能夠自動採納
E. 求助SURF演算法的源代碼
如果說SIFT演算法中使用DOG對LOG進行了簡化,提高了搜索特徵點的速度,那麼SURF演算法則是對DoH的簡化與近似。
雖然SIFT演算法已經被認為是最有效的,也是最常用的特徵點提取的演算法,但如果不藉助於硬體的加速和專用圖像處理器的配合,SIFT演算法以現有的計算機仍然很難達到實時的程度。
F. 拓撲優化
3.5.2.1 邊交換
拓撲優化方法的思想通過改變網格的拓撲結構來提高網格質量。二維時,最常用的是邊交換演算法。類似於Delaunay三角剖分中涉及的最小角最大化特性,應盡量使三角網格中每個三角形單元避免出現狹長的角。二維三角形網格中,針對共用一條邊的一對三角形組成的凸四邊形,通過改變上述三角形對的共用邊(即凸四邊形的對角線)進行局部重構從而提高三角形對的質量。
圖3.29 二分法加密結點與單元重劃分
刪除點的操作主要是作為一種重定義技術。許多實例當中,通過刪除一個區域的網格完成刪除點的操作,然後重新選擇長度比例對這個空腔進行網格重新生成。點刪除技術的不同應用也可以用來改善單元的幾何形狀達到網格優化的目的。最常見的做法是當兩點距離小於某一個閾值時,刪除這兩點,並加入這兩點的中點,且更新通過上述兩點的網格單元的拓撲。
G. 請參考 :http://tieba.baidu.com/p/2514079408 「寫了一個SURF演算法的C語言實現,發下代碼。。」
看了下, 編譯不了,
它是在linux環境弄得,而且,函數太多,
要編譯首先要知道main函數, 然後,用到的頭文件,包含進來,就可以編譯了.
說白了,你要先知道它的代碼用途, 才行
也可能他寫的只是一個函數, 就像一個庫函數printf之類的, 有用的人可以借用他寫的...
H. matlab surf 顏色控制 單一顏色
t=0:0.01:tan(25/180*pi);
[X,Y,Z]=cylinder(t);
[M,N]=size(X);
col=ones(M,N,3);
col(:,:,1)=0/255;
col(:,:,2)=255;%藍色
col(:,:,2)=0/255;
surf(X,Y,2*Z,col);
shadinginterp
set(gca,'DataAspectRatio',[111]);
I. 求用surf演算法實現斑點特徵檢測的 matlab程序代碼
surf分解,matlab中有現成命令,給一個矩陣就可以直接分解了。
J. sift和surf演算法哪個提取的特徵點多
整個項目的結構圖: 編寫DetectFaceDemo.java,代碼如下: [java] view plainprint? package com.njupt.zhb.test; import org.opencv.core.Core; import org.opencv.core.Mat; import org.opencv.core.MatOfRect; import org.opencv.core.Poi。