鄒平吉
(蘭州職業(yè)技術(shù)學(xué)院 甘肅 蘭州 730070)
視覺是一種對外部環(huán)境的感知的高等智能行為。視覺圖像中含有豐富的信息,在人類看來,視覺信息是最有效。機器視覺是從工業(yè)化進(jìn)程中產(chǎn)生的,在工業(yè)生產(chǎn)中的每個環(huán)節(jié)中都可以應(yīng)用到機械視覺,從而使整個系統(tǒng)更加的智能化、自動化。機器視覺的主要手段是利用電腦來模仿或重現(xiàn)人的視覺,可以從圖像中抽取有用信息,并對其進(jìn)行加工、理解,將其輸出到探測或控制信號,因此機器視覺被廣泛應(yīng)用于諸多領(lǐng)域。機器視覺能夠從圖像中提取出對用戶有意義的信息,并對其進(jìn)行控制。嵌入式系統(tǒng)以應(yīng)用為核心,基于計算機技術(shù),軟件和硬件都可以進(jìn)行裁剪,滿足功能、可靠性和成本要求,體積和功耗有嚴(yán)格要求。嵌入式機器視覺系統(tǒng)是一種利用嵌入式計算機對圖像進(jìn)行處理,從而達(dá)到對目標(biāo)進(jìn)行探測和識別的一種設(shè)備,如數(shù)碼相機、手持二維碼識別設(shè)備、人體感應(yīng)游戲等。隨著計算機視覺技術(shù)的快速發(fā)展,在工業(yè)檢測、智能交通、安防等領(lǐng)域得到廣泛應(yīng)用。因此,本文提出了一種方便攜帶、價格低廉的嵌入式機器視覺信息采集系統(tǒng),利用嵌入式機器視覺技術(shù)采集與處理信息,具有廣闊的應(yīng)用前景。
本文研制的以ARM9 為核心的嵌入式計算機視覺系統(tǒng)的硬件架構(gòu),具體如圖1所示,包含了移動電話開發(fā)模塊、電池模塊、顯示模塊、數(shù)據(jù)存儲模塊、攝像頭、角度控制模塊、距離控制模塊。其中,電池、顯示、數(shù)據(jù)存儲、攝像頭等部分均是手機自帶部分,它能夠完成數(shù)據(jù)的采集和數(shù)據(jù)的處理,電池為系統(tǒng)提供3 V 的電壓。角度控制模塊和手機開發(fā)模塊采用RS232 接口,以實現(xiàn)可視化平面與被攝體平面的夾角控制;同時,通過I2C 接口與手機開發(fā)模塊相結(jié)合,可以實時地將目標(biāo)距離信息反饋到手機開發(fā)模塊,以達(dá)到遠(yuǎn)程控制的目的。
圖1 硬件系統(tǒng)框架圖
本系統(tǒng)的主要控制部件為手機開發(fā)模塊,主要使用華為C2440,400 MHz 的ARM920T 核心,內(nèi)存133 MHz mSDRAM,支持4 GB TF 卡、GPRS、通話、短信、彩信等多種功能;同時內(nèi)置WiFi 和130 萬像素、焦距固定的CMOS攝像頭;電流大概60 mA,模塊中直接包含電池。模塊運行環(huán)境是經(jīng)過修飾的Linux2.6.20 系統(tǒng),并且經(jīng)過JVM 移植,可以通過開發(fā)人員的硬件界面控件來讀取和寫入擴展硬件??紤]到以上的功能,這個模型很適合作為本文的主要控制部分。
本文利用新工機械工業(yè)有限公司KS103 超聲波測距模塊,通過對測距的實時補償,對溫度進(jìn)行快速、高精度的檢測,響應(yīng)時間為83 ms,對周圍環(huán)境的準(zhǔn)確感應(yīng);具有高精度的檢測精度,在1~1 000 cm 之間,檢測頻率為500 Hz;LMS 快速光強檢測,能根據(jù)I2C 指令自動響應(yīng),3.0~5.5 V 的工作電壓范圍內(nèi),工作電流1.6~2.7 mA@5 V。根據(jù)以上特性,本文所設(shè)計的超聲模組能夠滿足所提出的測距要求。由于本模塊工作電壓為5 V,而手機開發(fā)模塊的擴展端口為2.8 V,所以在使用手機模塊與距離測試模塊進(jìn)行通信時,必須要有一個附加電路來實現(xiàn)電平變換。圖2該為模塊的控制流程。
圖2 超聲波距離測量模塊操作流程
從0×01 到0×2 f 的探測指令,隨著數(shù)據(jù)增加,信號的增益也會隨之增大;在檢測光強情況下,隨著光線強度的增加,其測量時間大約為1 ms;按照DS18B20 格式,在-40~+125 ℃之間探測時間大約為610 ms。當(dāng)探測命令發(fā)出后,該模塊會根據(jù)探測命令進(jìn)行相應(yīng)檢測,而主機則需要一段時間才能通過I2C 進(jìn)行查詢。
從以上分析可以看出,無論是超聲測距模組還是傾角測量模塊,均需直流5 V 電源,而本研究的主控模組為2.8 V,故必須將2.8 V 的電壓提升至5 V,以供雙測模組及傾角測量模塊使用。升壓DCDC 轉(zhuǎn)換器為PT1301,其起動電壓可以小于1 V,能夠滿足單節(jié)的干電池使用,具有自適應(yīng)的電流型PWM 控制回路,內(nèi)置有誤差放大器、斜波發(fā)生器和比較器。本系統(tǒng)采用電源轉(zhuǎn)換器及驅(qū)動裝置,可在大負(fù)荷電流下工作,無外接補償電路。其優(yōu)異的性能使其在MP3、PDA、電子詞典等領(lǐng)域得到了廣泛的應(yīng)用。電源升壓和電平轉(zhuǎn)換原理圖如圖3所示。
圖3 電源升壓和電平轉(zhuǎn)換原理圖
在模型中,超聲波探測模塊平面與照相機平面間有1.6 mm 厚度的玻璃纖維板,在軟件設(shè)計時必須考慮到這一點;在同一電路板上設(shè)置傾斜傳感器和增壓回路,該電路板與1.6 mm 厚的玻璃纖維板緊密相連,在與水平面平行的情況下,X 軸的傾角和Y 軸的傾角分別為0°和90°;電平變換部件安裝在厚度為1.6 mm 的玻璃纖維板上;通過插針完成電源、傾斜模塊、距離測量模機開發(fā)模塊的連接和固定。在圖像獲取過程中,實時顯示被測量對象平面和嵌入式機器視覺系統(tǒng)平面的距離,以及X 軸和 Y 軸的角度獲取的圖像信息。
Linux 系統(tǒng)由上而下,可以劃分為應(yīng)用、庫、操作系統(tǒng)、內(nèi)核以及驅(qū)動程序。就讀串行數(shù)據(jù)來說,圖4顯示了軟件層次之間的合作關(guān)系。在程序執(zhí)行期間:
圖4 軟件系統(tǒng)的層次關(guān)系示意圖
(1)應(yīng)用程序利用程式庫所提供的開啟功能開啟設(shè)備文件;
(2)庫執(zhí)行“swi”指令,以輸入到open功能中的參數(shù),導(dǎo)致 CPU 出現(xiàn)異常并進(jìn)入內(nèi)核;
(3)當(dāng)應(yīng)用程序獲得文件句柄后,會利用庫所提供的文字或ioctl 功能來執(zhí)行控制指令;
(4)庫運行“swi”指令,以響應(yīng)write 或ioctl 功能輸入的參數(shù),并運行到內(nèi)核;
(5)庫執(zhí)行“swi”指令,按照讀取功能輸入的參數(shù),并運行到內(nèi)核;
(6)內(nèi)核的異常處理功能調(diào)用驅(qū)動的相關(guān)函數(shù),向?qū)?yīng)的串口裝置文件發(fā)出讀取指令,然后返回一個文件句柄,再將其傳回到應(yīng)用程序。
手機開發(fā)模塊采用了ARM920 嵌入式 CPU 的底層是Linux 2.6.20,因為傾斜和測距都是通過擴展槽來實現(xiàn),也就是說,不是手機設(shè)備自帶;為了將這兩個模塊應(yīng)用到移動設(shè)備開發(fā)模塊中,必須將其驅(qū)動程序添加到 Linux 2.6.20 的手機應(yīng)用程序中。Linux 的外部設(shè)備主要有三種:字符設(shè)備、塊設(shè)備、網(wǎng)絡(luò)界面。字符裝置是一種可以象字節(jié)流那樣存取的裝置,也就是說,它的讀取和寫入都是以字節(jié)為單位,本文所討論的串口在傳輸和接收數(shù)據(jù)時都是按字節(jié)來完成,屬于字符裝置。在文字裝置的驅(qū)動程式中,可以執(zhí)行開啟、關(guān)閉、讀取,例如 write、open、read 等,應(yīng)用程序可以通過設(shè)備文件存取字符設(shè)備。
本文利用SQLite 免費開放源代碼,實現(xiàn)對嵌入式機器視覺系統(tǒng)的數(shù)據(jù)存儲與管理。SQLite 是一個具有關(guān)聯(lián)數(shù)據(jù)庫管理系統(tǒng),遵循ACID 關(guān)聯(lián)式。ACID 關(guān)聯(lián)式是四種基本元素的簡稱,它能正確地完成數(shù)據(jù)庫事務(wù),具有原子性、一致性、隔離性以及持久特點,使數(shù)據(jù)庫系統(tǒng)能夠正確地處理數(shù)據(jù)。SQLite 可以在 Windows/Linux/Unix 等多種操作系統(tǒng)中運行,并且可以與 PHP、Python、Java 等不同的編程語言進(jìn)行集成,支持SQL92,并且只需要250 KB 左右的內(nèi)存;SQLite 與兩個知名的開放源碼數(shù)據(jù)庫Mysq1、PostgreSQL 相比,消耗的資源更少,處理起來也更迅速。
隨著科學(xué)技術(shù)的進(jìn)步,硬件設(shè)備的互聯(lián),遠(yuǎn)程管理模塊的實現(xiàn),Java 的跨平臺應(yīng)用,可以將大型應(yīng)用軟件的各個功能模塊單獨地在不同的工作站上進(jìn)行集成并進(jìn)行測試。這個優(yōu)勢使得軟件工程師可以在硬件模型尚未成型之前,對各個功能模塊進(jìn)行設(shè)計,在硬件樣機完成后,由技術(shù)人員將各個功能模塊與共用的硬件設(shè)備相連接,進(jìn)行調(diào)試和運行。
本文提出了一種基于圖像分割方法,該方法不僅能夠?qū)?shù)據(jù)進(jìn)行大規(guī)模的壓縮,而且還具有較強的計算能力。該方法不僅可以減少存儲量,還可以簡化后期的數(shù)據(jù)分析、數(shù)據(jù)處理,為后續(xù)的分類、識別和檢索提供依據(jù)。從圖像分割技術(shù)出現(xiàn)至今,盡管在算法上有了較大的改進(jìn)和創(chuàng)新,但是依然是圖像處理中最困難的問題。圖像閾值分割是通過對目標(biāo)和背景在顏色、幾何形狀和空間紋理等方面的差別進(jìn)行分類,然后將其劃分為不同的區(qū)域,從而判斷出圖像中的每個象素點是否屬于對象或背景。該方法將目標(biāo)與背景圖像進(jìn)行分離,并在必要時,生成對應(yīng)的二值化圖像,并對其進(jìn)行分析。簡單來說,就是將被檢測的對象從背景中分離,從而為以后的圖像處理提供方便。
由于圖像分割后,會出現(xiàn)許多小的區(qū)域,或邊緣不完全封閉,所以要通過特殊的后處理算法來對其進(jìn)行改進(jìn)。此外,分割是一種基于圖像的底層處理技術(shù),由于是一種中介過程,所以必須輸出到更高層次的圖象處理系統(tǒng),以實現(xiàn)具體的應(yīng)用。在輸出前,要先標(biāo)注出被劃分的區(qū)域,然后利用特殊的方法來表示和描述。在一些系統(tǒng)中,還需要對特定的區(qū)域進(jìn)行操作和抽取,而這就要求后處理技術(shù)來實現(xiàn)。最后,將圖像的分割和描述保存下來,并將其保存到局部或遠(yuǎn)端的內(nèi)存中。在此,預(yù)處理、核心算法和后處理之間,必須對后處理和核心算法進(jìn)行定義。在預(yù)處理和后處理中,我們可以修改任何功能模塊,但必須確保界面不變。在圖論分割算法的基礎(chǔ)上,本文提出了一種以圖形表示的方法,并將所得到的數(shù)據(jù)用區(qū)域信息表示出來,從而確保了界面的簡潔和穩(wěn)定。結(jié)構(gòu)用圖描述如圖5所示。
圖5 圖像分割系統(tǒng)的結(jié)構(gòu)示意圖
本文將嵌入式機器視覺的特點、研究對象的特性以及實驗中的圖像采集技術(shù),采用人工觸點筆來確定色彩特征參數(shù),再通過適當(dāng)?shù)牟僮鳎≧-G)、(2R-G-B)、R/G/B 等作為特征量進(jìn)行圖像的代數(shù),將3D 數(shù)據(jù)轉(zhuǎn)換成一維數(shù)據(jù),從而提高了系統(tǒng)的運行速度。通過對圖像分割,可以實現(xiàn)從RGB 向HIS 的過渡。因此,本文選擇了常用的RGB 模式作為色彩特征參數(shù)的選擇。
嵌入式系統(tǒng)得到了飛速的發(fā)展,隨著技術(shù)不斷革新,嵌入式技術(shù)也得到了極大的發(fā)展。本文利用嵌入式機器視覺技術(shù)和圖像處理技術(shù),解決了目前嵌入式機器視覺系統(tǒng)中的數(shù)據(jù)收集和處理問題,著重從平臺搭建、圖像處理算法、平臺應(yīng)用等幾個方面進(jìn)行了深入探討。主要闡述了基于ARM9 的嵌入式計算機視覺系統(tǒng)的硬件結(jié)構(gòu),并在此基礎(chǔ)上建立了Linux 應(yīng)用程序開發(fā)平臺,實現(xiàn)了軟硬件的集成化。提高了機器視覺監(jiān)測設(shè)備的靈活性、實用性和推廣性。