新聞中心

        EEPW首頁 > EDA/PCB > 設計應用 > 基于ARM和CPLD的嵌入式視覺系統設計

        基于ARM和CPLD的嵌入式視覺系統設計

        作者: 時間:2011-08-18 來源:網絡 收藏

        ② 計算質心橫坐標。
        未標題-7.jpg

        ③ 計算質心縱坐標。
        未標題-8.jpg

        ④ 識別物體的形狀。根據得到的每行跟蹤點的長度,以及同一行中有幾段符合要求的連續跟蹤點,可以得知物體從攝像頭角度看到的形狀。特別是在檢測平面上線條時,可以識別是否有分支,這一點是幀處理模式無法做到的。
        需要指出的是,行處理模式雖然會得到關于跟蹤目標的更多信息,但是每行處理的方式增大了處理器的負擔,處理速度也沒有幀處理快。

        4 提高系統的工作速率

        目前,系統工作在幀處理模式下的工作速率是25幀/s,作為系統功能的驗證,這里采用的算法是顏色跟蹤。如果僅做純粹的圖像采集,而不做圖像處理,那么系統可以達到OV6620的最高工作速率,即60幀/s。而在圖像處理方面,不同的圖像處理程序效率對系統的工作頻率有較大的影響。下面給出在通用處理器下提高程序效率的幾個建議:

        ① 內嵌(inline)可通過刪除子函數調用的開銷來提高性能。如果函數在別的模塊中不被調用,一個好的建議是用static標識函數;否則,編譯器將在內嵌譯碼里把該函數編譯成非內嵌的。

        ② 在系統中,函數調用過程中參數個數≤4時,通過R0~R3傳遞;參數個數>4時,通過壓棧方式傳遞(需要額外的指令和慢速的存儲器操作)。通常限制參數的個數,使它為4或更少。如果不可避免,則把常用的前4個參數放在R0~R3中。

        ③ 在for(), while() do…while()的循環中,用“減到0”代替“加到某個值”。比如:
        for (loop = 1; loop = total; loop++) //ADD和CMP
        替換為:for (loop = total; loop != 0; loop--) //SUBS
        第1種方式比較需要2條指令ADD和CMP,而第2種方式只需一條指令SUBS。

        核不含除法硬件,除法通常用一個運行庫函數來實現,運行需要很多個周期。一些除法操作在編譯時作為特例來處理,例如除以2的操作用左移代替余數的操作符“%”,通常使用模算法。如果這個值的模不是2的n次冪,則將花費大量的時間和代碼空間避免這種情況的發生。具體辦法是使用if()作狀態檢查。

        比如,count的范圍是0~59:
        count = (count+1) % 60;
        用下面語句代替:
        if (++count >= 60)
        count = 0;

        ⑤ 避免使用大的局部結構體或數組,可以考慮用malloc/free代替。

        ⑥ 避免使用遞歸。

        結語

        本文介紹了一種基于ARM和系統,可以實現顏色跟蹤。在硬件設計上,圖像采集和圖像處理分離,更利于系統功能的升級。而視覺處理算法更注重處理的效率和實時性,同時根據不同的需要有兩種模式可供選擇。最后給出了提高程序效率的一些建議和方法。與基于PC機的視覺系統相比,該系統功耗低、體積小,適合應用于移動機器人等領域。


        上一頁 1 2 3 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 黄梅县| 祁门县| 扶沟县| 江安县| 大冶市| 南投县| 阆中市| 永兴县| 紫云| 密云县| 巴林左旗| 若尔盖县| 阿尔山市| 浏阳市| 修文县| 昂仁县| 贵德县| 南投县| 淳化县| 盐池县| 华亭县| 务川| 美姑县| 陆河县| 周口市| 法库县| 循化| 镇原县| 揭西县| 朔州市| 崇州市| 高淳县| 简阳市| 浦东新区| 昭觉县| 阿克苏市| 郴州市| 岚皋县| 都安| 民和| 崇礼县|