溫佳靜,范 紅,朱江澤,劉 榮,趙子楚
(東華大學(xué) 信息科學(xué)與技術(shù)學(xué)院,上海 201620)
實(shí)時(shí)圖像處理涉及大量的運(yùn)算,通常需要很高的計(jì)算速度、存儲(chǔ)速度和數(shù)據(jù)帶寬。相對(duì)而言,現(xiàn)場(chǎng)可編程門陣列(Field-Programmable Gate Array,FPGA)是一種性能高、功耗低、開發(fā)周期短的“萬能”芯片。采用FPGA來進(jìn)行圖像處理的主要優(yōu)勢(shì)是速度快、應(yīng)用靈活。速度快的優(yōu)勢(shì)來源于FPGA的硬件邏輯,特別是FPGA的并行執(zhí)行和流水線操作[1]。其靈活性體現(xiàn)在它可以通過編程靈活地修改其內(nèi)部邏輯功能,從而實(shí)現(xiàn)高速的硬件技術(shù)和并行運(yùn)算。
在機(jī)械加工過程中,刀具會(huì)在使用過程中出現(xiàn)磨損[2]。隨著產(chǎn)品質(zhì)量要求的提高,刀具的磨損程度影響著生產(chǎn)的利益。因此刀具磨損及破損狀態(tài)的分析越來越引起人們的重視[3]。由于采集圖像的過程中不可避免地存在著噪聲以及磨損輪廓不明顯、對(duì)比度不高等問題,因此必須進(jìn)行濾波和圖像增強(qiáng)處理[4]。本文研究了一種基于FPGA的刀具圖像的預(yù)處理研系統(tǒng),通過實(shí)時(shí)的雙邊濾波處理從而達(dá)到對(duì)圖像的去噪和邊緣保持的效果,為進(jìn)一步的刀具表面缺陷檢測(cè)做準(zhǔn)備。
整個(gè)系統(tǒng)主要由以下幾個(gè)模塊組成:圖像采集模塊,數(shù)據(jù)存儲(chǔ)模塊,圖像處理模塊和圖像傳輸模塊。其中DDR2 SDRAM用作數(shù)據(jù)的高速存儲(chǔ)模塊。DDR2是由JEDEC制定的新一代DDR內(nèi)存技術(shù)標(biāo)準(zhǔn)[5],采用了在時(shí)鐘的上升延和下降延同時(shí)進(jìn)行數(shù)據(jù)傳輸?shù)幕痉绞?,可進(jìn)行4 bit預(yù)讀取,讀取數(shù)據(jù)命令快。其內(nèi)存均采用FBGA封裝形式,使得它具有更好的電氣性能與散熱性。在圖像傳輸模塊采用了基于FPGA的千兆以太網(wǎng)的方案進(jìn)行設(shè)計(jì)。以太網(wǎng)選擇了MAC外接一個(gè)PHY芯片的模式,在此基礎(chǔ)上選擇了UDP協(xié)議作為傳輸層協(xié)議進(jìn)行數(shù)據(jù)傳輸。目前傳輸層采用的協(xié)議主要是TCP/IP協(xié)議和UDP協(xié)議。TCP/IP協(xié)議是一種面向連接的傳輸協(xié)議,傳輸可靠但是延遲性大。而UDP協(xié)議是一種無連接的傳輸協(xié)議,雖然不可靠但是傳輸效率高,而且大多數(shù)成功商用的RTL級(jí)設(shè)計(jì)中,大部分使用Verilog或者VHDL來實(shí)現(xiàn)以太網(wǎng)傳輸,都是基于非常簡(jiǎn)單的UDP協(xié)議的,所以說UDP協(xié)議適合在實(shí)時(shí)圖像傳輸中使用。
系統(tǒng)的整體框圖如圖1所示,可以看出整個(gè)系統(tǒng)的運(yùn)作流程概述如下:首先在CMOS相機(jī)攝像頭上電一段時(shí)間后開始初始化配置,然后在初始化完成后開始采集圖像數(shù)據(jù)存入到DDR2 SDRAM中,從DDR2 SDRAM中讀取數(shù)據(jù)存入到FIFO中,將圖像數(shù)據(jù)從FIFO中讀取出來,接下來就是對(duì)取出來的圖像數(shù)據(jù)進(jìn)行雙邊濾波處理,最后通過千兆以太網(wǎng)UDP協(xié)議發(fā)送到PC端,就可以通過PC端上位機(jī)軟件看到實(shí)時(shí)圖像。
圖1系統(tǒng)整體框圖
所謂雙邊濾波,就是在均值濾波或者是普通加權(quán)濾波操作(如高斯濾波)的基礎(chǔ)上,通過距離權(quán)和顏色權(quán)這兩種權(quán)值對(duì)圖像進(jìn)行帶權(quán)平滑處理,既能去除噪聲,又能進(jìn)行邊緣保護(hù)。同經(jīng)典高斯濾波器一樣,雙邊濾波器也僅僅利用了局部平均加權(quán)方法;不同的是雙邊濾波器在二維領(lǐng)域內(nèi)的加權(quán)系數(shù)由兩部分因子乘積組合而成[6]:一個(gè)同高斯濾波器一樣,是關(guān)于領(lǐng)域像素點(diǎn)與中心像素點(diǎn)的距離的函數(shù),也就是幾何距離函數(shù);而另一個(gè)是關(guān)于領(lǐng)域像素點(diǎn)與中心像素點(diǎn)像素差值的函數(shù),也就是色彩距離。雖然濾波時(shí)都是采用了加權(quán)平均的方法,但是雙邊濾波在考慮位置對(duì)中心的影響的基礎(chǔ)上還把輻射差異加入到了影響因子中。
雙邊濾波的算法原理如下:濾波算法中,目標(biāo)點(diǎn)上的像素值通常是由其所在位置上的周圍的一個(gè)小局部領(lǐng)域像素的值所決定的,也就是對(duì)周邊的一定范圍內(nèi)的像素值分別賦予不同的高斯權(quán)重,并在加權(quán)平均后得到當(dāng)前點(diǎn)的最終結(jié)果,如公式(1)所示:
(1)
(2)
式中,c表示為基于空間距離的權(quán)重,而kd(x)用來對(duì)結(jié)果進(jìn)行單位化。
當(dāng)考慮邊緣信息的時(shí)候(這里的邊緣信息即圖像中的不同顏色區(qū)域),可以加入一個(gè)色彩距離的權(quán)重表示,如公式(3)所示:
(3)
(4)
式中,s表示為基于像素間相似程度的高斯權(quán)重,kr(x)同樣用來對(duì)結(jié)果進(jìn)行單位化。
雙邊濾波具有兩個(gè)權(quán)重,分別與幾何距離和色彩距離有關(guān)系,兩者相結(jié)合,就可以得到基于空間距離和色彩距離綜合考量的雙邊濾波,如公式(5)所示:
(5)
(6)
其中,權(quán)重c(ε,x)和領(lǐng)域素點(diǎn)ε與中心像素點(diǎn)x之間的幾何距離相關(guān),權(quán)重s(f(ε),f(x))和鄰域像素點(diǎn)f(ε)與中心像素點(diǎn)f(x)之間的色彩距離相關(guān)。也就是說,隨著ε與x之間幾何距離和色彩距離改變,像素點(diǎn)的權(quán)重c(ε,x)和s(f(ε),f(x))也在跟著改變。即:當(dāng)遠(yuǎn)離邊界時(shí)(邊界就是顏色反差極大的地方),顏色權(quán)基本一樣,類似于高斯濾波,這樣便可以平滑處理圖像;當(dāng)處在邊界時(shí),邊界上的點(diǎn)顏色相近,取極大的權(quán)值,而邊界外的點(diǎn),顏色距離越遠(yuǎn),權(quán)值取得越小(甚至可以忽略不計(jì)),這樣就保護(hù)了邊緣。
圖像的處理時(shí)間和效果受圖像分辨率大小和顏色空間距離的約束。一方面由于坐標(biāo)空間中濾波器的sigma值越大,意味著越遠(yuǎn)的像素值會(huì)相互影響,從而使更大的區(qū)域中足夠相似的顏色獲得相同的顏色。另一方面顏色空間濾波器的sigma值越大,就表明該像素領(lǐng)域內(nèi)有更寬廣的顏色被混合到一起,產(chǎn)生較大的半相等顏色區(qū)域。如圖2所示,圖(a)是在相機(jī)上進(jìn)行采集未經(jīng)過處理的刀具原圖。圖(b)是在像素領(lǐng)域直徑d為25,顏色空間濾波器sigma值為 50,坐標(biāo)空間濾波器sigma值為25/2下的濾波效果。圖(c)是在像素領(lǐng)域直徑d為25,顏色空間濾波器sigma值為75,坐標(biāo)空間濾波器sigma值為25下的效果圖。可以發(fā)現(xiàn),權(quán)重系數(shù)的不同,會(huì)直接影響到噪點(diǎn)處理和邊緣保持的效果,從而影響刀具頭像預(yù)處理的性能。
圖2 不同權(quán)重系數(shù)進(jìn)行雙邊濾波的圖像前后對(duì)比
由于OpenCV程序算法都是在pc上通過軟件運(yùn)行的方式實(shí)現(xiàn)的,存在處理實(shí)時(shí)性差、適用范圍有限等問題[7]。結(jié)果顯示,在OpenCV上對(duì)刀具圖像進(jìn)行雙邊濾波的運(yùn)算時(shí)間為82 ms。
使用FPGA進(jìn)行雙邊濾波處理時(shí),采用了并行流水線的設(shè)計(jì),圖像采集模塊和控制存取模塊之間以及控制存取模塊與圖像處理模塊之間,都采用了異步FIFO用于行緩存,因此圖像采集和圖像處理可以實(shí)現(xiàn)并行執(zhí)行,從而達(dá)到實(shí)時(shí)圖像處理。
因此不需要采用表達(dá)式(5)給出的在空間上做無限積分的方法,而是采用一個(gè)模板掃描圖像中的每一個(gè)像素的方法,用模板中確定的領(lǐng)域內(nèi)像素的加權(quán)平均值去替代模板中心像素點(diǎn)的值。改進(jìn)后的公式如(7)所示。
(7)
通過圖3處理前后的圖像可以發(fā)現(xiàn),刀具經(jīng)過雙邊濾波后不均勻的噪聲黑點(diǎn)被濾除掉,而且通過采用選定的窗口系數(shù)與被窗口選中的子圖像做卷積的方法,得到處理后像素點(diǎn)的像素值的方法,使得距離超過一定程度的像素值影響小,從而使整張圖片處理效果更優(yōu)良。在相機(jī)采集到數(shù)據(jù)到之后收到指令延遲只有幾毫秒,在一幀圖像傳輸結(jié)束的時(shí)候圖像的處理也就結(jié)束了,也就是說在FPGA上圖像處理運(yùn)算時(shí)間基本可以忽略不計(jì)。
圖3 使用FPGA進(jìn)行雙邊濾波的圖像前后對(duì)比
FPGA本質(zhì)上是大規(guī)模并行的,在運(yùn)行相同的算法的時(shí)候,其性能顯著提高。在一些分選設(shè)備中進(jìn)行圖像處理基本上用的都是FPGA,因?yàn)橄鄼C(jī)從看到物料圖像到給出執(zhí)行指令之間的延遲大概只有幾毫秒,這要求圖像處理必須快而且延時(shí)固定,只有FPGA進(jìn)行的實(shí)時(shí)流水線運(yùn)算才能滿足這一要求。
在實(shí)際的生產(chǎn)應(yīng)用中常常因?yàn)榈毒叩哪p導(dǎo)致產(chǎn)品質(zhì)量和使用年限的下降,從而降低廠家利益。如果能夠通過刀具磨損情況的分析進(jìn)行改進(jìn)的話,就能進(jìn)一步延長(zhǎng)產(chǎn)品使用壽命,從而達(dá)到利益最大化。在對(duì)刀具進(jìn)行特征提取之前,采用雙邊濾波進(jìn)行預(yù)處理,不僅去噪,還保護(hù)邊緣,從而為缺陷檢測(cè)和磨損分析做準(zhǔn)備。因此基于FPGA的刀具圖像預(yù)處理系統(tǒng)的研究具有很強(qiáng)的現(xiàn)實(shí)意義。