趙曉麗
(山東工藝美術(shù)學(xué)院,山東 濟(jì)南 250300)
在生產(chǎn)生活中,人們用到的很多產(chǎn)品都需要測(cè)量液體厚度的均勻性,本研究主要是為了采集圖像數(shù)據(jù),并選取恰當(dāng)?shù)能浖M(jìn)行數(shù)據(jù)處理分析。如在醫(yī)用手套的生產(chǎn)過程中,必須對(duì)手套澆筑后未冷卻的液體進(jìn)行實(shí)時(shí)厚度的檢測(cè),以保證澆筑后的產(chǎn)品質(zhì)量[1]。以往對(duì)這種醫(yī)用手套的質(zhì)量檢測(cè)大多采用澆筑后人工抽檢的方式進(jìn)行,效率低、漏檢率高、不合格率高。本研究提出一種檢測(cè)方法,應(yīng)用線性電荷耦合元件(Charge-Coupled Device,CCD)對(duì)透明液體厚度的均勻性進(jìn)行檢測(cè)。該方法可以間接檢測(cè)醫(yī)用手套的質(zhì)量,借助傳感器采集數(shù)據(jù),再進(jìn)行科學(xué)的數(shù)據(jù)分析,將分析結(jié)果傳入顯示屏,方便工作人員發(fā)現(xiàn)不合格品,達(dá)到高效率、高準(zhǔn)確性的測(cè)量目的。
具體方法是在透明液體厚度測(cè)量實(shí)驗(yàn)中,通過線性CCD采集透明液體折射后的光柵圖像,用Arduino編程采集數(shù)據(jù)并將數(shù)據(jù)包發(fā)送至上位機(jī)顯示,通過Matlab編程顯示圖像中需要的信息,可以通過顯示屏直接將不合格的數(shù)據(jù)傳送給工作人員,以便工作人員采取實(shí)時(shí)補(bǔ)救措施。
該透明液體厚度均勻性測(cè)量系統(tǒng)主要由光柵、線性光電傳感器模塊TLS1401CCD、Arduino UNO和計(jì)算機(jī)等部分組成,如圖1所示。通過光源補(bǔ)光燈對(duì)光柵打光,經(jīng)線性CCD采集后,通過二值化處理,形成黑白條紋。由于光柵的直線都是平行直線,經(jīng)過線性CCD采集的黑色條紋之間的距離也應(yīng)該是相同的。光柵經(jīng)透明液體折射后會(huì)形成另一組直線束。由于透明液體的厚度會(huì)直接影響折射后直線的位置,可以通過檢測(cè)折射后的直線束是否平行判斷液體的厚度是否均勻。實(shí)驗(yàn)是否可行可以先通過驗(yàn)證光柵直線束是否平行判定,經(jīng)實(shí)驗(yàn)驗(yàn)證,該思路可行。
圖1 實(shí)驗(yàn)系統(tǒng)
光柵有兩種:透射光柵和反射光柵,區(qū)別主要是光柵透射光的原理不同。光柵是由大量等寬等間距狹縫構(gòu)成的光學(xué)器件,常用的光柵是在玻璃板片上雕刻出大量平行刻痕制成的,兩平行刻痕之間可以透光[2],但是刻痕為不透光結(jié)構(gòu)。在精制的光柵上排列的刻痕很多,幾千條甚至上萬(wàn)條都能在1 cm寬度內(nèi)刻出來。光柵這種技術(shù)在傳統(tǒng)印刷的基礎(chǔ)上加入了數(shù)碼科技的優(yōu)點(diǎn),在為光柵特別制備的膠片上,通過一些關(guān)鍵操作,就可以在膠片上顯示各式各樣的特殊效果。
CCD傳感器的作用是將光與電互相轉(zhuǎn)換,是一種新型裝置;光產(chǎn)生信號(hào)電荷之后,可以通過CCD傳感器存儲(chǔ),功能非常強(qiáng)大;將特定時(shí)序的脈沖信號(hào)施加到CCD傳感器上,CCD傳感器存儲(chǔ)的信號(hào)電荷便可在內(nèi)部定向傳輸,進(jìn)而實(shí)現(xiàn)CCD傳感器自我掃描,主要由光敏單元、輸入結(jié)構(gòu)和輸出結(jié)構(gòu)等組成[3],具有光電轉(zhuǎn)換、信息存儲(chǔ)和延時(shí)等功能。CCD傳感器的高集成度、低功耗特點(diǎn)非常明顯,在攝像領(lǐng)域能發(fā)揮價(jià)值。另外,信號(hào)處理和存儲(chǔ)的功能、圖像傳感器的應(yīng)用也得到了越來越多人的關(guān)注[4]。CCD包括線陣和面陣,區(qū)別在于將CCD像素排成平面還是直線的元件。如果排成1個(gè)平面的元件,則稱為面陣;如果排成1個(gè)直線的元件,則稱為線陣。
Arduino是包含硬件和軟件的平臺(tái),可供研發(fā)人員選用其提供的程序,也可供研發(fā)人員自行修改代碼或自行封裝命令,是開源電子原型平臺(tái)。其開發(fā)環(huán)境是在Processing/Wiring的基礎(chǔ)上開發(fā),參照了Java、C語(yǔ)言。Arduino電路板的各種型號(hào)成為其硬件,硬件部分的作用是與電路相連。計(jì)算機(jī)中的程序開發(fā)環(huán)境(即Arduino IDE)就是該平臺(tái)的軟件。研發(fā)人員首先要在軟件Arduino IDE中,按照標(biāo)準(zhǔn)編寫程序代碼,Arduino電路板接收到編寫好的程序,即可作出下一步反應(yīng)。外部環(huán)境信息能通過傳感器上傳給Arduino,然后Arduino通過控制馬達(dá)、燈光等其他裝置,反饋、影響外部的環(huán)境。Arduino的特點(diǎn)主要有:(1)Arduino IDE可以適應(yīng)各種計(jì)算機(jī)系統(tǒng),具有跨平臺(tái)的特點(diǎn)。(2)Arduino語(yǔ)言的靈活度高。(3)Arduino是開源電子原型平臺(tái),在協(xié)議范圍內(nèi)能隨意改寫代碼。(4)作為一個(gè)優(yōu)秀的硬件開發(fā)平臺(tái),發(fā)展迅速。
Matlab在本質(zhì)上是一款數(shù)學(xué)軟件,也被稱為矩陣工廠(矩陣實(shí)驗(yàn)室)。在復(fù)雜繁多的數(shù)值分析計(jì)算面前,Matlab的優(yōu)勢(shì)逐漸顯露。集多功能于一體的Matlab軟件能將人們的科學(xué)實(shí)驗(yàn)進(jìn)行多次在線數(shù)據(jù)仿真,進(jìn)而分析數(shù)據(jù)的可信度及預(yù)測(cè)數(shù)據(jù)的走勢(shì),同時(shí)達(dá)到節(jié)約實(shí)驗(yàn)成本的目的。Matlab主要為數(shù)值分析、矩陣計(jì)算提供更快、更精準(zhǔn)的計(jì)算平臺(tái),使科學(xué)數(shù)據(jù)可視化、更直觀地展現(xiàn)在人們面前;非線性動(dòng)態(tài)系統(tǒng)的建模和仿真、交互式程序設(shè)計(jì)功能給科研人員提供了易操作的計(jì)算環(huán)境。Matlab為科學(xué)研究、工程設(shè)計(jì)等需要進(jìn)行大量數(shù)值計(jì)算的科學(xué)領(lǐng)域提供了完美的解決方案。Matlab與傳統(tǒng)非交互式程序設(shè)計(jì)語(yǔ)言的編輯模式不同,優(yōu)點(diǎn)主要表現(xiàn)在:(1)數(shù)值計(jì)算效率高、準(zhǔn)確度高,減輕了研發(fā)人員的工作負(fù)擔(dān)。(2)圖形處理功能強(qiáng)大,可實(shí)現(xiàn)計(jì)算機(jī)編程過程及結(jié)果的可視化,降低了用戶學(xué)習(xí)難度,輸出更加形象。(3)自然化語(yǔ)言接近數(shù)學(xué)表達(dá)式,用戶界面簡(jiǎn)單易學(xué),對(duì)新手而言容易接受。(4)應(yīng)用工具箱功能強(qiáng)大,工具可滿足用戶進(jìn)行各種仿真的需求。
該方法對(duì)透明液體厚度均勻性的測(cè)量主要通過CCD傳感器進(jìn)行數(shù)據(jù)的采集,再通過編程的方式將采集的圖片數(shù)據(jù)利用Matlab軟件進(jìn)行數(shù)據(jù)分析,從分析結(jié)果中即可了解透明液體厚度的均勻性。
圖像數(shù)據(jù)采集工作首先應(yīng)用Arduino板編程,將程序調(diào)試好后,搭建實(shí)驗(yàn)臺(tái),通過手動(dòng)對(duì)CCD調(diào)焦,在上位機(jī)獲得清晰的黑邊條紋后,即可得到相應(yīng)的數(shù)據(jù)圖片,開始實(shí)驗(yàn)。
通過選用合適的LED補(bǔ)光燈對(duì)CCD補(bǔ)光,能夠有效減少頻閃的現(xiàn)象。將搭建好的試驗(yàn)臺(tái)調(diào)試之后,將下位機(jī)Arduino的程序錄入即可開始對(duì)數(shù)據(jù)進(jìn)行采集[5]。利用上位機(jī)顯示的圖像選擇合適的二值化閾值,如圖2所示,對(duì)光柵進(jìn)行驗(yàn)證。實(shí)驗(yàn)證明,平行直線經(jīng)CCD處理后,二值化的黑色條紋之間的距離也相等,即直線束相互平行。
圖2 CCD在無透明液體時(shí)的圖像顯示
在光柵上涂需要測(cè)試的透明液體,本實(shí)驗(yàn)選擇膠水演示透明液體。一方面,膠水有一定的表面張力,不會(huì)像水一樣到處流動(dòng),影響實(shí)驗(yàn)的準(zhǔn)確性;另一方面,膠水有較強(qiáng)的透光能力,能夠?qū)崿F(xiàn)所需要的功能,而且沒有腐蝕性,不會(huì)對(duì)光柵有影響,進(jìn)而影響實(shí)驗(yàn)的結(jié)論。對(duì)不同部位的透明液體厚度進(jìn)行CCD測(cè)量,通過觀察二值化圖(圖3),初步了解透明液體厚度不均勻的位置[6]。如圖3所示,選取3個(gè)不同的位置,分別為光標(biāo)在0.206、0.260、5.000處,設(shè)置好二值化的閾值,即可得到3個(gè)位置的波形圖、灰度圖和二值化圖。從波形圖、灰度圖和二值化圖中可知這3個(gè)位置上的液體均勻度情況。
圖3 不同部位透明液體CCD圖像
按以上步驟得到圖像數(shù)據(jù)之后,將數(shù)據(jù)包保存,導(dǎo)入Matlab軟件,進(jìn)行分析處理,分析黑色條紋之間的距離;編寫程序識(shí)別條紋間的距離,用Matlab軟件計(jì)算出經(jīng)透明液體折射后的直線束間的距離,根據(jù)Matlab軟件的可視化結(jié)果輸出判斷異常部位,計(jì)算出液體的均勻性[7]。
將數(shù)據(jù)導(dǎo)入Matlab軟件中,將數(shù)據(jù)包轉(zhuǎn)換成圖像顯示在圖表中,如圖4所示。根據(jù)處理后的圖像可知,數(shù)據(jù)的兩邊存在異常。
圖4 數(shù)據(jù)包經(jīng)Matlab處理后的圖像
將數(shù)據(jù)包進(jìn)一步處理,用柱狀圖顯示有液體時(shí)和無液體時(shí)直線間的距離,從中能夠直觀地看出異常點(diǎn)的位置和距離,如圖5所示。從圖片處理結(jié)果可知,第1、第2、第4、第11、第12光柵是存在異常點(diǎn)的位置,其中,第4光柵有液體和無液體時(shí)差距較大。
圖5 有液體和無液體時(shí)的距離對(duì)比
經(jīng)分析可知,CCD采集的是13根直線組成的直線束,由于光柵受溫度和其他因素的影響,發(fā)生了一定量的翹邊,兩邊的數(shù)據(jù)會(huì)有一定的異常,將邊緣的數(shù)據(jù)舍棄,繼續(xù)用Matlab進(jìn)行定量分析。
用Matlab進(jìn)一步定位異常距離的像素點(diǎn)坐標(biāo),計(jì)算出透明液體的均勻度。部分編程顯示如圖6所示。經(jīng)過Matlab軟件分析可知,第32和36像素之間不均勻,第36和40像素之間不均勻,第80和84像素之間不均勻,第84和88像素之間不均勻。通過數(shù)據(jù)分析,最后的結(jié)果是被測(cè)液體的厚度均勻性為69.230 8%。
圖6 編程計(jì)算透明液體厚度均勻性
利用線性CCD對(duì)透明液體進(jìn)行厚度均勻性的測(cè)量,通過編程分析數(shù)據(jù),從而提取出圖像中所需要的透明液體厚度信息,檢測(cè)醫(yī)用手套上的液體厚度是否符合標(biāo)準(zhǔn)。該方法完全滿足實(shí)驗(yàn)的要求,能實(shí)現(xiàn)高效率、高準(zhǔn)確的檢測(cè)目的。實(shí)驗(yàn)證明,該系統(tǒng)可以有效檢測(cè)透明液體厚度的均勻性,具有很好的環(huán)境適應(yīng)性和廣闊的應(yīng)用前景。