前言
本文提出一種使用面陣CCD并且能夠有效利用S12單片機內部硬件資源的路徑參數檢測方法。普通CCD圖像傳感器的工作電壓一般為12V,輸出NTSC或者PAL制式的模擬視頻信號。利用S12內部的AD轉換器,配合從視頻信號中分離出的同步信號,可直接將圖像信號采集到單片機內部RAM中,然后通過軟件對圖像信息進行處理,得到路徑各種參數。
技術難點與解決方法:
直接利用S12單片機中的AD采集視頻圖像,存在著采集速度、存儲數據空間、處理速度、工作電壓以及同步信號分離等方面的技術難點。下面就這些問題及其解決方法進行討論。
采集速度
跑道都是由直線和圓弧組成,檢測車模前方一段路線參數,只需要得到中心線上3~5個點的位置信息就可以估算出路徑參數(位置、方向、曲率等)。這些點的位置,通過圖像中若干行信息就可以檢測出來(如圖1所示)。因此,所需檢測圖像應該是水平分辨率高、垂直分辨率低。
圖1 部分賽道形狀,賽道中心線檢測位置
將S12單片機采集的圖像分辨率特點,與賽道檢測對圖像分辨率的要求進行對比,可以發(fā)現,在安裝CCD攝像頭的時候,只要將它旋轉90度,輸出的圖像信息也相應旋轉90度(如圖2所示)。這樣一來,S12中的AD轉換器采集的圖像信息,水平分辨率與垂直分辨率就會互換,原來水平分辨率低、垂直分辨率高的圖像,就會變成水平分辨率高、垂直分辨率低的實際圖像,正好滿足道路參數檢測的要求。
圖2 賽道圖像以及旋轉90度后的賽道圖像
此外,我們還可以通過讓S12適當超頻運行、降低AD轉換器精度等方式,提高AD轉換器的速度。
圖像存儲空間:
由于將圖像水平旋轉了90度,需要將圖像數據進行存儲,在整幅圖像的基礎上計算出路徑水平信息。S12內部有8K字節(jié)的RAM空間。如果存儲300*48分辨率圖像則不夠,但可以存儲若干幅75*24的低分辨率圖像數據。從低分辨率圖像所得到的路徑參數,其精度仍可以滿足車??刂频男枰R话闱闆r下,只需要兩塊圖像存儲空間即可,一塊作為采集圖像的存儲空間,另外一塊作為處理緩沖區(qū)。
圖像信息處理速度:
如果采用75*24分辨率的圖像,每隔4行采集一行圖像信息,圖像采集所占用的CPU時間不會超過1/4。因此,大部分的CPU工作時間可以用于圖像處理以及運動控制。
由于采集到的圖像由白色背景和黑色中心線組成,所以檢測每一行路徑中心線位置可以通過簡單的閾值比較的方式計算出來。在此基礎上,還可以通過參數擬合獲取道路位置、方向以及曲率等參數。另外,通過適當的動態(tài)閾值的方法,可以提高算法的穩(wěn)定性。核心算法如果處理相對簡單,可通過適當的優(yōu)化方法,在圖像采集周期20毫秒內計算出結果,達到實時圖像處理的要求。如果算法比較復雜,可以將核心算法采用匯編語言完成,以提高效率,配合CPU超頻運行方法,保證算法需要時間小于20毫秒。
CCD器件工作電壓:
CCD器件工作電壓需要在12V左右。為此,需要在系統(tǒng)電路設計中,增加獨立12V電源模塊?;蛘咭部梢圆捎脭夭ㄉ龎旱姆绞将@得12V電壓,具體電路后面給出。
視頻同步信息分離:
為了采集圖像信息,CPU需要根據行、場同步信號啟動AD轉換器,采集穩(wěn)定的圖像。由于視頻信號的變化很快,所以需要另外設計同步分離電路。在本方案中,使用了LM1881視頻同步分離集成塊,獲取視頻同步信號,將此同步信號連到單片機的中斷輸入端口。
系統(tǒng)設計與實驗結果
硬件設計
基于S12單片機采集視頻圖像電路系統(tǒng)框圖如圖3。
圖3 單片機采集圖像系統(tǒng)框圖
其中包括有S12單片機最小系統(tǒng)、同步分離電路、5V穩(wěn)壓電路、12V斬波升壓電路等。
其中S12單片機端口資源配置如下:
1) AD 輸入端口PAD02 :輸入視頻模擬信號;
2) 外部中斷口IRQ :輸入視頻行同步信號;
3) 數字IO口 PM1 :輸入奇偶場信號;
4) PWM輸出端口:PWM2 12V斬波升壓控制信號;
部分系統(tǒng)電路圖見圖4、5。
圖4 12V斬波升壓電路
圖5 同步信號分離電路
圖5中,只需要將行同步信號和奇偶場信號輸入到單片機,視頻信號不經過電容隔直直接輸入到單片機的AD轉換口。
軟件設計
軟件設計主要包括由圖像采集模塊,圖像處理模塊以及通訊模塊。
其中圖像采集模塊的主要功能包括:
1)初始化模塊
2)外部中斷響應模塊
3)AD 轉換中斷響應模塊
圖像處理模塊主要完成采集圖像中的黑色中心線參數的計算。實驗中,我們采用了簡單的動態(tài)閾值比較的方法,得到每一行的中心線的水平位置,然后通過參數擬合得到中心線在圖像坐標系中的位置、方向以及曲率。
為了能夠在PC上顯示出單片機采集的圖像信息,軟件中還包括了串口通訊模塊,通過軟件將內存中的圖像數據傳輸到微機進行顯示。
實驗結果:
下面是兩幅S12單片機采集到并通過串口傳送到微機顯示的前方直線路徑中心線的圖像,它們的分辨率為72 * 24。實驗證明通過簡單的動態(tài)閾值比較的方式,即可以將每行中心線位置計算出來,整個處理時間約為8毫秒左右。
實驗結果證明,上述CCD檢測方法可以有效的獲取路徑圖像信息,并計算出其中的參數。
圖6 賽道中心線圖像:垂直位置
圖7 賽道中心線圖像: 傾斜位置
結語
從實驗結果中可以看出,通過合理放置CCD攝像頭,并且充分利用S12單片機內部的硬件資源,可以獲得滿足路徑參數檢測需要的圖形數據,進而可以通過圖像處理算法,得到路徑參數。
當然,利用CCD檢測路徑參數也存在一些缺點:比如占用RAM資源比較多、道路信息檢測速率受到限制(CCD每秒產生50幀圖像)、檢測有延時(1/50秒)等。
另外,除了使用單一CCD攝像頭檢測路徑參數之外,還可以采用光電管與CCD相結合的方式,發(fā)揮各自的優(yōu)點。