1簡述
本設計基于顏色特征識別實現,這個并不算高大上的算法,個人能力有限再加上FPGA算法實現難度不小,所以采用最簡單的算法實現,作為FPGA的入門學習足以。這個設計是19年4月左右做出來的,那時自己對FPGA的認知比較朦朧、FPGA的開發能力也一般,所以在本設計上有很多有問題的地方,到現在也沒時間去修改,希望有能力的小伙伴來完善,在此先謝謝了!
在初學FPGA的時候,根據鄧堪文的《SDRAM的那些事兒》視頻教程完成了基于FPGA的圖像采集系統。但是Bug很多,當時我的能力太差沒能解決問題 ,所以后面的做的圖像處理項目都沒用使用。本設計也是一樣,使用的是FPGA板卡配送的圖像采集例程,我在此基礎上進行的開發,添加圖像處理模塊以及二軸舵機控制模塊。
2 算法架構
圖像采集顯示流程一般是:FPGA把攝像頭采集圖像數據緩存到SDRAM,再從SDRAM搬運到LCD驅動進行輸出顯示。從圖1總體框圖可以知道,在LCD圖像流輸出時進行圖像處理。圖像處理模塊采用流水線處理的方式,先后完成RGB2YCbCr(二值化)、膨脹腐蝕的形態學濾波和目標物體坐標提取,最后輸出圖像以及物體的坐標。然后舵機驅動模塊驅動兩軸舵機實現實時追蹤。
圖1
3 圖像算法模塊的簡單介紹
下圖是圖像處理模塊頂層的部分截屏,這個實現圖像選擇輸出,通過按鍵來選擇原圖、二值化、腐蝕以及膨脹這四種圖像效果的其中之一輸出。
圖2
頂層例化所有的圖像算法模塊,同時也有串口,這是為了方便調試二值化的閾值參數,可以縮短調試時間,提高效率。
圖3
下圖是目標物體坐標提取模塊的,計算辦法就是把有效的坐標做累加,最后除以有效像素的數量就可以得到目標物體的坐標了。
圖4
串口接收的調參數據最后用在RGB2Ycbcr模塊里,未注釋的就是最后調參完成確定的閾值。當你需要調整閾值時把上部分注釋,取消下部分注釋。串口調參命令為:01xx0102xx0203xx0304xx04。xx為你需要輸入的值,4個xx分別對應調參的四個數據。
圖5
圖像處理有疑惑就這些地方了,其他的像算法實現原理自己百度看博客學習吧,內容太多但是不復雜。
4 舵機驅動模塊
舵機控制就是產生PWM,具體原理百度。下圖產生0.4us的基準時間,在這個基準上再產生20ms的舵機控制周期,pulse_cnt。
圖6
將圖像處理模塊得到的水平、垂直兩個方向的坐標進行轉換,得到舵機旋轉角度的控制值。坐標與中心坐標相減得到目前物體的偏移量,這里除以一個系數是進行PID的比例調節。直接用 / 有點違規,這里最好使用除法器IP處理下。最后得到x_value和y_value值,這是控制舵機旋轉角度的值,與上面得到的pulse_cnt比較輸出PWM。
圖7
審核編輯 :李倩
-
FPGA
+關注
關注
1645文章
22016瀏覽量
616892 -
圖像采集
+關注
關注
2文章
307瀏覽量
41604 -
算法
+關注
關注
23文章
4706瀏覽量
95143
原文標題:FPGA開源項目:小球追蹤系統設計(臨時開源)
文章出處:【微信號:zhuyandz,微信公眾號:FPGA之家】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
開源FPGA硬件,核心開發者招募中......

【開源分享】:開源小巧的FPGA開發板——Icepi Zero
擁抱開源!一起來做FPGA開發板啦!
Open Echo:一個開源的聲納項目

開源項目!教你如何制作一個開源教育機械臂
使用IP核和開源庫減少FPGA設計周期

ElfBoard開源項目|智能消防車項目

開源鴻蒙榮獲開放原子“2024年度操作系統領域國內活躍開源項目”
凌蒙派OpenHarmony開源項目榮獲本期Gitee官方推薦

使用FPGA構建ADAS系統簡易過程
開源應用程序追蹤并繪制動物活動

ElfBoard開源項目|“智慧光伏”開源項目技術文檔

評論