李乃乾 劉楊
摘 要: 針對路亞運動中需要對捕獲魚的長度進行測量的問題,本文是基于iOS平臺上對目標做出識別進而測量出物體的長度。主要是通過OpenCV在iOS中對手機拍攝的魚尺照片做出高精度的識別,保證能夠快速、準確地對目標進行識別,同時既要保證高精度的測量尺寸的大小,還要保證同場競技過程中的公平性。實驗結(jié)果是測量誤差降到最低。
關鍵詞: iOS平臺;路亞運動;OpenCV;目標識別;長度測量
Abstract:In view of the problem that the fishes need to be measured in the Lure movement this paper is based on the iOS platform to identify the target and then measure the length of the object. It is mainly through the high-accuracy identification of fish feet photos taken by OpenCV in iOS not only to ensure that the target can be identified quickly and accurately but also to ensure the accuracy of the measurement size and ensure the fairness in the same field competition. The result of the experiment is that the measurement error is reduced to the lowest.
Key words: iOS platform;Lure fishing;OpenCV;target recognition;length measurement
引言
中國越來越多的人喜歡路亞運動,為了給海釣運動者們創(chuàng)造一個共同競技的平臺,不受地域范圍、場地限制地享受釣魚運動的競技樂趣,本次研究通過基于OpenCV的iOS移動終端實現(xiàn)對目標的識別,從而快速、高精度地測量出物體的長度。
作為一個主流的計算機視覺和機器學習庫,OpenCV不但可以在多個操作系統(tǒng)上運行,而且可以靈活嵌入于物理世界的實時應用中。因其主要是輕量級而且高效,并由一系列 C 函數(shù)和少量 C++ 類構成,對Python、Ruby、Matlab等語言均提供了可以調(diào)用的接口,這就在有關圖片視頻處理、圖像識別、機器學習等應用研究方面占據(jù)了獨特優(yōu)勢。從設計原理來說,其實就是在開發(fā)一個通行可用的計算機視覺庫,為基本的視覺應用提供開放且優(yōu)化的源代碼,使開發(fā)者在這個通用的架構上展開后續(xù)進一步操作。OpenCV已經(jīng)設計成為具備可移植性的庫,其代碼可以由主流編譯器進行編譯 故而能夠運行于大多數(shù)的商業(yè)系統(tǒng)。本文中通過采用OpenCV在iOS中對魚尺牌進行高精度的識別,而將其作為釣魚運動的直接競技判定標準。
1 目標識別
OpenCV在iOS中對魚尺牌進行高精度的識別,來作為釣魚運動切實直接的競技判定標準。在對目標識別的過程中,OpenCV的圖像識別就是對特征點的采取。首先,提取識別圖像中的特征點,同時判定每個圖像中的點是否歸屬同一個圖像特征;然后,提取在圖像中突出且具代表意義的一些點,便可以用來識別圖像。具體來說,Harris、ShiTomasi、亞像素級、SURF、Star關鍵點、FAST關鍵點、Lepetit關鍵點是OpenCV中的主要提取方法。經(jīng)過對照與比較研究可知,SURF算法運算簡單并且效率更高,為此將使用圖像SURF特征進行拼接。
1.1 基本原理
SURF(Speeded Up Robust Features)是SIFT檢測算法的改進版。重點是通過基于尺度空間理論來提取特征點,也就是通過檢測圖像局部極值點并定位到特征點的位置坐標,即局部的最亮點或最暗點。
1.2 算法流程
1.2.1 構造Hessian矩陣,計算特征值α
SURF與SIFT的不同之處有很多,關鍵一點就是SIFT采用了DOG圖像,而SURF采用了Hessian矩陣行列式中的近似值圖像。這里,隨即給出了圖像中一個像素點的Hessian矩陣的數(shù)學表述如下:
由于求解Hessian時要先進行高斯平滑,再通過對二階導數(shù)求導,使模板卷積形成離散的像素點,這2種操作結(jié)合后只用一個模板代替就可以了。比如說,Y方向上的模版即如圖1所示。圖1展示了9×9方框濾波掩膜版,其中灰色部分掩膜版值為0,對應二階高斯濾波系數(shù)σ=1.2,方框濾波模板和圖像卷積運算后的值則分別標記為Lxx、Lxy、Lyy。
有了這個近似的模板后,計算高斯濾波和二階導數(shù)兩個步驟就可以合并為一個步驟完成。同時,又引入了積分圖像,因此更提高了運算效率。
1.2.2 構造高斯金字塔
研究可知,在SIFT算法的高斯金字塔構造過程中,SIFT算法的速度獲得了進一步的提升。在SIFT算法中,每一組(octave)圖像的大小是不同的,下一組是上一組圖像的降采樣(1/4大?。?;但在每一組內(nèi)部,彼此的圖像大小是一樣的,不同的只是其中采用的尺度σ的不同。而且在模糊過程中,與其關聯(lián)的高斯模板大小總是不變的,就是尺度σ會發(fā)生改變。對于SURF而言,圖像的大小保持固定不變,改變的只是高斯模糊模板的尺寸,然而尺度σ也是會存在一定改變的。
圖2(a)是高斯模板保持不變、圖像大小改變的情況,因此對SIFT算法比較適用。圖2(b)是高斯模板做出了改變、圖像大小固定的情況,因此對SURF算法比較合適。究其原因在于SURF算法沒有降采樣的過程,就使得處理速度得到提高。
1.2.3 定位特征點
首先,對特征點進行初步定維。如圖3所示,將經(jīng)過Hessian矩陣處理后的每個像素點與其三維領域的26個點大小進行比較。比較后發(fā)現(xiàn),如果這是26個點中比較后得到的極值,便保留下來,并作為初步的特征點。
然后,與SIFT算法類似,通過三維線性插值法的運算處理將會得到亞像素級點,同時也會濾掉小于一定閾值的點。增加極值使檢測到的特征點數(shù)量減少,最終只有幾個特征最強點會被檢測出來。
1.2.4 確定特征點主方向
為了保證旋轉(zhuǎn)的不變性,SURF中對梯度直方圖不予標記,然而卻需標記特征點鄰域中的Harr小波特征。也就是將特征點作為中心,接下來會計算半徑為6s(s為特征點所在的相應尺度值)的鄰域內(nèi),即匯總統(tǒng)計扇形內(nèi)60°的點在水平和垂直方向的Haar小波回應的總和(Haar小波長取4s),并為這些回應值賦予了高斯權重系數(shù),使得靠近特征點的回應貢獻大,而遠離特征點的回應貢獻小。與此同時,60°范圍內(nèi)的回應相加后便形成新的矢量,遍歷整個圓形區(qū)域。再以此為基礎,選擇最長矢量的方向設定為該特征點的主方向。然而,對特征點中的數(shù)值展開計算后,就會得到特征點的主方向。綜上可得,繪制該過程則如圖4所示。
1.2.5 構造特征描述子
在特征點周圍取一個正方形框,正方形的邊長為20s(s是過程檢測到該特征點所在的尺度)。該正方形是帶方向的,方向就是1.2.4節(jié)測試出來的主方向。通過把該框分為16個子區(qū)域,每個子區(qū)域統(tǒng)計25個像素的水平方向和垂直方向的haar小波特征,再利用主方向的相對位置,從而判斷出水平方向和垂直方向。該haar小波特征為水平方向值之和,水平方向絕對值之和、垂直方向值之和、垂直方向絕對值之和?;谏衔膬?nèi)容,推得這一特征構造過程可如圖5所示。
這樣,每個小區(qū)域就會包含4個值,對于每個特征點是16*4=64維向量,相較SIFT而言,就減少了一半,這在特征匹配過程中會大大加快匹配的速度。
至此可得 SURF采用Henssian矩陣獲取圖像局部的極值仍可堪稱穩(wěn)定。在得到主方向的過程中,由于局部區(qū)域像素梯度方向的不可或缺,就有可能找到不準確的主方向,后面特征向量的提取以及匹配卻都依托于找到的主方向,即使只有些許的角度偏差也將導致后面特征匹配會出現(xiàn)較大誤差,從而使得匹配并不成功;另外,圖像金字塔的層數(shù)選取未臻緊密也會使得尺度存在誤差,后面的特征向量提取過程同樣會依賴相應的尺度,在這個問題上只能采用折中的解決方法,即:通過選取適量的層數(shù)來進行下一步的插值運算。
1.3 性能比較
實驗中,通過對 SIFT、PCA-SIFT和 SURF三種方法給出了性能上的測試比較。源圖片來自Graffiti dataset,對原始圖像進行尺度、旋轉(zhuǎn)、模糊、亮度、仿射變換等一系列的設計處理后,再與原圖像進行匹配,統(tǒng)計匹配的效果,并將可重復出現(xiàn)性作為評價指標。測試對比結(jié)果可見表1。
由表1可知,SIFT在尺度和旋轉(zhuǎn)變換的情況下得到了良好效果;SURF在亮度變化下匹配實現(xiàn)效果較好,模糊效果的處理要優(yōu)于SIFT,而尺度和旋轉(zhuǎn)的變換則不如SIFT,旋轉(zhuǎn)不變上卻要明顯遜色于SIFT。而在算法速度上,SURF比SIFT速度則高了3倍。
2 自定義相機
作為專用的目標識別并可測量長度的相機,當魚尺相機在可識別區(qū)域檢測到目標后,就會生成可移動的標尺,用戶在手機屏幕上拖拽滑移標尺校對測量物的尺寸,同時屏幕左下角也隨即顯示出實際尺寸,最后保存到本地相冊。因此,熟悉iOS相機拍攝原理 且通過AVFoundation框架自定義相機,成功制作了內(nèi)置魚尺的拍照相機。
具體來說,AVFoundation是一個Object-C媒體數(shù)據(jù)中的高級框架。AVFoundation的構建考慮到了目前的硬件環(huán)境和應用程序,其設計過程高度依賴多線程機制。充分利用了多核硬件的優(yōu)勢并大量使用block和GCD機制,將復雜的計算機進程部署到后臺線程來集中處理。會自動輔設硬件加速操作,確保在大部分設備上應用程序能以最佳性能運行。該框架的設計主要是針對64位處理器,因而能夠發(fā)揮64位處理器的全部優(yōu)勢。AVFoundation 框架是基于一些功能設計類來實現(xiàn)圖像的捕捉過程,通過這些類可以訪問來自相機設備的原始數(shù)據(jù)并且控制其相關組件。為此,針對主要類的功能解析可闡釋如下:
(1)AVCaptureDevice 的接口是關于相機的硬件。主要用于控制硬件特性,諸如鏡頭的位置、曝光、閃光燈等。
(2)AVCaptureDeviceInput 的接口是提供來自設備中的數(shù)據(jù)信息。需要使用AVCaptureDeviceInput讓設備添加到session中,使用 AVCaptureDeviceInput掌控管理設備。
(3)AVCaptureOutput作為一個抽象的類,用來描述capturesession 的結(jié)果。這里,研究給出了3種關于靜態(tài)圖片捕捉的通用子類,分別是:捕捉靜態(tài)圖片,AVCaptureStillImageOutput、啟用檢測人臉和二維碼,AVCaptureMetadataOutput、實時預覽圖提供原始幀,AVCaptureVideoDataOutput。
(4)AVCaptureSession 的接口。是管理輸入與輸出之間的數(shù)據(jù)流和在出現(xiàn)問題時來捕獲運行時錯誤。
(5)AVCaptureVideoPreviewLayer作為 CALayer的子類,可以用于顯示相機并攝取實時的圖像。除此之外,也還涉及了數(shù)個工具性質(zhì)的方法,可將 layer 上的坐標轉(zhuǎn)化到設備上。
3 實驗結(jié)果
通過代碼編程、并經(jīng) Xcode 運行通過,安裝到手機端來展開效果測試。測試后得知,能夠快速、準確地對目標進行識別,同時手機屏幕上產(chǎn)生可移動的標尺用來測量物體的尺寸,屏幕左下角便會生成實際尺寸,最后保存到本地相冊,而且也用較低的誤差測量出尺寸的大小。實驗仿真結(jié)果如圖6所示。
4 結(jié)束語
實驗結(jié)果表明,Xcode中使用OpenCV來研發(fā)實現(xiàn)在移動設備上的實時圖像處理,能夠快速、準確地對目標進行識別,測量誤差也非常小。
參考文獻
[1] 黎松,平西建,丁益洪. 開放源代碼的計算機視覺類庫OpenCv的應用[J]. 計算機應用與軟件,2005,22(8):134-136.
[2] 何鵬,王連鵬,楚艷紅. 基于OpenCV的機器視覺在智能手機中的應用[J]. 計算機工程與設計,2011,32(8):2901-2904.
[3] 陳雪嬌. 基于OpenCV的計算機視覺技術研究[J]. 電腦知識與技術,2015,11(30):137-138,141.
[4] 陰法名. 基于OpenCV圖像處理[J]. 科技信息,2009(32):220.
[5] 張家怡. 圖像識別的技術現(xiàn)狀和發(fā)展趨勢[J]. 電腦知識與技術 2010,6(21):6045-6046.
[6] 胡輝. IOS環(huán)境下使用MVC模式進行APP開發(fā)的設計思路探索[J]. 數(shù)字技術應用,2015(6):204,206.
[7] GALLOWAY M. Effective Objective-C 2.0:編寫高質(zhì)量iOS與OS X代碼的52個有效方法[M]. 愛飛翔,譯. 北京:機械工業(yè)出版社,2014.
[8] KNASTER S,MALIK W,DALRYMPLE M . Objective-C基礎教程[M]. 2版. 周慶成,譯. 北京:人民郵電出版社,2013.
[9] LOSSEF S V SCHWARTZ L H. Computerized literature reference system: Use of an optical scanner and optical character recognition software[J]. American Journal of Roentgenology,1990,155(3):617-619.
[10]KIM D LEE V W CHEN Y K. Image processing on multicore x86 architectures[J] . IEEE Signal Processing Magazine 2010,27(2):97-107.
[11]王福斌,李迎燕,劉杰,等. 基于OpenCV的機器視覺圖像處理技術實現(xiàn)[J]. 機械與電子,2010(6):54-57.
[12]YAMADA S MURASE K. Effectiveness of flexible noise control image processing for digital portal images using computed radiography[J]. The British Journal of Radiology,2005,78(930):519-527.