文獻(xiàn)標(biāo)識碼: A
DOI:10.16157/j.issn.0258-7998.172828
中文引用格式: 李榮翠. 激光探測器光斑質(zhì)心算法硬件設(shè)計[J].電子技術(shù)應(yīng)用,2018,44(2):13-15,19.
英文引用格式: Li Rongcui. The hardware design of light spot center of mass algorithm for laser detector[J]. Application of Electronic Technique,2018,44(2):13-15,19.
0 引言
在一些姿態(tài)檢測的實際應(yīng)用中,需要在被測對象上安裝激光探測器[1],利用CCD相機(jī)捕捉激光光斑來檢測觀測對象的實際情況,光斑圖像質(zhì)心坐標(biāo)的提取是圖像處理技術(shù)中常見的問題,激光的瞬時和高速性是激光光斑圖像的重要特征[2]。為了實時準(zhǔn)確地獲取激光光斑質(zhì)心的坐標(biāo),相機(jī)要求以300幀每秒的速度進(jìn)行采集。原設(shè)備原始應(yīng)用場景為工業(yè)高清相機(jī)通過專用Camera Link電纜連接圖像采集卡,圖像采集卡插入計算機(jī)內(nèi)部,計算機(jī)接收圖像數(shù)據(jù)后進(jìn)行信號處理運算,質(zhì)心算法的實現(xiàn)在計算機(jī)上完成[3]。本文通過對原設(shè)備的結(jié)構(gòu)進(jìn)行優(yōu)化,將算法部分移植到硬件環(huán)境中形成相機(jī)控制器,使得攝像機(jī)與計算機(jī)可以遠(yuǎn)距離部署,一臺計算機(jī)可以控制和接收多臺相機(jī)數(shù)據(jù)并同時進(jìn)行信號處理,并且對計算機(jī)的配置要求較低,有靈活的擴(kuò)展性。在質(zhì)心算法研究方面,將計算機(jī)軟件實現(xiàn)的算法用硬件描述語言Verilog設(shè)計實現(xiàn),獲取激光光斑的實時質(zhì)心坐標(biāo)。
1 CCD采集圖像質(zhì)心算法
激光探測器形成的激光光斑在CCD表面的光強(qiáng)分布可以看作以中心對稱的高斯分布[4],所以在激光光斑質(zhì)心坐標(biāo)算法中,可以用光斑光亮的最強(qiáng)點作為激光光斑的質(zhì)心坐標(biāo),對于CCD數(shù)字視頻信號來說就是灰度值最大的那一點的坐標(biāo)值[5]。具體算法如下:
第一步:噪聲采集。假設(shè)圖像x方向與y方向分別有m與n個像素點。在無激光照射CCD情況下采集N幅圖(N理論上越多越好,實際N值手動可設(shè)即可),databuffa[m][n]為第a幅圖的數(shù)據(jù)。對N幅圖進(jìn)行求均方根,即可得到噪聲數(shù)據(jù)。
第二步:去噪聲。此時開始進(jìn)行激光光斑的采集,CCD所采集的每幅圖數(shù)據(jù)為h[m][n],進(jìn)行去噪聲處理,將CCD所采集的數(shù)據(jù)與采集算好的噪聲相減。如果低于最小灰度值0則為0;如果高于最大灰度值255則為255。
第三步:去一定比例的最大灰度值,比例系數(shù)為p。此時經(jīng)過去噪聲的圖像數(shù)據(jù)h[i][j]還具有一定的干擾,采用閾值去掉干擾,閾值為最大灰度值的比例數(shù)。首先尋找圖像的最大灰度值,然后進(jìn)行去掉閾值。
第四步:進(jìn)行質(zhì)心計算。CCD所采集圖像質(zhì)心即圖像灰度的重心,i與j分別為兩個方向的坐標(biāo),g[i][j]為像素點(i,j)坐標(biāo)的灰度值,則圖像質(zhì)心位置坐標(biāo)為:
式中x、y即為圖像質(zhì)心的坐標(biāo)。
2 基于FPGA的圖像質(zhì)心算法
FPGA的特點是數(shù)字邏輯的思維與并行的處理方式。FPGA的并行處理能力使得它有著更高的處理速度,讓人們更青睞于這種可編程邏輯方式去實現(xiàn)所需要的算法。本文的目的是將CCD采集圖像質(zhì)心算法用可編程邏輯Verilog語言去實現(xiàn)所需算法,為了實現(xiàn)上述算法,需要對算法進(jìn)行必要的改造。
第一步:噪聲均方根的采集實現(xiàn)。對于數(shù)字邏輯中只有0和1之分,灰度圖像的顏色由8位二進(jìn)制來表示,故灰度顏色由0~255這256個數(shù)據(jù)來表示。故這里不需對根號內(nèi)數(shù)據(jù)進(jìn)行開方,而是直接根據(jù)根號下的數(shù)據(jù)即可算出均方根的結(jié)果,因為這里的結(jié)果都是四舍五入后的整數(shù)。
第二步:去噪聲的實現(xiàn)。此算法可直接用可編程邏輯實現(xiàn),與原算法一致。
第三步:去一定比例的最大灰度值中比例數(shù)p是一個0~1之間的小數(shù),在實際應(yīng)用中小數(shù)可以通過浮點數(shù)的方法來表示,浮點數(shù)的表示有32位與64位的表示方法。所以本文的設(shè)計方法是將0~1的數(shù)與0~100的數(shù)字一一對應(yīng),在后續(xù)再轉(zhuǎn)換縮回比例,求出數(shù)據(jù)。例如0.16對應(yīng)整數(shù)16,這樣只需要7位二進(jìn)制數(shù)即可表示,節(jié)省了寄存器占用的空間,利于算法的實現(xiàn)。
第四步:質(zhì)心計算的實現(xiàn)。第三步中的質(zhì)心計算的算法方式由于求矩陣過程復(fù)雜,運算量大,不適用于可編程邏輯方式,為此將此算法進(jìn)行了轉(zhuǎn)換。一種基于函數(shù)轉(zhuǎn)換的快速搜素質(zhì)心算法,利用目標(biāo)質(zhì)心與目標(biāo)上所有各點間距離之和值最小的原理,快速求出質(zhì)心。此算法適用于灰度圖像,對灰度圖像求質(zhì)心具有廣泛的用途與實際的意義。應(yīng)用此算法后,n個乘法轉(zhuǎn)換成了1個乘法,便于Verilog語言去實現(xiàn)。
3 仿真結(jié)果與分析
將改進(jìn)后的算法應(yīng)用到可編程邏輯Verilog語言中后,實現(xiàn)了光斑質(zhì)心算法的功能并能夠?qū)崟r求出質(zhì)心的坐標(biāo)。通過上位機(jī)選擇需要算出的N幅圖得到的噪聲系數(shù),將求出的噪聲系數(shù)存入RAM中,當(dāng)激光照射后讀出RAM中存儲的噪聲系數(shù)值即可。本設(shè)計包括噪聲系數(shù)模塊,去噪聲模塊與質(zhì)心坐標(biāo)算法3個模塊。圖1為光斑質(zhì)心算法的總體架構(gòu)圖。
噪聲系數(shù)模塊:初始化后檢測ready信號,ready拉高表示外部輸入已經(jīng)準(zhǔn)備好可以接收數(shù)據(jù),可保證在一幀圖像數(shù)據(jù)內(nèi)的連續(xù)性。在準(zhǔn)備好后等待pulse_in信號的到來,pulse_in為脈沖信號,當(dāng)接收到此信號時表示通知模塊需要計算噪聲系數(shù)。pixel_num為像素值選擇, frame_num為幀數(shù)選擇,范圍是0~131 072。data_in為輸入的圖像數(shù)據(jù)8位灰度值,noise_req為噪聲系數(shù)輸入數(shù)據(jù)請求信號,當(dāng)此信號拉高后,輸入信號data_in在下一拍輸入數(shù)據(jù)。noise_done為噪聲系數(shù)計算完成信號,當(dāng)計算結(jié)束并沒有接收到重新計算信號pulse_in時,noise_done一直拉高來表示噪聲系數(shù)模塊處理完成。在noise_done高電平期間,輸入來自去噪聲模塊的地址信號addr_in,即可讀出RAN中對應(yīng)地址的數(shù)據(jù)databuffnoise。
去噪聲模塊:在noise_done高電平期間可啟動去噪聲模塊。read_en為脈沖信號,一個脈沖可接收一幀圖像數(shù)據(jù)。proportion信號是上位機(jī)發(fā)來的比例系數(shù),范圍在0~100之間,表示0~1之間的數(shù)。在接收到read_en脈沖信號后,發(fā)出數(shù)據(jù)請求信號data_req,data_req拉高后輸入dec_in數(shù)據(jù)信號,由于需要求出一幀圖像的最大圖像數(shù)據(jù),所以會有一幀圖像的延遲,當(dāng)輸出圖像數(shù)據(jù)有效data_valid信號拉高時,輸出去噪后有效的pixel_data數(shù)據(jù),在data_valid信號拉高后輸出的pixel_data數(shù)據(jù)會傳到質(zhì)心算法模塊中進(jìn)行計算。圖2為去噪模塊仿真結(jié)果。
質(zhì)心坐標(biāo)算法模塊:輸入的request_in信號是去噪聲模塊的輸出信號data_valid,在request_in信號有效時,輸入的數(shù)據(jù)gravity_in信號有效,與去噪模塊的輸出數(shù)據(jù)信號pixel_data線性連接。在信號請求輸出req_out高脈沖同時輸出質(zhì)心坐標(biāo)xy_pos信號,輸出的x、y坐標(biāo)都是10位二進(jìn)制數(shù)表示,根據(jù)需求以32位xy_pos信號輸出,高25~16位填充x坐標(biāo),9~0位填充y坐標(biāo),其他填充0。通過各個模塊的驗證可看出算法符合基本要求, 最后得到如圖3所示的3個模塊整體的頂層模塊仿真結(jié)果圖。
將此算法用C++在VS2012上運行并驗證質(zhì)心坐標(biāo)是否正確,輸入相同輸入數(shù)據(jù),驗證結(jié)果如圖4所示。
通過分析和仿真驗證了設(shè)計的正確性,CCD圖像質(zhì)心算法被很好地應(yīng)用到可編程邏輯語言中,F(xiàn)PGA的高速并行優(yōu)點使得算法可以達(dá)到流水線高速運行,由于相機(jī)的圖像采集速度可達(dá)到每秒300幀,為了符合這樣的高速采集能力,本文采用了流水線算法可實時算出質(zhì)心坐標(biāo)供上位機(jī)采集和使用。
4 結(jié)論
本文所設(shè)計的光斑質(zhì)心定位算法是基于實際應(yīng)用的激光探測器相機(jī)控制器的算法實現(xiàn)部分,該算法的實現(xiàn)使得攝像機(jī)與計算機(jī)可以遠(yuǎn)距離部署,將復(fù)雜算法的運算量交給控制器去處理,減輕了計算機(jī)的工作量去處理更重要的事情。該方法適用于有一定存儲空間的FPGA芯片去實現(xiàn),注重高速與實時性,對工業(yè)高清相機(jī)這種高精度要求的應(yīng)用有一定的實用價值。
參考文獻(xiàn)
[1] 肖鋒鋼,劉建國,曾淙泳,等.一種新型提高光斑圖像質(zhì)心精度的去噪方法[J].計算機(jī)應(yīng)用研究,2008,25(12):3683-3685.
[2] 樊巧云,張廣軍.離散噪聲圖像的光斑質(zhì)心算法及其硬件實現(xiàn)[J].光學(xué)精密工程,2011,19(12):2992-2993.
[3] 張海莊,孟智勇,丁帥,等.CCD攝像法采集激光光斑圖像方法研究[J].光學(xué)與光電技術(shù),2013,11(10):33-35.
[4] 張秋佳,趙玉華.基于加權(quán)插值算法的激光光斑中心檢測[J].激光與紅外,2016,46(1):81-84.
[5] 王冰,職秦川,張仲選,等.灰度圖像質(zhì)心快速算法[J].計算機(jī)輔助設(shè)計與圖形學(xué)學(xué)報,2004,16(10):1360-1362.