姜曉雪,陳小菊,徐銳,屈子昂
(宜賓學(xué)院,四川宜賓,644000)
利用雙目視覺(jué)技術(shù)實(shí)現(xiàn)測(cè)距,現(xiàn)在傳統(tǒng)技術(shù)一般采用DSP、ASIC或者單片機(jī)完成[1]。一個(gè)完整的視覺(jué)模塊僅采用DSP還不夠需要結(jié)合其他東西來(lái)實(shí)現(xiàn),采用ASIC設(shè)計(jì)開發(fā)視覺(jué)系統(tǒng)的主要缺點(diǎn)是靈活性較差,成本高,研制開發(fā)周期較長(zhǎng),增減功能和升級(jí)都很不方便[2]。單片機(jī)實(shí)現(xiàn)速度很慢,對(duì)一些復(fù)雜圖像不能處理。而FPGA的并行處理在圖像中既可以做到實(shí)時(shí)性又可以做到便攜化,更可能提高機(jī)器人的集成度。本實(shí)用新型為了避開傳統(tǒng)計(jì)算機(jī)、單片機(jī)的速度不夠和體積龐大的缺點(diǎn),采用FPGA的并行處理技術(shù)獲取算法成功應(yīng)用。
雙目測(cè)距的基本原理是從兩個(gè)視場(chǎng)觀察同一物體,在獲取不同視場(chǎng)下的兩幅圖像后,通過(guò)幾何成像原理計(jì)算圖像特征點(diǎn)之間的視場(chǎng),進(jìn)而獲取景物的三維信息[3,4]。這一過(guò)程與人類眼睛的視覺(jué)感知過(guò)程尤為相似,具體的實(shí)施方法我們可以用兩個(gè)性能參數(shù)相同且相隔某一固定距離的攝像頭來(lái)模擬人類眼球獲取事物在統(tǒng)一時(shí)間點(diǎn)的兩幅圖像,計(jì)算兩幅圖像中相同的兩個(gè)特征點(diǎn)的視覺(jué)差異,進(jìn)而獲得相同的兩個(gè)特征點(diǎn)的深度信息,這里以平行雙目立體視覺(jué)成像為例加以說(shuō)明,如圖1所示。
圖1 雙目測(cè)距幾何原理圖
假定左攝像機(jī)和右攝像機(jī)的焦距及各參數(shù)都相等,光軸平行至兩平面的X軸重合。我們所得到的兩個(gè)平面會(huì)完全重合,是因?yàn)楣廨S與成像的平面相互垂直,Y軸也互相平行。我們所用到的空間任意一點(diǎn)P在左、右攝像機(jī)的成像面上的投影點(diǎn)是P1和P2,即可得視差。為了更直觀的表示此原理,現(xiàn)將右攝像機(jī)成像面的坐標(biāo)系平移至左攝像機(jī)成像面的坐標(biāo)系。由于在理想狀態(tài)下我們可假設(shè)兩攝像機(jī)的位置完全一樣,則可由相似三角形的原理求出P點(diǎn)的深度信息Z為:
其中b代表左右兩個(gè)攝像機(jī)的基線距離,f代表相機(jī)的焦距,P1為P點(diǎn)在相機(jī)左成像面的坐標(biāo),P2為P點(diǎn)在右成像面的特征點(diǎn)在左成像面的等效坐標(biāo)。因此,只要能夠找到空間中某點(diǎn)在左右兩個(gè)相機(jī)像面上的對(duì)應(yīng)點(diǎn),并且知道攝像機(jī)的主距、基距等參數(shù),就可以求解這個(gè)點(diǎn)的深度信息[5]。
本設(shè)計(jì)硬件模塊主要包括主控模塊、 COMS攝像頭采集數(shù)據(jù)模塊以及VGA顯示模塊等;攝像頭采用的是MT9V011, MT9V011 為 30 萬(wàn)像素,最高 30 幀,感光陣列面積為 1/3",內(nèi)部結(jié)構(gòu)如圖2所示。
圖2 MT9V011內(nèi)部結(jié)構(gòu)圖
APS(Active Pixel Sensor)是最新的 CMOS 圖像傳感器的像素結(jié)構(gòu)設(shè)計(jì)。APS 的工作過(guò)程:
(1)復(fù)位晶體管 Mrst 開通;
(2)PD 復(fù)位到 Vrst-Vth(Mrs的閾值電壓);
(3)關(guān)閉 Mrst,PD 進(jìn)入電氣浮動(dòng)狀態(tài);
(4)光線入射,PD 結(jié)電容聚集光生載流子;
(5)在一個(gè)積累時(shí)間后,選通晶體管 Msf;
(6)打開晶體管 Msel,像素中的輸出信號(hào)在垂直輸出線上被讀出;
(7)關(guān)閉 Msel,Mrst 再次接通,重復(fù)上述過(guò)程。
VGA(Video Graphics Array)是IBM公司在1987年推出的一種具有高分辨率、高速顯示速率、顏色豐富的視頻傳輸,在彩色顯示領(lǐng)域應(yīng)用廣泛。不支持熱插拔,不支持音頻傳輸。本設(shè)計(jì)采用的是ADV7123 芯片,ADV7123 是一款單芯片、三通道、高速數(shù)模轉(zhuǎn)換器。ADV7123 內(nèi)置三個(gè)高速、10 位、帶互補(bǔ)輸出的視頻數(shù)模轉(zhuǎn)換器、一個(gè)標(biāo)準(zhǔn) TTL 輸入接口以及一個(gè)高阻抗、模擬輸出電流源。具體內(nèi)部框圖如圖3所示。
圖3 ADV7123內(nèi)部結(jié)構(gòu)
本設(shè)計(jì)使用的是 640×480@60Hz 的 VGA 時(shí)序接口,計(jì)算像素時(shí)鐘 pclk = 800×525×60 =25200000,這里的 HSYNC(行同步信號(hào))和 VSYNC(場(chǎng)同步信號(hào))都是低電平有效,且 HSYNC在數(shù)據(jù)行無(wú)效區(qū)域也要提供。
本設(shè)計(jì)的主要流程分為圖像獲取、圖片預(yù)處理、相機(jī)標(biāo)定、目標(biāo)檢測(cè)、立體匹配。其中最關(guān)鍵的是目標(biāo)檢測(cè)和立體匹配。最后基于FPGA在Quartus Ⅱ上寫了一個(gè)測(cè)距離的程序。該程序在背景比較單一的環(huán)境中能準(zhǔn)確標(biāo)定對(duì)象并測(cè)出相機(jī)到目標(biāo)的距離。
步驟一:CMOS 驅(qū)動(dòng):負(fù)責(zé) CMOS 圖像采集與裁剪;步驟二:RAW2RGB:負(fù)責(zé)將原始的 RAW 數(shù)據(jù)轉(zhuǎn)換成 RGB656 數(shù)據(jù);步驟三:FIFO 寫負(fù)責(zé)將 RAW2RGB 轉(zhuǎn)換的的 RGB 數(shù)據(jù)發(fā)送給 SDRAM 控制器;步驟四:FIFO 讀負(fù)責(zé)將 SDRAM 中的視頻幀數(shù)據(jù)讀出給 VGA 驅(qū)動(dòng)模塊;VGA 模塊負(fù)責(zé)將視頻信號(hào)發(fā)送給 ADV7123,最終 VGA 顯示器顯示。
圖像分析中,圖像質(zhì)量的好壞直接影響識(shí)別算法的設(shè)計(jì)與效果的精度,因此在圖像分析(特征提取、分割、匹配和識(shí)別等)前,需要進(jìn)行預(yù)處理。圖像預(yù)處理的主要目的是消除圖像中無(wú)關(guān)的信息,恢復(fù)有用的真實(shí)信息,增強(qiáng)有關(guān)信息的可檢測(cè)性、最大限度地簡(jiǎn)化數(shù)據(jù),從而改進(jìn)特征提取、圖像分割、匹配和識(shí)別的可靠性。本設(shè)計(jì)采用的是Tophat形態(tài)學(xué)濾波算法。Tophat變換是原圖像與開運(yùn)算結(jié)果之差,突顯出圖像輪廓周圍更亮的區(qū)域。具體的計(jì)算公式如下:
Tophat濾波只需要在開運(yùn)算的基礎(chǔ)上,將原始像素信號(hào)同步到開運(yùn)算,最終結(jié)果輸出,只要在開運(yùn)算模塊中的膨脹模塊中添加一個(gè)shift_ ram,實(shí)現(xiàn)時(shí)鐘延時(shí)的同步,實(shí)現(xiàn)程序如下:
wire [7:0] taps_1x_old;
shift_ram shift_ram_inst1
{
.clock(coms_pclk),
.clken(coms_href),
.shiftin(cmos_data_old_in),
.shiftout(),
.taps0x(),
.taps1x(taps_1x_old),
.taps2x()
};
reg [7:0] taps_1x_old_r;
always @(posedge cmos_pclk)
taps_1x_old_r<=taps_1x_old;
標(biāo)定的目的是獲得相機(jī)的內(nèi)參(焦距,圖像中心,畸變系數(shù)等)和外參(旋轉(zhuǎn)矩陣和平移矩陣)。本設(shè)計(jì)采用的方法為張正友的棋盤格標(biāo)定方法。步驟為:左攝像頭標(biāo)定,獲取內(nèi)外參數(shù);右參數(shù)攝像頭標(biāo)定獲取外參;雙目標(biāo)定,獲取相機(jī)之間的平移旋轉(zhuǎn)關(guān)系。
本設(shè)計(jì)介紹了一種基于FPGA的顏色識(shí)別經(jīng)驗(yàn)算法,在RGB顏色通道提取的基礎(chǔ)上對(duì)其他顏色通道進(jìn)行腐蝕處理,再提取R-G、R-B兩個(gè)特征值,再進(jìn)行線性疊加,得到RR為所檢測(cè)的目標(biāo)。這樣做減法既減少了計(jì)算量,又能夠消除干擾背景,使識(shí)別更加精確、可靠。
圖4 MATLAB標(biāo)定工具箱使用
本設(shè)計(jì)顏色識(shí)別模塊中寫有紅、藍(lán)、綠三個(gè)顏色濾波器,當(dāng)識(shí)別顏色時(shí),濾波器分時(shí)工作,即選定一種顏色的濾波器之后,其他顏色的分量都不能夠通過(guò)濾波器,而只有這種顏色能夠通過(guò)濾波器,該分量通過(guò)濾波器之后,則得出要識(shí)別顏色中該分量的值。簡(jiǎn)單來(lái)說(shuō)就是當(dāng)紅色濾波器處于工作狀態(tài)時(shí),只有藍(lán)色光能通過(guò)濾波器,而藍(lán)色、綠色不通過(guò),這樣就能夠得出紅色分量的值。當(dāng)入射光通過(guò)三個(gè)顏色濾波器之后得出三個(gè)顏色分量值,這樣,疊加在一起則得出被測(cè)物體顏色,識(shí)別紅色物體。實(shí)現(xiàn)程序如下:
always@(posedge clk or negedge rst_n)
begin
if(!rst_n)
r_data<=8'd0;
else if(href_i) begin
if(r_data>=g_data)
r_data_r1<=r_data-g_data;
else
R_data_r1<=8'd0;
end
else
r_data_r1<=8'd0;
end
立體匹配是雙目深度估計(jì)的核心部分,發(fā)展了很多年,也有非常多的算法,主要目的是計(jì)算參考圖與目標(biāo)圖之間像素的相對(duì)匹配關(guān)系,主要分為局部和非局部的算法。本設(shè)計(jì)采用的匹配算法為SAD(Sum of absolute differences),基本思想:差的絕對(duì)值之和。此算法常用于圖像塊匹配,將每個(gè)像素對(duì)應(yīng)數(shù)值之差的絕對(duì)值求和,據(jù)此評(píng)估兩個(gè)圖像塊的相似度。具體步驟如下:
(1)輸入:兩幅圖像,一幅Left-Image,一幅Right-Image,對(duì)左圖,依次掃描,選定一個(gè)錨點(diǎn)。
(2)構(gòu)造一個(gè)小窗口,類似于卷積核。
(3)用窗口覆蓋左邊的圖像,選擇出窗口覆蓋區(qū)域內(nèi)的所有像素點(diǎn)。
(4)同樣用窗口覆蓋右邊的圖像并選擇出覆蓋區(qū)域的像素點(diǎn)。
(5)左邊覆蓋區(qū)域減去右邊覆蓋區(qū)域,并求出所有像素點(diǎn)灰度差的絕對(duì)值之和。
(6)移動(dòng)右邊圖像的窗口,重復(fù)(3)-(4)的處理(這里有個(gè)搜索范圍,超過(guò)這個(gè)范圍跳出)。
(7)找到這個(gè)范圍內(nèi)SAD值最小的窗口,即找到了左圖錨點(diǎn)的最佳匹配的像素塊。
如圖5所示,一種基于FPGA的雙目測(cè)距系統(tǒng),包括主控模塊、 COMS攝像頭采集數(shù)據(jù)模塊、VGA顯示模塊;主控模塊分別連接紅COMS攝像頭采集數(shù)據(jù)模塊、VGA顯示模塊。
本設(shè)計(jì)在實(shí)施時(shí),通過(guò)攝像頭模塊采集信息,控制模塊對(duì)采集的數(shù)據(jù)進(jìn)行處理,如圖5所示,圖像采集使用MTV9V011攝像頭完成對(duì)目標(biāo)信息的采集,首先將目標(biāo)的彩色RGB圖像存入SDRAM中,然后用控制端去讀取數(shù)據(jù)信息,再將獲取的RGB圖像依次進(jìn)行灰度處理、閾值分割得到二值圖像,對(duì)二值數(shù)字圖像進(jìn)行邊界追蹤的基礎(chǔ)上進(jìn)行顏色識(shí)別,將所標(biāo)定區(qū)域顯示在VGA上,再對(duì)所標(biāo)定的對(duì)象進(jìn)行測(cè)距,最終距離通過(guò)串口傳到上位機(jī)上實(shí)時(shí)顯示出測(cè)得的距離。
圖5 系統(tǒng)框架
如圖6所示,本設(shè)計(jì)的第一組測(cè)試標(biāo)定對(duì)象為藍(lán)色物體,從圖中可以看出,藍(lán)色物體易受周圍環(huán)境干擾,標(biāo)定了一部分其他顏色物體,精確度不高。
圖6 藍(lán)色標(biāo)定
如圖7所示,本設(shè)計(jì)的第二組測(cè)試標(biāo)定對(duì)象為紅色物體,從圖中可以看出,紅色物體受周圍環(huán)境影響小。
圖7 紅色標(biāo)定
如圖8、10、12所示,對(duì)標(biāo)定的紅色物體進(jìn)行測(cè)距,距離分別為為40.7cm、80.6cm、8.7cm,如圖9、11、13所示通過(guò)串口助手將測(cè)到的距離傳送給上位機(jī)便于實(shí)時(shí)觀察,上位機(jī)顯示測(cè)距為40cm、80cm、8cm,與實(shí)際所量距離基本一致。
圖8 實(shí)際距離40.7cm圖
圖9 40.7cm上位機(jī)測(cè)試數(shù)據(jù)
圖10 實(shí)際距離80.6cm圖
圖11 80.6cm上位機(jī)測(cè)試數(shù)據(jù)
圖12 實(shí)際距離8.7cm圖
圖13 8.7cm上位機(jī)測(cè)試數(shù)據(jù)