圖像算法移植到DSP及其優化步驟
當你需要把已經寫好的算法,移植到你的DSP開發板上並很好的跑起來,需要做哪些工作呢?
下面我分兩部分來講,第一分部是移植,第二部分爲算法優化
移植:
1)如果你的算法是基本opencv這樣的基本上開發的,你需要脫離opencv的環境。
2)如果你的算法是C++語言,請你改成標準的C語言。雖然DSP的開發環境是支持C++的,但是不建議你這麼做。
3)修改你算法的內存分配,儘量內存一次分配好,DSP在算法不斷的申請和釋放時會有隱患。優先使用靜態數組,會減輕很多工作量。
4)在CCS下建立工程,來調試你的算法,內存分配函數需要使用TI提供的函數。如果你的算法能夠長期穩定的運行,那麼恭喜你,你的算法移植就完成了。
優化:
算法優化,需要你能懂算法,也懂DSP。如果你只會寫DSP程序,而不會算法,這對整個產品來說,是不能達到最優的。有些公司怕算法泄密,給優化人員一段或幾段程序讓其優化。我覺得這樣做是很不合理的。除非你自己能控制大局,精通優化,這樣纔可行。
1)你需要對算法原理做一個深刻苦的理解,閱讀相關的文章。
2)對你拿到的算法做全方位的熟悉。
3)做好上面的準備工作後,你要對算法的結構做重新的整理。依據DSP的特點,比如內存的分佈。算法結構調整完成後,你的算法在DSP上速度應該有一個明顯的提高了。
4)結構調整完成後,找到算法中比較費時的部分。確定我們需要優化的重點,這部分內容多是每張圖像都要處理一次或多次的部分。對於算法啓動時初始化部分的內容,一般不需要優化。
5)確定優化內容後,你首先考慮從語言結構上去做優化,這個時候應該還是C語言的。我不建議大家用TI提供的在C語言中使用優化嵌入的C庫函數。
6)你把需要優化的函數改寫爲線性彙編或彙編函數。不斷的調整軟件流水,提高速率。
這個整個移植優化的工作就基本上做完了,其實實際工作中,移植優化的工作量往往會比較大,要不斷的反覆,找更好的方法。移植優化跟算法開發一樣,是個細緻的活。需要靜下心來,仔細研究,歡迎大家一起來探討。