劉榮鵬,金 杰,蘇寒松
(天津大學電子信息工程學院,天津 300072)
目前,國外的巴布劑技術已經比較成熟,國內的巴布劑技術起步較晚,生產體系還不夠先進。國內巴布劑成品質量檢測大多通過感官評價,對其質量的評估分析帶有一定的主觀性,很難用統一的規格化標準去判定[1]。本設計以Altera 公司的DE2 板為開發平臺,采用數字圖像采集及處理將問題轉化為數字信號處理問題,由于質量有缺陷的巴布劑其圖像特征表現為有瑕點,導致每個位置的像素RGB信號數據有明顯差異,提取其中的B 信號作為在線檢測的判定對象,根據一定的數學方法識別圖像特征,判定巴布劑涂布質量合格與否,并將結果反饋給系統主控制部分,對相關的設備進行相應的調整,實現對巴布劑涂布質量的在線檢測。
本設計系統采用Altera 公司的FPGA 芯片作為整個系統的核心芯片,外圍設備主要包括CCD 攝像頭、ADV7181B 圖像編解碼器、SDRAM 存儲器、LED指示燈、反饋電路等,其結構圖如圖1所示。

圖1 系統結構圖
設計前端采用CCD 攝像頭對巴布涂劑進行掃描后得到圖像,該圖像為模擬視頻信號,然后輸入至ADV7181B 中進行模數轉化、編解碼,輸出數字圖像信號。由于數字信號的數據量較大,須外置一個SDRAM存儲器作為緩存,待整幀圖像的數據緩存完畢后再對其進行提取、處理及判斷識別,將判定結果在LED 指示燈顯示,方便直觀的觀察,并且將此判定結果通過連接電路傳給PLC 控制端,驅動生產線上相應的馬達做出步進式調整,從而實現對巴布劑質量的在線檢測。
本設計系統采用的是Sony HAD CCD 攝像頭,分辨率為640×480,輸入電壓為12 V。由攝像頭輸出的模擬視頻信號包括圖像信息、行消隱與場消隱信號、行同步與場同步等。
ADV7181B 是一款高性能集成視頻解碼器,支持多種格式模擬視頻信號的輸入,它接收來自CCD攝像頭的模擬視頻信號,并將其轉化輸出為與CCIR656 標準 相兼容的YCrCb 4∶2 2數字視頻信號。ADV7181B 可以并行輸出16 bit或8 bit 數據信息,同時包括場同步信號VS、行同步信號HS、場識別信號、中斷請求信號等。
ADV7181B 內部共有240個控制寄存器,寄存器的值不同所實現的功能便不同,可以根據自己的需要配置這些寄存器。本設計用QuartusⅡ9.0 編寫ADV7181B 的配置程序,并通過I2C 總線將配置數據傳輸到ADV7181B[2]。在QuartusⅡ9.0 中建立寄存器配置模塊,將寄存器地址及數據信息通過數據總線(SDA)和時鐘總線(SCL)寫入到ADV7181B,就可以接收來自CCD 的模擬視頻信號,并以27MHz的頻率進行模數轉換,輸出為16 bit 的YUV 數字視頻信號。
SDRAM 是多Bank 結構,Bank 之間并行工作,比如其中一個Bank 在進行預充電期間,另一個Bank 是可以被讀取的,當一次讀取后結束后,再去讀取已經預充電結束的Bank 中的數據。這種多Bank 結構的優點是:不用等待,可以連續讀取每個Bank 中的數據,很大程度上提高了SDRAM 的訪問速度。SDRAM 上電后要對其進行初始化,主要過程為:上電等待、預充電、空操作、自刷新等,而后才能進行其他操作。SDRAM 內部操作是一個復雜的狀態機[3-4],如圖2所示,在各個狀態之間切換時,列地址選擇、行地址選擇和讀寫選擇信號會產生相應的變化,在QuartusⅡ9.0 中用狀態機控制SDRAM,使其在各個狀態改變RAS、CAS、WE 的值,從而控制SDRAM 的刷新、空操作、數據讀取:

圖2 SDRAM 內部狀態轉移圖當SDRAM

SDRAM 的引腳主要分為以下幾類:
(1)控制信號:片選(CS)、同步時鐘(CLK)、時鐘有效(CLKEN)、讀寫選擇(WE)、數據有效(DQM)等;
(2)地址選擇信號:行地址選擇(RAS)、列地址選擇(CAS)、行/列地址線(SA)、Bank 塊地址線(BA);
(3)數據信號:包括雙向數據端口(DQ)、接收數據有效信號(DQM)控制等。DQM為低時,寫入/讀出有效。
本設計中采用的SDRAM 容量為8 Mbyte,結構為:1 M×16 Bit×4 Banks。與SDRAM 相連的信號除了時鐘信號CLK 以外都來自FPGA。FPGA 與SDRAM 信號的接口設置如圖3所示。

圖3 SDRAM 信號的接口設置
2.4.1 在線檢測原理
在線檢測主要是對巴布涂劑的圖像是否有黑色斑點(藥物攪拌不均勻)或白色斑點(上藥過程中出現氣泡)等作出識別。
在線拍攝的巴布涂劑的部分圖像如圖4所示。

圖4
根據圖4 中正常的巴布劑與瑕疵點處像素RGB值的差異來判別巴布劑的質量。截取部分圖像,用Matlab 對其進行分析處理,得到圖像每像素點的R、G、B值,每個值都存放為一個二維矩陣,對應圖像相應位置的像素點。觀察得到的數據并與圖像對比,得出B 信號在圖像變化時數據跳躍最大,有更明顯的變化,所以選用B值作為判定信號,使其更易判別。
此設計選用攝像頭的分辨率為640×480,實際拍攝的巴布劑大小為420 mm×300 mm,單位像素點大小為0.656 mm×0.635 mm。當斑點小于單位像素點時,B值會因斑點大小與單位像素點的比例而不同,比例越高越偏離正常B值的范圍,越接近不合格范圍。經多次Matlab 數據分析并提取數據,巴布劑圖像B 信號B0為80~130(B 信號為8 bit)可判定為正常范圍,B1 大于190 可判定為白斑,B2 小于60 可判定為黑斑。圖5為Matlab 得出的正常和黑斑處像素點的B值。

圖5 Matlab 得出的正常和黑斑處像素點的B值
系統工作時,每當時鐘CLK 上升沿到來,FPGA逐像素點從SDRAM 中提取圖像信息[6],并轉為RGB 格式。同時,使得到的B 信號與平均信號B0做對比,若其值大于平均值B0 一定范圍(平均值B0的浮動)則計數器cont 累加1,否則計數器不變。同理用cont2 統計B 信號值小于平均值B0 的像素點個數。在QuartusⅡ9.0 中用Veilog 語言實現:

一幅圖像結束后,將統計結果與像素點總數對比求概率,若其在誤差允許范圍之內則判定巴布劑質量合格,否則判定其為不合格。并將此結果通過高低電平的形式傳到PLC,驅動系統馬達做出相應調整。
2.4.2 圖像預處理
在CCD 攝錄端得到的圖像中存在周圍的設備的圖像,在做圖像檢測的時候需要濾除巴布劑之外的圖像[5.6]。對此本設計對原來的行同步HS和場同步VS 與實際進行比對并計算,得到HS1、VS1,將周圍的景象切除。原圖像一行有800個像素點,其中有效像素點為640,行消隱部分為160,而圖像需要檢測的部分其實是有效像素點中間的500 像素點。在程序中設一個計數器,消隱結束后繼續累積70個時鐘上升沿,此時HS1 置高,這部分便是數據判定的有效部分,如圖6所示HS 在切邊前后的變化。同樣方法,得到場同步VS1,對圖像進行切邊后才是實際數據檢測的部分。

圖6 圖像切邊前后的HS 變化
本設計系統提出了一種在線檢測巴布劑質量的方法,從巴布劑的數字圖像特征入手,將原來的問題轉化為圖像處理問題。在線檢測時,正常巴布劑的B值范圍可根據不同的標準自行修改設定,使判定結果與觀察判定結果接近一致。
[1]龐武耀,李明亞,謝清春.巴布劑的研究現狀[J].亞太傳統醫藥,2008,4(12):133,135.
[2]袁海林.ADV7181 的I2C 配置接口的SOPC 實現[J].湖北民族學院學報(自然科學版),2007,25(3):319-320.
[3]吳皓,劉鵬,蔡鐘,王維東.視頻采集系統SDRAM 控制器的FPGA 實現[J].中國有線電視,2003(22):58-60.
[4]段曉晨,何小剛,程永強.實時視頻SDRAM 控制器的FPGA 設計與實現[J].太原理工大學學報,2006,5(37):6.
[5]朱奕丹,方怡冰.基于FPGA 的圖像采集與VGA 顯示系統[J].計算機應用,2011,31(5):1260.
[6]郭祥東.基于FPGA 的視頻圖像采集系統的設計[J].九江學院學報,2009(6):16-19.