圖像處理
--SURF算法
完成圖像卷積、通過海塞矩陣測特征值、完成特征點的64維描述
精度和穩定性不如sift算法,但綜合來看,比較適合處理視頻流
1.保證尺度無關性,對像素點進行高斯濾波(高斯平滑處理+二階導數),再構造海塞矩陣,計算特征值
2.找出特征點
其中0.9是原著作者給的經驗值,特征點表示由像素點的海塞矩陣行列式近似值構成
3.構造高斯金字塔
區別於sift,每組圖像大小不變,改變濾波器(高斯模糊模板)的尺寸和尺度σ,沒有了降采樣的步驟,所以提升了速度,精確度相對下降,但對於視頻流總體可接受。
4.定位特征點
非極大值抑制。將每個像素點與其三維鄰域的26個點進行大小比較,若這個點是極值,則保留用作初步特征點,采用三維線性插值法(根據8個點的像素值得到一個點的像素值)得到亞像素級的特征點,去掉小於一定閾值的點,留下特征最強的點集
5.確定特征點主方向
為保證旋轉不變性,不統計其梯度直方圖,只統計特征點領域內的Harr小波特征,計算半徑為6σ(經驗值)的圓形區域內,統計60°扇形內特征點的Harr矢量之和,遍歷圓形區域,選擇最長harr矢量方向為主方向。
6.構造特征描述子
在特征點周圍取一個長方形矢量框,邊長20σ ,方向即特征點主方向,分16份,每份統計25個像素的水平、垂直方向(相對於主方向)的haar小波特征(Σdx,Σ|dx|,Σdy,Σ|dy|),即每個特征點是16*4=64維向量。
7.匹配、篩選、拼接
比較最近鄰距離與次近鄰距離的sift匹配方式:
取圖A的一個關鍵點a,找出其與圖B中歐氏距離,最近的前兩個關鍵點b, c之間的距離s1 s2(設s1<s2),則a--b為一對匹配點
ratio=s1/s2,若ratio小於某個閾值T(0.4~0.6),則接受這一對匹配點
通過單應性矩陣進行拼接
A = MB 其中AB是兩個圖對應點的三位坐標,找出兩對對應點即可求出矩陣M,把圖2所有像素點進行矩陣變換即可。
8.融合
加權平均法。簡單的使用加權的方式從左邊過渡到右邊,匹配點的像素值為A*05+B*0.5
視頻流處理
任務需求:
攝像頭圖像大小為640*512,fps為25
- 通過對視頻流的幀處理得到圖像,fps在10-20左右可以滿足一般的監控需求,但估算算法的執行效率平均大概在0.7左右甚至更慢。fps想要達到25,需要控制處理幀的數量和使用多線程並行處理。
- 臨近幾幀的圖像基本相同,可以隔幾幀調用一次算法。
- Fps為25,意味着效率要在0.04,再算上網絡延時,很難達到效果,采用多線程並行執行算法,理論上,(單次調用算法執行時間 / 線程數量 < 0.04) 就能滿足要求,但是多線程會打亂幀順序,考慮用隊列控制