?

圖像二值化處理硬件加速引擎的設計

2021-12-10 04:07宋宇鯤張多利
關鍵詞:流水線像素點亮度

陽 欣, 魏 可, 宋宇鯤, 張多利

(合肥工業大學 微電子學院,安徽 合肥 230601)

0 引 言

圖像二值化處理是一種用于分離圖像背景和前景的數字圖像處理方法,被廣泛應用于機器視覺、醫學影像、文本提取等領域[1-3]。圖像二值化處理的關鍵在于獲取合適的閾值,獲取閾值通常需要處理大量圖像數據,而處理器僅訪問內存就需要3個以上時鐘周期[4],計算過程耗時長,無法滿足某些實時性要求高的場合。

針對低成本、高實時性等嵌入式系統需求,本文提出了一種圖像二值化處理硬件加速架構,并完成了基于該架構的硬件電路設計。所設計的硬件電路作為處理器的從設備實現多種規格、不同環境下的圖像二值化處理,具有電路面積小、加速效率高等優點。

1 算法原理

圖像二值化處理又稱為圖像閾值處理,主要實現方法有全局閾值算法和自適應閾值算法。全局閾值算法對整幅圖像的像素點運算獲取最佳閾值,其算法通用性好,但是對圖像噪聲敏感[5],而且內存開銷大;自適應閾值算法將原始圖像分割成若干個子圖像并分別求子圖像的最優閾值,它能夠減小圖像噪聲的影響,但是計算過程相對復雜[6]。

綜合考慮處理效果、硬件成本以及算法復雜度等因素,本文將Box Filter算法引入到圖像二值化處理過程中。這是一種自適應閾值算法,以待處理像素點為中心、(2r+1)為邊長的正方形框作為閾值窗口,閾值窗口內所有像素點亮度值的數學期望是該像素點的閾值T(x,y)[7]?;谠撍惴ǖ挠布娐分恍枰?圖像寬度×閾值窗口寬度)字節圖像緩存,具有算法復雜度低、抗噪聲能力強等優點[8]。

1.1 處理流程

圖像像素點按照從左到右、從上到下順序依次輸入。針對以上特點,首先計算閾值窗口內圖像的第i列像素點的亮度和C(i),即

(1)

其中:g(i,y+j)為橫坐標為i、縱坐標為y+j的像素點的亮度值;y為閾值窗口中心像素點的縱坐標;r為閾值窗口的半徑。

閾值窗口內所有像素點的亮度和R(x,y)是其每列像素點亮度和的累加,即

(2)

其中:x為閾值窗口中心像素點的橫坐標;r為閾值窗口的半徑。

隨著閾值窗口向圖像右方移動,當前閾值窗口與前一個閾值窗口大部分像素點是相同的,閾值窗口所有像素點的亮度和R(m,n)的計算公式為:

R(m-1,n)+C(m+r)-C(m-r-1)

(3)

其中:R(m-1,n)為前一個閾值窗口所有像素點的亮度和;C(m-r-1)為閾值窗口前一列像素點的亮度和;C(m+r)為閾值窗口最新一列像素點的亮度和。

像素點對應的閾值T(x,y)等于閾值窗口所有像素點的亮度和R(x,y)除以閾值窗口的像素點總個數(2r+1)2,即

(4)

二值圖像b(x,y)由閾值偏置參數σ、待處理像素點的亮度值g(x,y)和對應的閾值T(x,y)的數值大小決定,即

(5)

1.2 閾值窗口空白部分填充

當閾值窗口的中心像素點是圖像邊沿或靠近邊沿時,可能會出現部分閾值窗口在圖像有效區外的情況。

閾值窗口空白部分的填充步驟如圖1所示。

當窗口半徑r=2、中心像素點坐標為(0,0)時,閾值窗口的像素點分布如圖1a所示,圖1中的陰影部分在圖像有效區外。以圖1a為例,本文填充閾值窗口空白部分的具體步驟如下:

(1) 使用圖像的邊沿行像素點擴展圖像的高度,如圖1b所示。

(2) 復制擴展后的圖像邊沿列像素點填充閾值窗口的剩余空白部分,如圖1c所示。

2 系統架構

圖像二值化處理加速引擎、處理器、靜態隨機存取存儲器(static random access memory,SRAM)等分立的硬件單元,通過高級高性能總線(advanced high preformance bus,AHB)互聯成一個系統,如圖2所示。

圖像二值化加速引擎包括內存控制、圖像緩存和圖像運算等模塊。其中,圖像緩存模塊由(2r+1)個行緩存單元構成,每個行緩存單元存儲1行像素點;內存控制模塊是圖像緩存模塊的控制中樞,其主要作用是將像素點g(x,y)存儲在對應行緩存的子存儲單元中,并輸出閾值窗口像素點;圖像運算模塊根據(1)~(5)式計算閾值并輸出二值圖像。

總線接口包括AHB slave和AHB master。AHB slave收發圖像二值化處理的工作參數和控制命令,如圖像大小、閾值偏置參數σ以及圖像二值化處理開始、結束等信息;AHB master將二值圖像傳輸到掛載在AHB總線上的SRAM中。

3 圖像二值化加速引擎的實現

3.1 圖像緩存模塊的控制算法

本文采用循環行緩存讀寫算法控制行緩存單元[9],其主要思想是:將第1行像素點同時存儲在行緩存0,1,2,…,r中,實現圖1b擴展圖像高度的功能,圖像其他行像素點按照輪換規則對應唯一的行緩存,即

(6)

其中:N為行緩存的序號;y為輸入像素點在圖像中的縱坐標;r為閾值窗口的半徑;%為取余運算。

相比于存儲整幀圖像,本算法優勢在于圖像緩存模塊只存儲包含閾值窗口的整行像素點,大大減少了圖像緩存的數量。

行緩存讀寫控制如圖3所示。圖3的縱坐標V為行緩存的序號,橫坐標U為行緩存的子存儲單元,每個子單元對應唯一的存儲地址,像素點在行緩存中的存儲地址是其在圖像中的橫坐標。為了加快圖像讀寫速率,分步輸出閾值窗口內的像素點,由圖3可知,當閾值窗口的1列像素點緩存完成后,下一個時鐘節拍將整列像素點輸出到圖像運算模塊。

圖3 行緩存讀寫控制

3.2 運算流水線

圖像運算模塊數據運算量大,因此其處理速度直接決定了整個電路的性能。本文采用流水線結構分級計算閾值并輸出二值圖像,提高圖像運算模塊的主頻[10]。

運算流水線結構如圖4所示,運算流水線由分級運算單元和計數器構成。每輸入1列圖像像素點計數器的值加1,計數到圖像的行尾時歸0,其作用是計算輸入列像素點在圖像中的橫坐標。

圖4 運算流水線結構

運算單元分為累加、移位緩存等不同步驟,每級流水線的原理介紹如下。

(1) 第1級流水線由若干個加法器和寄存器構成,采用嵌套子流水線的方式,分步計算由圖像緩存模塊輸入的閾值窗口整列像素點的亮度和C(i)。

(2) 第2級流水線由(2r+3)個寄存器buffer(0)、buffer(1)、buffer(2)……buffer(2r+1)、buffer(2r+2)組成。其中:buffer(0)緩存閾值窗口前一列像素點的亮度和;buffer(1)、buffer(2)……buffer(2r+1)依次緩存閾值窗口內每列像素點的亮度和;buffer(2r+2)緩存圖像最后一列像素點的亮度和C(w)。當圖像第1列像素點的亮度和C(0)輸入時,將其同時存儲在buffer(2r+1)、buffer(2r)、buffer(2r-1)……buffer(r)中,實現填補閾值窗口左半部分空白區域的功能。

(3) 第3級流水線由加法器、減法器和寄存器構成,計算閾值窗口所有像素點的亮度和R(x,y)。① 當閾值窗口的中心像素點位于圖像的第1列時,根據(2)式對閾值窗口內每列像素點亮度和求和;② 閾值窗口在圖像其他位置時,根據(3)式計算R(x,y)。其中,寄存器緩存前一個閾值窗口所有像素點的亮度和R(x-1,y),閾值窗口前一列像素點的亮度和C(x-r-1)緩存在buffer(0)中。一般情況下,閾值窗口最新一列像素點的亮度和C(x+r)緩存在buffer(2r+1)中。當閾值窗口右半部分在圖像有效區外時,使用圖像最后一列像素點將空白部分補全,圖像最后一列像素點的亮度和C(w)緩存在buffer(2r+2)中。

(7)

其中:an=0或1;Mτ為近似值。

(5) 第5級流水線由加法器和比較器構成,根據(5)式比較g(x,y)+σ的和與閾值T(x,y)的數值大小,并輸出二值圖像。

3.3 圖像二值化加速引擎的具體實現

圖像二值化加速引擎的具體實現如圖5所示。

圖5 圖像二值化加速引擎的具體結構

內存控制模塊分為主控制器、行緩存選通單元以及地址選通單元。主控制器根據圖像緩存模塊輸入像素點和輸出像素點的時序關系,產生讀寫圖像緩存模塊的控制信號。行緩存選通單元由計數器構成,當像素點輸入時,根據(6)式產生該像素點對應行緩存的選通信號。地址選通單元也由計數器構成,計算輸入、輸出像素點在圖像中的橫坐標,并產生像素點對應子存儲單元的選通信號。

圖像運算模塊由圖4介紹的運算流水線和待處理像素點計數器構成。待處理像素點計數器計算待處理像素點對應的行緩存及其存儲地址,并從圖像緩存模塊中讀取待處理像素點的亮度值。

結合圖2與以上敘述,圖像二值化加速引擎的工作流程概括如下:① 處理器通過AHB slave啟動圖像二值化加速引擎并配置其工作參數;② 將輸入像素點存儲在對應的行緩存的子存儲單元中;③ 閾值窗口的整列像素點存儲完成后,立即將它們輸出;④ 圖像運算單元分步計算閾值窗口的閾值,并通過AHB master將二值圖像寫入到SRAM中;⑤ 當前圖像處理結束后,圖像二值化加速引擎配置AHB slave中表示圖像處理結束的寄存器,并等待下一幀圖像二值化處理。

4 實驗結果分析

4.1 FPGA原型驗證

本文使用Xilinx XC5VLX110T FPGA開發板驗證圖像二值化加速電路的正確性。電路經過優化、綜合后由FPGA的邏輯單元配置而成,FPGA測試平臺如圖6所示。

圖6 FPGA測試平臺

圖6中,控制單元一方面發出圖像二值化處理的工作參數和控制命令,另一方面控制存儲單元有序地讀寫。亮度圖像由外部導入開發板的存儲單元內,圖像二值化處理結束后,將處理結果存儲為文本文件,并使用Matlab查看處理效果。不同閾值窗口半徑r和閾值偏置參數σ的圖像二值化處理效果如圖7所示。

圖7 不同窗口半徑和閾值參數的處理效果

本文提出的架構(r=5、r=10)與文獻[12]圖像二值化處理架構FPGA實現的處理性能和資源消耗見表1所列,測試圖像的分辨率為280×265。

表1 不同架構處理性能和資源消耗對比

文獻[12]采用Ostu全局閾值算法,需要緩存整張圖像像素點的亮度值。由表1可知:① 文獻[12]的處理速度比本文架構約快11.5%,但本文架構(r=10時)消耗的內存(BRAMs)只有其47.7%,當圖像分辨率增大到640×480時,該比例將減至12%以下;② 由于流水線處理結構,窗口半徑r的大小對架構的性能幾乎沒有影響,但資源消耗隨著r的增大而增加。在150 MHz時鐘頻率下,每s能處理240張640×480分辨率的圖片。

4.2 系統測試

本文提出的圖像二值化處理加速架構經過寄存器傳輸級(register transfer level,RTL)描述、FPGA驗證、版圖驗證等步驟后,已被集成于某款QR碼識別芯片。芯片的制造工藝是SMIC 110 nm,面積為14.975 63 mm2,工作時鐘頻率的范圍為120~220 MHz,當時鐘頻率為150 MHz時,其功耗為55.744 mW。芯片的部分版圖如圖8所示,由于圖像二值化處理加速電路屬于數字集成電路,其分散在系統的版圖中。

圖8 芯片的部分版圖

芯片測試平臺和測試結果如圖9所示。由圖9a可知,QR碼識別芯片將攝像頭采集的圖像轉換成二值圖像,并通過處理器對二值圖像譯碼,解碼信息通過UART接口傳輸到管理設備。

當時鐘頻率為120 MHz時,由圖9b可知,采用圖像二值化加速電路的QR碼識別芯片每s能精確地識別6張QR碼圖像,具有較高的識別精度和實時性。加速電路有效地壓縮了圖像處理的時間,同時也達到了低功耗處理的目的。

圖9 芯片測試平臺和測試結果

5 結 論

針對低成本、高實時性等嵌入式系統需求,本文對圖像二值化處理的原理和特點進行了深入研究,并設計了一種圖像二值化處理的硬件加速電路。該加速電路采用循環行緩存讀寫算法減小圖像緩存、增大圖像讀寫速率,并通過流水線處理等方式提高處理性能。在完成FPGA驗證等步驟后,該加速電路已應用于某款QR碼識別芯片,并取得了良好的處理效果。

猜你喜歡
流水線像素點亮度
用于遙感影像亮度均衡的亮度補償方法
遠不止DCI色域,輕量級機身中更蘊含強悍的亮度表現 光峰(Appptronics)C800
基于局部相似性的特征匹配篩選算法
熨燙女工
奇思妙想
一種X射線圖像白點噪聲去除算法
本本亮度巧調節,工作護眼兩不誤
基于canvas的前端數據加密
圖像采集過程中基于膚色理論的采集框自動定位
流水線
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合