摘 要:在涉及數字圖像的嵌入式開發中,圖像數據往往無法可視化,造成調試繁瑣,故需要尋找一種高效的開發方案。下位機利用單片機的串口通信接口傳輸數據,上位機利用微軟提供的MSComm控件通過VC開發一種上位機圖像處理軟件,通過PC來顯示和處理數字圖片,簡化開發過程。PC強大的運算功能和可視化界面能取得良好的仿真效果。
關鍵詞:串行通信;S12單片機;圖像處理;模擬攝像頭
中圖分類號:TP319文獻標識碼:B
文章編號:1004-373X(2010)04-102-02
HCS12 MCU-based Graphics Design
ZHENG Simin
(School of Power and Mechanical Engineering,Wuhan University,Wuhan,430072,China)
Abstract:The digital image data often can not be visualized in the embedded development,causing debugging difficult,so an efficient development methodology is needed.Using the single-chip serial communications interface to transmit data,using VC to develop a PC image processing software with MSComm.Through the PC to display and process digital images,simplifying the development process PC′s powerful computing and visualization can achieve good results.
Keywords:serial communication;S12 single chip microcomputer;image processing;analog camera
圖片對于人的視覺系統來說是一種形象的信息載體。而數字圖片特別是嵌入式系統中的數字圖片,在未經過處理時的原始狀態就是一個二維數組,不具備形象直觀性,不易分析和處理。關于抽象數字信息轉換成形象圖片信息的處理方法,目前可參考資料太少,本文就從嵌入式系統數字信息產生到形象化的具體過程的討論出發,來闡述這一方法。
1 硬件設計
硬件設計采用模擬攝像頭獲取道路信息,利用單片機的A/D接口將模擬視頻信號轉換為數字信號輸入到單片機。模擬攝像頭按一定的分辨率,以隔行掃描的方式采集圖像上的點,當掃描到某點時,就通過圖像傳感芯片將該點處圖像灰度轉換成與灰度值相對應的電壓值,由視頻信號輸出端輸出至MC9S12DG128單片機。利用單片機A/D模塊對攝像頭模擬信號采樣進行模/數轉換,利用SCI全雙工異步串行通信接口,實現單片機與PC的通信,將攝像頭采集的圖像數據發送給上位機處理[1]。
2 軟件設計
圖像數據需要經下位機采集處理后發送到上位機處理顯示,因此軟件設計主要包括下位機軟件設計和上位機軟件設計。下位機完成模擬視頻信號到數字信號的轉換和數據的傳送,上位機負責圖像濾波和圖像可視化顯示。
2.1 下位機軟件設計
2.1.1 圖像采集
由于模擬攝像頭采集的圖像信號為模擬信號,不能直接被計算機處理,必須經過單片機A/D模塊轉換為數字信號。定義一個二維數組存儲轉換后的圖像數據,二維數組每行的各點代表圖像每行上點的灰度值[2,3]。圖像采集流程圖如圖1所示。
圖1 圖像提取流程圖
2.1.2 串行通信
S12系列單片機中的SCI串行通信接口是一種全雙工異步串行通信接口,用于微控制器與其他計算機、調制解調器等設備之間的通信[4]。
在進行串口通信時,首先需約定雙方的傳輸協議,這樣才能保證數據傳輸的準確性和安全性。主要分為波特率和傳輸格式兩個部分,可分別設置SCI0BD和SCI0CR寄存器,同時PC機串口必須設置相同的協議。
經S12單片機SCI發送和接收的數據放在數據寄存器SCIDRH和SCIDRL中,對SCIDRL進行讀/寫就實現了數據的接收和發送。接收和發送數據取決于SCI0CR2寄存器RE,TE位的設置,當TE位為1時,發送;當RE位為1時,接收。SCI寄存器設置如下[5]:
SCI0BD=BD_9600;//設置波特率9 600 b/s
SCI0CR1=0x00; //8 b數據位,無校驗
SCI0CR2_RE=1; //接收使能
SCI0CR2_TE=1; //發送使能
SCI0CR2_RIE=1;//接收中斷
2.2 上位機軟件設計
2.2.1 串口操作
上位機軟件用Visual C++編寫,其可視化界面給調試帶來極大的便利,調試員僅靠操作鼠標即可完成圖像的處理,無需看程序代碼。
上位機處理的數據來自于PC機串口,需要用軟件來操控串口。一般需要調用應用程序接口(API)函數,但MICROSOFT自帶MSComm 控件,在VC中可以使用,大大簡化了串口編程[6]。MSComm是Microsoft公司提供的簡化Windows下串行通信編程的ActiveX控件,它為應用程序提供了通過串行接口收發數據的簡便方法。使程序員不用過多了解硬件的工作原理,只通過對這些接口進行讀/寫就能實現協議設置,數據交換。
2.2.2 上位機圖像可視化
下位機采集的圖像信息以數碼形式存在,沒有直觀性,故利用軟件技術將其可視化。由于可視化數據是二維數組,數組的每一個元素值表征圖像的每一個像素點灰度值,而數組的下標則表征該像素點在圖像矩陣中的位置。鑒于以上特點,選用Windows提供的GDI繪制矩形函數Rectangle(),利用數組下標調整這些矩形坐標值,將像素累積成一幀完整的圖像,再利用數組元素值對矩形的填充色進行設置,最終將抽象的數組還原成一幀灰度圖,可清晰觀察攝像頭拍攝到的道路情況[7]。
2.2.3 上位機數字圖像濾波仿真
受跑道清潔程度、外部光線明暗程度、攝像頭視野范圍、硬件干擾等因素的影響,采集到的圖像總帶有一些失真或者噪聲,如果不加處理會對后續工作,如:特征提取、圖像分析識別產生較壞影響,故有必要對初始數據進行濾波處理。
常用圖像濾波方法有維納濾波、卡爾曼濾波、中值濾波、限幅濾波等。任何一種濾波思想最終歸結到程序中就是對數據進行運算和變換,限于篇幅,所以本文僅以采用的限幅濾波來展示濾波效果[8]。
在上位機上濾波算法仿真[9,10]前后效果對比如圖2所示。
圖2 濾波前后效果圖
3 結 語
介紹在Windows環境下使用VC++6.0中的MSComm控件,實現單片機與PC機串行通信的編程,從而進一步實現圖像處理,利用PC機強大的數字處理能力和圖像可視化彌補單片機資源的不足。此外這里所述方法的步驟還具有一般意義,對于開發PC機在嵌入式系統中的應用具有參考價值。
參考文獻
[1]王宜懷,劉曉升.嵌入式系統使用HCS12微控制器的設計與應用[M].北京:北京航空航天大學出版社,2008.
[2]王威.HCS12微控制器原理及應用[M].北京:北京航空航天大學出版社,2007.
[3]梅麗鳳,王艷秋.單片機原理及接口技術[M].北京:清華大學出版社,2004.
[4]孫同景.十六位單片機原理及嵌入式開發技術[M].北京:機械工業出版社,2007.
[5]Freescale Inc..MC9S12DT128B Device User Guide[Z].V01.09.2002.
[6]李現勇.Visual C++串口通信技術與工程實踐[M].北京:人民郵電出版社,2002.
[7]何斌.Visual C++數字圖像處理[M].北京:人民郵電出版社,2001.
[8]肖南峰.智能機器人[M].廣州:華南理工大學出版社,2008.
[9]孫旭生,徐耀良,李渝曾,等.基于 CMOS圖像傳感器的高速印刷機數字圖像監測系統[J].上海大學學報:自然科學版,2006(2):166-169.
[10]卓晴,王琎,王磊.基于面陣CCD的賽道參數檢測方法[J].電子產品世界,2006(Z4):141-143.