[Opencv]圆盘目标跟踪系统——激光打靶
? ? ? ? 這個小項目是學校為電賽訓練自擬的題目,概括來說要求如下:
? ? ? ? (1)圓盤正面用白色紙粘貼鋪滿,繪制兩個同心圓,直徑分別為250mm和150mm。圓盤與電機同軸連接,電機能夠帶動圓盤旋轉。
????????(2)圓盤正面吸附紅、黃、藍三種顏色的磁貼,追蹤系統根據要求使激光點的射線落點位于對應磁貼上。
? ? ? ? 最后實現的部分效果上傳到了B站上,附上鏈接:? ? ? ? 通院科協電子部【激光打靶】_嗶哩嗶哩_bilibili
? ? ? ? 下面簡略介紹單片機控制部分然后詳細介紹圖像處理實現部分。
? 一.單片機控制部分
? ? ? ? 本題規定使用的控制核心是TI系列的單片機,我們選擇的是TM4C123GXL。下面分電機控制和舵機控制介紹
?1.電機控制
? ? ? ? 電機控制比較簡單。
? ? ? ? 我們使用的是步進電機帶動圓盤轉動,因為題目要求的轉速比較低,普通的直流減速電機達不到,故使用步進電機。
? ? ? ? 交互方式使用了一個矩陣鍵盤,控制電機開始轉動,轉動方向。
2.舵機控制
? ? ? ? 舵機控制是本題的難題。
? ? ? ? 我們選用的數字舵機,對于諸如控制舵機旋轉角度的方法我們也比較熟練,所以選擇合適的控制算法尤其重要。
? ? ? ? 一開始的思路是,首先圖像處理模塊采集到目標磁貼在圖像中的中心點坐標和激光點的中心點坐標,發送給單片機,單片機再通過控制算法由兩者的坐標得到舵機旋轉的角度,閉環控制,以達到追蹤的效果。
? ? ? ? 對于這種思路,控制算法我們嘗試了增量式PID算法和模糊控制算法,結果都不理想。原因主要是圖像方面,當磁貼與激光點重合時,兩者的色相在圖像中均會有極大的漂移,導致發送給單片機的坐標信息變化很大,最后控制效果不佳。
? ? ? ? 最后我們采用的整體方案是:圖像處理部分仍然采集目標磁貼在圖像中的中心點坐標和激光點的中心,但舵機采用開環控制。在系統啟動時,先算出舵機角度與激光點坐標的線性關系,然后單片機只根據目標磁貼的坐標控制旋轉角度。
????????具體算法流程和代碼由我隊友周哥編寫,不知道能否請他來講一講【滑稽】
? ? ? ? 整個裝置的機械結果是我余姐設計的,在此也感謝整個暑假三人的愉快合作。
3.圖像處理
? ? ? ? 圖像處理模塊采用的是樹莓派4B+攝像頭的方案。
? ? ? ? 乍一看也許磁貼的識別也許就是普通的顏色識別,但如上部分所說,必須克服色相漂移帶來的干擾。簡單的顏色識別方法在我以前的博文里有,下面介紹的是Camshift算法。
? ? ? ? Camshift算法是一種目標檢測算法,由于它是以運動物體的顏色信息作為特征,所以非常適合用于本題。
? ? ? ? Camshift是一種連續的Meanshift算法,從名字上就可以看出兩者的聯系。基本思想是以視頻圖像中運動物體的顏色信息作為特征,對輸入圖像的每一幀分別作 Mean-Shift 運算,并將上一幀的目標中心和搜索窗口大小(核函數帶寬)作為下一幀 Meanshift 算法的中心和搜索窗口大小的初始值,如此迭代下去,就可以實現對目標的跟蹤。它是一種半自動的跟蹤,需要事先標出目標物體。該算法能夠自動調節搜索窗口大小來適應目標的大小,所以即便色相漂移導致二值化圖像中的目標大小形狀發生變化,目標的中心也不會有太大變化,魯棒性良好。
? ? ? ? Opencv中有自帶的函數實現Camshift算法,可以在source/sample/cpp中找到Camshift的示例程序學習,本項目中的相關代碼也是由此修改得到的。
? ? ? ? 實測得到的結果有明顯改善,打印坐標數據的波形圖也平滑了許多。
? ? ? ? 下面介紹修改Camshift示例代碼的思路。
? ? ? ?示例代碼中的處理思路是:先用鼠標標定目標物體,然后通過計算目標HSV空間下的H分量直方圖,通過直方圖反向投影得到二值化圖像,最后調用Camshift函數,自動跟蹤并調整目標窗口的中心位置與大小。
? ? ? ? 修改的話,我們需要去掉鼠標標定的過程,改為自動尋找指定顏色的目標。只需要在程序中存儲紅黃綠三色磁貼的H分量的值,以此來替代計算鼠標框中區域的直方圖,然后做直方圖反向投影和Camshift運算。
? ? ? ? 代碼在樹莓派上,暫不附上。
4.總結
? ? ? ? 目前該作品還存在著不足
? ? ? ? (1)開環的抗干擾能力太差,很多時候挪動裝置都會導致效果有偏差,并且追蹤不能達到完美的穩定。
? ? ? ? (2)Camshift對環境的抗干擾能力還是有所欠缺,由于是基于顏色特征的跟蹤,故對背景有顏色敏感。
? ? ? ? 希望努力能得到回報。
總結
以上是生活随笔為你收集整理的[Opencv]圆盘目标跟踪系统——激光打靶的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php处理跨域访问
- 下一篇: 外螺纹对照表_最新英制螺纹对照表(201