《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > 基于OTSU算法的FPGA實(shí)時(shí)繞距測(cè)量系統(tǒng)
基于OTSU算法的FPGA實(shí)時(shí)繞距測(cè)量系統(tǒng)
2015年電子技術(shù)應(yīng)用第7期
林宜丙,石守東,孫書丹
寧波大學(xué) 信息科學(xué)與工程學(xué)院,浙江 寧波315211
摘要: 隨著FPGA芯片集成度的提高,加之其價(jià)格低廉的優(yōu)勢(shì),越來(lái)越多的視頻圖像處理平臺(tái)采用基于FPGA技術(shù)的方案。設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)基于OTSU算法的FPGA實(shí)時(shí)繞距測(cè)量系統(tǒng)。首先設(shè)計(jì)了視頻圖像灰度化的非浮點(diǎn)運(yùn)算實(shí)現(xiàn),然后詳細(xì)討論了OTSU算法的硬件實(shí)現(xiàn)方案,包括其原理、公式簡(jiǎn)化、流水線處理等。經(jīng)過(guò)OTSU算法處理之后,接著通過(guò)統(tǒng)計(jì)二值圖像中雙絞線部分的列寬,計(jì)算兩個(gè)最窄列寬之間的距離即繞距。最后在片上可編程系統(tǒng)上編寫軟件模塊實(shí)現(xiàn)功能。
中圖分類號(hào): TP391.41
文獻(xiàn)標(biāo)識(shí)碼: A
DOI:10.16157/j.issn.0258-7998.2015.07.004
中文引用格式: 林宜丙,石守東,孫書丹. 基于OTSU算法的FPGA實(shí)時(shí)繞距測(cè)量系統(tǒng)[J].電子技術(shù)應(yīng)用,2015,41(7):15-18,22.
英文引用格式: Lin Yibing,Shi Shoudong, Sun Shudan. The FPGA real-time distance measuring system based on OTSU algorithm[J].Application of Electronic Technique,2015,41(7):15-18,22.
The FPGA real-time distance measuring system based on OTSU algorithm
Lin Yibing,Shi Shoudong, Sun Shudan
College of Information Science and Engineering, Ningbo University, Ningbo 315211,China
Abstract: With the improvement of the FPGA chip integration, as well as its advantage of low price, more and more video image processing platform adopt schemes based on FPGA technology. This paper designs and realizes a FPGA real-time distance measuring system based on OTSU algorithm. First,a video image gray level transformation of the non-floating point arithmetic realization is designed,and OTSU algorithm hardware implementation scheme is discussed in detail, including its principle, the formula of simplified, pipeline processing, etc. After OTSU algorithm processing,through the statistics of binary image in the column width of twisted-pair,the distance between the two most narrow column width around the pitch is calculated. Finally,software module is wroten to implement functions.
Key words : OTSU;pitch measurement;FPGA;image processing;NIOS II

0 引言

    網(wǎng)線繞距指的是雙絞線扭繞之后兩個(gè)節(jié)點(diǎn)之間的長(zhǎng)度,而雙絞線之間相互纏繞的緊密程度一般通過(guò)其繞距來(lái)度量[1]。網(wǎng)線內(nèi)部雙絞線需要相互纏繞的原因是為了減少各線之間產(chǎn)生的信號(hào)串?dāng)_,而每對(duì)線對(duì)采用的繞距是不同的,有著各自的標(biāo)準(zhǔn),因此需要在網(wǎng)線成纜制作的同時(shí)通過(guò)實(shí)時(shí)反饋繞距值來(lái)控制成纜機(jī)制作線對(duì)。

        FPGA,即現(xiàn)場(chǎng)可編程門陣列,它是在PAL、GAL、CPLD等技術(shù)的基礎(chǔ)上進(jìn)一步發(fā)展的可編程器件。FPGA通過(guò)為每個(gè)功能單獨(dú)地建立硬件,實(shí)現(xiàn)整個(gè)應(yīng)用程序所需的功能,因此它具有并行處理的內(nèi)在特點(diǎn)。硬件設(shè)計(jì)使其擁有較高的并行運(yùn)行速度,同時(shí)又以其相對(duì)低廉的成本保持軟件所具有的可重新編程的靈活性。這使得FPGA非常適用于圖像處理,尤其在底層與中間層充分利用圖像處理固有的并行性特點(diǎn)[2]。

1 OTSU算法

1.1 OTSU算法原理

    OTSU算法由日本學(xué)者大津展之提出,是一種自適應(yīng)的閾值確定算法,又叫最大類間方差法。其基本思想是根據(jù)圖像的灰度特性,將圖像按類間距離極大準(zhǔn)則分成目標(biāo)和背景兩個(gè)部分[3]。當(dāng)目標(biāo)和背景間的類間方差愈大,則表明構(gòu)成圖像的兩個(gè)部分的差別就愈大,且其判斷準(zhǔn)則簡(jiǎn)單,易于移植至FPGA中實(shí)現(xiàn),因此廣泛應(yīng)用于實(shí)時(shí)圖像分割領(lǐng)域。

    此方法的基本原理:設(shè)待分割圖像包含L個(gè)灰度級(jí)(0,1,…,L-1),各個(gè)灰度值的概率為:

    qrs1-gs1.gif

其中ni表示灰度值是i的像素?cái)?shù),N為總的像素?cái)?shù)。給定圖像I(x,y),目標(biāo)與背景的分割閾值記作t,則屬于目標(biāo)區(qū)域A與背景區(qū)域B的像素點(diǎn)數(shù)占整幅圖像比例分別記做:

    qrs1-gs2-8.gif

    當(dāng)使得式(8)中的類間方差達(dá)到最大,此時(shí)的t即為閾值。

1.2 簡(jiǎn)化OTSU算法公式

    將式(7)代入式(8)可得:

    qrs1-gs9.gif

    為了簡(jiǎn)化計(jì)算,將類間方差表達(dá)式改寫成式(10)所示。而對(duì)每幀圖像來(lái)說(shuō),N是一個(gè)常數(shù)值,可以忽略不計(jì),從而式(10)可以進(jìn)一步改寫成式(11),便于FPGA并行實(shí)現(xiàn)OTSU算法。

    qrs1-gs10-11.gif

2 FPGA實(shí)時(shí)繞距檢測(cè)系統(tǒng)并行設(shè)計(jì)

2.1 硬件總體架構(gòu)設(shè)計(jì)

    系統(tǒng)整體電路以FPGA為核心,其外圍的器件主要包括高速CMOS圖像采集器、串口轉(zhuǎn)無(wú)線模塊以及FPGA芯片,并在整體電路內(nèi)部設(shè)計(jì)一個(gè)電源模塊為各個(gè)模塊供電。嵌入式繞距測(cè)量系統(tǒng)的整體框架:圖像采集部分采用高速CMOS圖像采集器,由于其有效像素點(diǎn)較多,一般其分別率為百萬(wàn)級(jí)以上,且具有較短的曝光時(shí)間,因此被用來(lái)實(shí)時(shí)采集絞線圖像。通過(guò)使用單一的線性光源對(duì)絞線進(jìn)行照射,并將其投影到事先設(shè)置好的背景板上,接著通過(guò)高速CMOS圖像采集器采集投影在背景板上的投影。最后將傳感器系統(tǒng)采集的圖像陣列傳輸至FPGA電路系統(tǒng)內(nèi),運(yùn)用OTSU圖像分割算法實(shí)時(shí)二值化圖像,將二值化圖像遞交給繞距計(jì)算模塊處理,統(tǒng)計(jì)二值圖像的各列寬度,從而計(jì)算出相鄰最窄位置(即絞線節(jié)點(diǎn))之間的距離,得到絞線的繞距值并發(fā)送至上位機(jī)。

2.2 圖像的灰度化處理

    灰度圖像是指不含彩色信息,只含亮度信息的圖像,其像素點(diǎn)的值稱為灰度值,范圍為0~255。由于OTSU算法是基于灰度圖像操作的,因此需要將CMOS攝像頭采集的RGB格式圖像轉(zhuǎn)換成灰度圖像。常用的灰度化處理方法有分量法、最大值法、平均值法與加權(quán)平均法。通過(guò)實(shí)驗(yàn)發(fā)現(xiàn),分量法無(wú)法充分利用圖像的原始信息,最大值法使得圖像亮度偏高,而平均值法則使得圖像亮度過(guò)于柔和,都不利于后續(xù)圖像分割的進(jìn)行。因此,本文采用加權(quán)平均值法實(shí)現(xiàn)灰度化處理。

    攝像頭采集的圖像數(shù)據(jù)為3×8 bit的RGB信號(hào),若采用常用的權(quán)值:ωr=30%,ωg=59%,ωb=11%,將使得FPGA內(nèi)部進(jìn)行浮點(diǎn)乘法運(yùn)算,這在消耗大量的硬件資源的同時(shí),也拖慢了整個(gè)算法的執(zhí)行速度。而采用張鵬等提出的權(quán)重[4],可以有效避免浮點(diǎn)運(yùn)算,其權(quán)重分配為:ωr=25%=2-2,ωg=62.5%=2-1+2-3,ωb=12.5%=2-3;則灰度值H=2-2×R+(2-1+2-3)×G+2-3×B,從而將整個(gè)運(yùn)算過(guò)程轉(zhuǎn)換為1次求和運(yùn)算和4次移位運(yùn)算。灰度處理模塊的結(jié)構(gòu)見(jiàn)圖1,由于采用了流水線結(jié)構(gòu)的設(shè)計(jì),即在求和運(yùn)算前加入了流水線寄存器,從而在每一個(gè)周期內(nèi)都能輸出一個(gè)像素點(diǎn)的灰度值。

qrs1-t1.gif

2.3 OTSU算法的硬件并行實(shí)現(xiàn)

qrs1-2.3-x1.gif

    通過(guò)上述分析,可分為兩個(gè)步驟來(lái)計(jì)算類間方差:

    (1)在統(tǒng)計(jì)模塊中計(jì)算一幀圖像的直方圖統(tǒng)計(jì)、灰度統(tǒng)計(jì)、累積直方圖統(tǒng)計(jì)、累積灰度統(tǒng)計(jì);

    (2)依次將累積直方圖與累積灰度統(tǒng)計(jì)中的數(shù)值傳入計(jì)算模塊計(jì)算類間方差。

    硬件結(jié)構(gòu)框圖如圖2所示,主要由統(tǒng)計(jì)模塊與計(jì)算模塊構(gòu)成。

qrs1-t2.gif

2.3.1 并行統(tǒng)計(jì)模塊

    首先,定義一個(gè)深度為256的雙口RAM來(lái)保存每個(gè)灰度值的像素點(diǎn)個(gè)數(shù),具體操作是將每個(gè)像素點(diǎn)的灰度值作為其中一個(gè)端口的讀地址,讀取RAM單元中的計(jì)數(shù),將其值增加1,接著將更新后的計(jì)數(shù)從另一個(gè)端口寫入同一單元[5]。

    其次,由于在統(tǒng)計(jì)處理每個(gè)像素點(diǎn)時(shí),都要執(zhí)行3個(gè)步驟:讀取計(jì)數(shù)、更新計(jì)數(shù)、寫回計(jì)數(shù)。只有完成當(dāng)前像素點(diǎn)的3個(gè)步驟之后,才能進(jìn)行下一個(gè)像素點(diǎn)的處理。而FPGA的并行特性能夠解決此類處理時(shí)延導(dǎo)致的低效率,即在OTSU模塊內(nèi)部構(gòu)建3個(gè)功能相同的統(tǒng)計(jì)模塊,每個(gè)模塊各自負(fù)責(zé)相鄰的3個(gè)像素點(diǎn)。如圖2,通過(guò)逐個(gè)激活直方圖統(tǒng)計(jì)1、2、3模塊,從而構(gòu)成一條流水線,使得每個(gè)子模塊都有3個(gè)時(shí)鐘周期來(lái)統(tǒng)計(jì)1個(gè)像素點(diǎn)。讀取計(jì)數(shù)、更新計(jì)數(shù)、寫回計(jì)數(shù)3個(gè)步驟的邏輯被劃分到各自的時(shí)鐘周期來(lái)完成,從而提高了處理的效率。用這種方式,保證了每個(gè)時(shí)鐘周期能夠統(tǒng)計(jì)1個(gè)像素點(diǎn)。

    最后,在直方圖輸出時(shí),使用兩個(gè)加法器將3個(gè)直方圖統(tǒng)計(jì)模塊的輸出結(jié)果相加,就可以計(jì)算得到完整的直方圖統(tǒng)計(jì)。在得到完整的直方圖之后,便可分別算出灰度統(tǒng)計(jì)、累積直方圖統(tǒng)計(jì)、累積灰度統(tǒng)計(jì)。

2.3.2 流水線計(jì)算模塊

    把統(tǒng)計(jì)模塊中的累積直方圖統(tǒng)計(jì)和累積灰度統(tǒng)計(jì)的結(jié)果依次送入計(jì)算模塊。對(duì)于計(jì)算模塊,如圖3,只需采用2個(gè)除法器和3個(gè)乘法器即可實(shí)現(xiàn),并且構(gòu)成一條四級(jí)流水線,這樣只需5個(gè)時(shí)鐘就能得到最終的類間方差。

qrs1-t3.gif

3 繞距計(jì)算模塊

    在數(shù)字視頻處理系統(tǒng)中,由于數(shù)據(jù)流量非常之大且對(duì)系統(tǒng)的實(shí)時(shí)性的要求也較高,因此系統(tǒng)有必要建立高速有序的視頻數(shù)據(jù)輸入/輸出流,而乒乓緩存結(jié)構(gòu)正是為平衡視頻編解碼與變速的圖像處理過(guò)程之間的速度不匹配問(wèn)題提供數(shù)據(jù)通道的。

    乒乓緩存結(jié)構(gòu)將輸入數(shù)據(jù)流經(jīng)由數(shù)據(jù)選擇單元將數(shù)據(jù)流等時(shí)地劃分至兩個(gè)數(shù)據(jù)緩存區(qū)。采用乒乓操作[6]處理二值化后的圖像數(shù)據(jù)如圖4所示,設(shè)置兩個(gè)BLOCK RAM:r1,r2;在第1個(gè)緩存周期,將第一幀線材每列的寬度存入r1中;待到r1存滿后,在第2個(gè)緩存周期,繼續(xù)將第二幀的線材寬度存入r2中,與此同時(shí),對(duì)比r1中的線材寬度,找出寬度極小的n個(gè)節(jié)點(diǎn),記錄n個(gè)節(jié)點(diǎn)的列地址,記第n個(gè)節(jié)點(diǎn)的列地址A1,與n-1個(gè)節(jié)點(diǎn)的地址A0相減即得出該線材繞距,并判斷其是否符合標(biāo)準(zhǔn)。這樣,從模塊的兩端看,輸入/輸出的數(shù)據(jù)流都是連續(xù)的,從而達(dá)到了利用低速模塊處理高速數(shù)據(jù)的目的,并加快了整個(gè)算法的實(shí)時(shí)性。

qrs1-t4.gif

4 實(shí)驗(yàn)結(jié)果與分析

    本文采用Verilog語(yǔ)言與C語(yǔ)言編寫,采用的器件是Cyclone IV EP4CE1系列的芯片。OTSU算法執(zhí)行結(jié)果如圖5所示,通過(guò)換算比例尺可得出該雙絞線繞距為16.59 mm。可以看出本文算法能夠較好地分割雙絞線圖像,且具有快速的圖像處理速度,能夠?qū)崿F(xiàn)雙絞線圖像的實(shí)時(shí)分割,使得系統(tǒng)能更好地檢測(cè)雙絞線繞距,達(dá)到了預(yù)期目的,而且這種方法還可以應(yīng)用于其他各類線材的繞距、線寬等參數(shù)的檢測(cè)。

qrs1-t5.gif

    通過(guò)QuartusII編譯分析可知,二值化模塊占用FPGA芯片邏輯單元不到5%,直方圖統(tǒng)計(jì)模塊占用了約16%,而計(jì)算模塊占用了約7%的資源,這大大節(jié)約了芯片的硬件資源,節(jié)約了硬件成本,使得更多的資源可用于其他硬件算法。對(duì)于輸入時(shí)鐘為50 MHz、大小為640×480的雙絞線圖像,每幀處理時(shí)間為:T=qrs1-5-s1.gif×640×480=0.006 144 s,完全達(dá)到了實(shí)時(shí)進(jìn)行雙絞線圖像處理的要求。

5 結(jié)論

    OTSU分割算法通過(guò)不斷計(jì)算得到使得類間方差達(dá)到最大值的閾值,其算法本身有大量操作可以并行實(shí)現(xiàn)。因此,相比普通的ARM平臺(tái)的順序執(zhí)行方案,本文使用的FPGA方案更具實(shí)時(shí)性,能夠勝任對(duì)于網(wǎng)線實(shí)時(shí)繞距測(cè)量的處理速度要求。通過(guò)在FPGA中構(gòu)建3個(gè)直方圖統(tǒng)計(jì)子模塊,使得算法在1個(gè)周期內(nèi)統(tǒng)計(jì)1個(gè)像素點(diǎn)的灰度值,并使用簡(jiǎn)化的計(jì)算公式,大大減少了算法的處理時(shí)間,并能很好地將雙絞線目標(biāo)從背景中分割出來(lái)。

參考文獻(xiàn)

[1] 張國(guó)光.如何檢查網(wǎng)線性能[J].鐵道通信信號(hào),2006,42(2):62-63.

[2] 原魁,肖晗,何文浩.采用FPGA的機(jī)器視覺(jué)系統(tǒng)發(fā)展現(xiàn)狀與趨勢(shì)[J].計(jì)算機(jī)工程與應(yīng)用,2010(36):1-6.

[3] 齊麗娜,張博,王戰(zhàn)凱.最大類間方差法在圖像處理中的應(yīng)用[J].無(wú)線電工程,2006(7):25-26,44.

[4] 張鵬,鐘俊,郭安明,等.設(shè)備監(jiān)控圖像預(yù)處理算法改進(jìn)及其FPGA實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用,2011(6):1706-1708.

[5] BAILEY D G.基于FPGA的嵌入式圖像處理系統(tǒng)設(shè)計(jì)[M].原魁,何文浩,肖晗,譯.北京:電子工業(yè)出版社,2013.

[6] 吳繼華,蔡海寧,王誠(chéng).Altera FPGA/CPLD設(shè)計(jì),高級(jí)篇[M].第2版.北京:人民郵電出版社,2011.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。