2017全國大學生電子設計大賽B題 | 板球控制系統(二)圖像算法相關

2017全國大學生電子設計大賽B | 板球控制系統(二)圖像算法相關

轉載請註明出處。

我翻看了很多現有教程以及相關的開源貼,發現大家對於技術的解釋都很隱晦,真正的問題沒解釋清楚,真正的技術也沒體現出來,卻要一直在寫自己程序多麼的強大,效果多好,這是有悖於開源的初衷的。當你第一次拿起半球系統的賽題時,肯定會對視覺算法產生疑問,我該用什麼攝像頭?配什麼計算平臺(單片機或者高性能計算模塊)?我使用什麼算法?我該如何處理圖像噪聲、曝光不均勻、目標點提取、定位等等問題………廢話少說,我會在接下來的帖子中爲大家儘可能詳細的剖析相關技術問題,解決你的疑問。


一、攝像頭和主控板的選擇

工慾善其事必先利其器,好的攝像頭能夠給比賽帶來無比巨大的優勢甚至是意想不到的超級Buff,甚至直接決定了你比賽是國一還是無功而返。競賽當時涌現了五花八門的攝像頭,我們可以大體上分爲三類:

1.野火、山外、藍宙等智能車店家的硬件二值化攝像頭

2.正點原子家的ov2640以及其他ov7725 ov7060等用RGB565格式輸出圖像的攝像頭

3.支持USB接口的、像素大於128X128,幀率任意大於30fps的攝像頭。

其中,1類型的攝像頭具有輸出速度快,數據簡單,單片機處理負擔小的優點,適合STM32F1系列單片機使用,但是也具有致命的缺點,無法調整曝光,容易出現噪點,濾波算法困難,同時只有黑白信息的圖像會導致你只能做小球定位,提高題發揮會遇到困難。以上缺點會直接導致競賽難度大大增加。

2類型攝像頭具有圖像通道完整,容易調整相關參數,可以定製化輸入輸出需求的特點,但是其缺點就是帶來的計算量的上升與對於芯片計算性能的嚴峻考驗。推薦使用STM32F4平臺驅動以上攝像頭。經測試,F407帶動正點原子家的ov2640可以輕鬆達到30幀,加上算法以後可以達到25~27幀,基本滿足需求。

3類型的攝像頭屬於高性能計算系統專用,例如樹莓派,TX2,TK1,TX1系列,屬於嚴重技術作弊方案,我們將會把它放到最後的總結在講。

 

二、圖像的二值化以及相關問題

首先在這裏我不會帶你手碼二值化算法,或者是告訴你濾波代碼應該怎麼寫,或者是告訴你攝像頭該如何去驅動。因爲這已經是老生常談的東西了,網上資料一搜一大把,我不是在教你重複的去造輪子,而是在告訴你解決問題的道路和方法。希望讀者理解。

既然走了視覺這條道路,必須先進行二值化,二值化做過智能車的朋友知道,主要是閾值的選取和濾波。競賽之時大多數隊伍會在二值化的時候遇到三個問題

1.二值化閾值怎麼選擇?不同光強帶來的閾值不一樣怎麼辦?

2.由上面1號問題帶來的圖像有噪聲怎麼辦?

3.由於曝光不均勻以及閾值問題,小球二值化以後在圖像邊緣像素面積變小甚至消失怎麼辦?(同時小球在圖像中心像素面積會變大)

我們來看第一個和第三個問題。二值化閾值分爲動態閾值固定閾值,動態閾值需要相關算法鋪墊,智能車中經常用到,但是有些時候並不是很穩定,尤其是對於新手來講能調試出好的效果更是難上加難。我們也可以用圖像處理中常用到的大津法。通過大津法我們可以完全解決第一個以及第三個問題,並且可以達到近乎完美的二值化處理。但是由於單片機計算性能極其有限,我們基本很難在保證流暢控制的同時進行大津法運算。同時,第二個問題帶來的噪點影響也很致命,通常的解決手段是進行中值濾波,去除椒鹽噪聲,也就是我們圖像中的噪點。但是由於單片機的性能問題,我們很難在短短三天內設計出一個快速且效果極佳的濾波器。於是乎,需要用點笨辦法。我採用的是定閾值+補光+啞光板面處理。定閾值和加強LED光補光可以解決1號和3號問題,通過用油漆處理啞光黑色板面,我們可以最大限度減少環境光干擾,減少噪點,清晰目標。同時在板球系統周圍鋪上黑色磨砂紙張,保證了攝像頭有效像素區域能夠覆蓋全板面,並且可以在攝像頭視野內實現完全的黑色,爲我們接下來的提取目標工作提供便利。板球系統的中心是考察你對於控制系統的理解,核心部分還是在於閉環算法。所以提取目標只是系統的必要鋪墊,但不是最重要的部分。所以我們需要儘可能最穩定最快速提取處目標,不計一切手段。

 

二值化圖像(無濾波)


二值化加簡單濾波以後的圖像,注意顯示屏幕裏清晰的白色球。

 

三、小球位置的判定:(stm32f407+ov2640

通過正點原子的攝像頭例程,我們可以得到一個16位的128X128大小的數組。

這個數組是由原版圖像經過DMA搬運並且經過縮放得到的。經過二值化,我們又會得到一個128X128的8位數組,數據包含了圖像的黑白信息。如果你的圖像沒有噪點,小球可以正確識別,那麼就可以簡單確定小球位置信息了。我們可以通過搜索整個數組裏面所有白色像素點的最大X、Y座標與最小X、Y座標,分別對應小球在圖像中上下左右四個頂點,通過四個頂點取中值進行確定質心位置。對,就是如此簡單省事。當然,你也可以嘗試霍夫曼圓法、模板匹配法、以及Fast-RCNN,SSD等去尋找這個圓形,前提是計算能力夠,畢竟F103處理完霍夫曼圓算法已經卡成PPT了,F4也沒好到哪裏去。

 

到此,圖像的坑已經簡單的填充完畢了,最後提醒一下攝像頭最好用專用軟排線,不然用杜邦線的話很容易出現丟幀、失去幀同步、場同步等玄學問題。這一期我們解決了板球系統的輸入問題,下一期我們將對舵機控制進行簡單鋪墊,解決板球系統的輸出問題。如有言論不當之處或者是闡述錯誤看,還望多多海涵。

 

王向陽     交流QQ羣597962412

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章