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