<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 汽車電子 > 設計應用 > 基于雙Nios II的紅外圖像實時Otsu局部遞歸分割算法設計

          基于雙Nios II的紅外圖像實時Otsu局部遞歸分割算法設計

          ——
          作者:賀明 王新賽 時間:2007-08-16 來源:電子產品世界 收藏

          摘  要:針對傳統(tǒng)Otsu分割方法很難實時實現(xiàn)的局限性,提出了一種適合現(xiàn)場可編程門陣列()中 軟核處理器實現(xiàn)的快速Otsu分割算法,該算法的思路是把一次Otsu分割得到的目標區(qū)域作為新的圖像再進行一次Otsu分割,得到的結果作為最終分割閾值.利用并行 和VHDL實現(xiàn)的硬件加速邏輯協(xié)同設計保證算法的實時實現(xiàn)。實驗結果表明,在不同的背景下,利用本文設計能夠實時穩(wěn)定地對目標分割提取,具有較好的魯棒性。

          關鍵字:     

          1 引言

          利用紅外成像傳感器實現(xiàn)實時目標成像跟蹤是精確制導武器的核心技術,圖像中目標的分割效果尤其是有效地使目標從背景中分離出來是保證系統(tǒng)穩(wěn)定跟蹤的關鍵,Otsu分割算法因其簡單有效在實時目標成像跟蹤系統(tǒng)中得到了很廣泛的應用,用這種聚類準則分割圖象,當目標在圖象中占有適當?shù)谋壤龝r,分割結果比較好。然而對小目標圖象卻不能把目標從背景中分割出來,經常會把很多背景錯分為目標,本文提出了利用改進的快速局部遞歸Otsu分割算法對圖象分割。并且依靠并行Nios II軟核和硬件邏輯結合的速度優(yōu)勢對算法實時實現(xiàn)。

          2 算法原理

          Otsu方法(即大律方法)在獲得圖像灰度直方圖的條件下,利用概率論的知識,通過計算最大類間方差而得到分割門限.在較為理想的“雙峰”條件下,用Otsu準則能夠得到較好的分割效果。Otsu算法步驟如下:



          在冷背景(如天空)下的紅外飛機圖像中,飛機目標的灰度級比較高,而且目標區(qū)域的面積往往要比背景區(qū)域的面積小一些,當兩者面積相差懸殊時,簡單的一次Otsu分割會錯誤地將部分背景劃分到目標區(qū)域Otsu,考慮到一次Otsu分割的結果圖像可以分為兩部分:背景區(qū)域和(含有部分背景的)目標區(qū)域.由于只對目標區(qū)域感興趣,把背景區(qū)域去掉并不會丟失目標信息.那么,可以對結果圖像的(含有部分背景的)目標區(qū)域進行Otsu分割得到新的結果圖像,接著,把新的結果圖像中背景區(qū)域去掉,若目標區(qū)域還包含有部分背景,則再對(含有部分背景的)目標區(qū)域進行Otsu分割,依次遞歸下去,直到得到比較理想的分割圖像為止.這種方法稱為Otsu局部遞歸分割方法。
          對紅外圖像數(shù)據(jù)流處理時,由于Otsu局部遞歸分割算法需要對圖像進行多次迭代處理,而且對每場圖像分割需要的迭代次數(shù)不同,所以很難保證分割的實時性,為此我們提出了利用Otsu準則對圖象進行兩次局部遞歸分割。即在第一次Otsu方法分割之后,將分割得到的亮像素再次利用Otsu分割準則計算得到新的分割閾值。實驗表明,即使存在復雜的云層背景的情況下,經過兩次迭代分割后,目標也較好地被分割出來。

          3 雙Nios II的實現(xiàn)方案

          Nios II處理器是Altera公司于2004年6月推出的第二代用于可編程邏輯器件的可配置的軟核處理器,性能超過100 DMIPS。NioslI是基于哈佛結構的RISC通用處理器軟核,能與用戶邏輯相結合,編程至Altera的中。處理器具有32位指令集,32位數(shù)據(jù)通道和可配置的指令以及數(shù)據(jù)緩沖。它特別為可編程邏輯進行了優(yōu)化設計,也為可編程單芯片系統(tǒng)(SOPC)設計了一套綜合解決方案。NioslI處理器系列包括三種內核:一種是高性能的內核(Nios II/f);一種是低成本內核(Nios II/e);一種是性能/成本折中的標準內核(Nios II/s),它是前兩種的平衡。本系統(tǒng)采用高性能內核。Nios II處理器支持256個具有同定或可變時鐘周期操作的定制指令;允許Nios II設計人員利用擴展CPU 指令集,通過提升那些對時間敏感的應用軟件的運行速度,來提高系統(tǒng)性能。
          根據(jù)紅外焦平面成像特性,為了保證算法的實時性,采用雙Nios II軟核和硬件加速器協(xié)同設計的方式,在圖像場的間隙做實時Otsu局部遞歸分割處理。如圖 1 所示實現(xiàn)算法原理圖

          圖 1 算法實現(xiàn)原理圖

          局部遞歸區(qū)域提取單元將需要分割的紅外數(shù)據(jù)讀入FPGA內部雙端口RAM0,直方圖統(tǒng)計對數(shù)據(jù)統(tǒng)計直方圖,存放于雙端口RAM2,聚類統(tǒng)計單元分別對直方圖依次從高低兩個方向計算類內均值和概率,把累加結果存入三端口RAM0和RAM1中,聚類統(tǒng)計結束后,兩個Nios II并行對高低兩個方向的聚類統(tǒng)計結果進行類間方差計算并分別求最大值。取兩者最大為分割閾值,完成一次分割后,局部遞歸區(qū)域提取單元依據(jù)得到的閾值提取出目標區(qū)域存入雙端口RAM1中,接著按照第一次分割步驟完成快速局部0tsu遞歸分割算法。

          實現(xiàn)算法的CPU互聯(lián)結構:
          為了最大化的提高算法的處理速度,系統(tǒng)采用CPU并行工作方式。如圖 2 所示,兩個Nios II同時負責收發(fā)處理數(shù)據(jù)。當其中一個CPU執(zhí)行完制定的任務后等待另一Nios II,當兩個Nios II任務全部完成后,Nios II0從MailBox中取出Nios II1的處理結果計算最終分割閾值,采用這種將數(shù)據(jù)塊分細處理結構,減少單個CPU處理的數(shù)據(jù)量,縮短了算法延遲。

          考慮到算法需要進行循環(huán)的浮點數(shù)計算,采用Nios II的定制指令和VHDL編寫硬件算法加速器保證系統(tǒng)運行速度,如圖3 所示采用自定義浮點指令和軟件實現(xiàn)浮點運算性能對比。定制指令邏輯和Nios II的連接在SoPC Builder 中完成。Nios II CPU配置向導提供了一個可添加256條定制指令的圖形用戶界面,在該界面中導入設計文件,設置定制指令名,并分配定制指令所需的CPU時鐘周期數(shù)目。系統(tǒng)生成時,Nios II IDE為每條用戶指令產生一個在系統(tǒng)頭文件中定義的宏,可以在C或C++應用程序代碼中直接調用這個宏。圖4 Nios II軟件實現(xiàn)系統(tǒng)算法和自定義指令實現(xiàn)性能對比

          4 結束語

          局部遞歸Otsu分割方法,通過遞歸計算對圖像中目標不斷的逼近,因此在復雜的背景下,對紅外圖像目標分割有很好的效果,但是由于算法迭代繁瑣很難實時實現(xiàn),本文提出了一種基于雙Nios II處理器的紅外圖像快速局部遞歸Otsu分割實時實現(xiàn)方法。通過在Altera的Stratix  FPGA 中集成兩個l00 MHz軟核配合一定的硬件邏輯,大大減小了算法的處理時間,實現(xiàn)了算法的實時處理,實驗表明,該設計每秒可處理25幀320x240x8bits的紅外圖像。如圖 3 所示對系統(tǒng)對3公里外的坦克目標分割效果圖,(a)為原始圖像,圖像中心位置有一坦克目標,(b)圖像一次Otsu分割結果,由于背景比較復雜,坦克目標與背景沒有完全分割開,(c)經過本文快速局部遞歸Otsu分割后效果圖,圖中的坦克目標從背景中很好的分割出來。

          linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

          c++相關文章:c++教程




          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();