天天看點

FPGA圖像處理之路,從此開始

FPGA圖像處理之路,從此開始,接下來,讓我們把時間交給“圖像處理”。一休哥在動筆之前,一直在猶豫,反複思考着一個問題,這個問題一直困擾着我,“FPGA在圖像處理領域中的地位?”

按照慣例,我們先暫且不直說這個問題的答案,讓我們先談談圖像處理技術。在一休哥我個人看來,圖像處理就是對圖像進行操作以得到自己想要的結果。圖像處理,它是一個非常廣義的概念,它包含圖像增強,圖像複原,圖像重建,圖像分析,模式識别,計算機視覺等N多個應用方向。這些應用技術有許多在本質上是相通的,但是不同應用領域的關注點往往是不同的。

當我們升入研究所學生階段,或者進入公司,如果從事圖像處理相關的工作,也就有了自己涉獵的領域了。在此,一休哥主動交代一下,一休哥現階段主要關注的領域為圖像重建。

好了,閑話不多說,我們來說說大實話。在我之見下的圖像處理,作為一個“半職業”的FPGAer,用FPGA做圖像處理相關的開發時,我們往往首先要考慮的就是FPGA處理闆的性能了,因為做圖像處理是一個十分消耗資源的事情。打開淘寶,我們可以搜尋到很多圖像處理FPGA開發闆,有些開發闆上的資源十分豐富,可以滿足我們前期試驗的需求。可是令人感到尴尬的是,用FPGA做圖像處理也是一件十分困難的事。一休哥從網絡上的開源情況來看,FPGA在圖像處理方面的主要應用一直處于圖像的預處理階段。

什麼叫圖像的預處理?例如圖像的畸變校正,濾波器處理,邊緣檢測、顔色檢測和門檻值處理等。這些預處理都有一些共同的特征,算法較為簡單,操作重複性強等。但是,除了預處理,FPGA就不能做點别的嗎?有的哦,圖像處理類似一個三層金字塔,分為底層,中間層,高層。

FPGA圖像處理之路,從此開始

圖像處理金字塔有三層,分别針對的是像素級、特征級和目标級。一個成熟的圖像處理應用應該同時涵蓋這三層。

在像素層,我們可以對圖像做一些變換,目的是增強圖像的有用資訊,同時抑制任何不相關的資訊(如噪聲)。然後通過對預處理後的圖像做分割操作實作圖像從像素級到特征級的過度,分割操作可以了解為檢測圖像中具有一些共同性質的區域。針對這些區域,依據一個或多個分類法則,将區域歸類到一些預先設定的特征類型中作為後期識别的資料集。此時的資料已經不僅僅是圖像了,其中包含了豐富的特征資訊,如物體的位置資訊等。在金字塔高層,依靠擷取的特征,如有必要還可以将這些特征集作為學習的訓練集來建立專用的模型,借助模型來實作識别,進而用來對實時采集的圖像進行描述。

好了,剛才說了一大堆一休哥不擅長的大片理論的“教科書式”定義後,一休哥繼續講大實話。一言以蔽之,FPGA在圖像進行中的應用尚處于未成熟狀态,網絡上可供借鑒的大多是預處理方面的資源,而關于使用FPGA去做特征和目标層次的處理還是十分複雜的,大多數高層次的應用還處于研發階段,具體說吧,主要是高校和大公司會去做這方面的研究與應用,而且因為是研發階段,是以使用的FPGA套件是十分昂貴的,不計成本。顯然這種實作方式是不符合商用的。是以,當你真正用一個全新的“較低廉”的“高效”的硬體方式實作了一個效果十分出色的圖像處理算法,那麼你當真是非常了不起的了。

說了這麼久,關于“FPGA在圖像處理領域中的地位?”這個問題,想必各位心中已經有了屬于你們自己的那份答案了。

不妨再來和一休哥的答案比較下。用FPGA做圖像處理往往需要考慮除算法之外的更多問題,如時序限制,存儲器帶寬不足,資源不足,計算問題,這些問題都制約着FPGA在圖像處理領域的發展。試想一下,本就複雜的圖像處理算法,再加上這些有待解決的難題,這也就是我們經常遇到的困境。幸好,科技是在不斷進步的,當現有的技術不能很好的解決目前的應用難題時,一定會新的技術誕生,專為處理這些問題而是的技術。這也就是,我們需要不斷學習,不斷充電的原因。

DDR2、DDR3、Zynq、PCIE、USB3.0、千兆網、LVDS、CORDIC,這些新技術的出現為我們提供了新的思路與解決方案,讓FPGA擁有更大的潛能,FPGA将會在圖像處理領域有更加卓越的表現。

在下期及以後的博文中,一休哥将主要介紹FPGA在圖像進行中的應用執行個體。結合新的技術,通過具體應用執行個體的方式,講述不一樣但“絕對精彩”的圖像處理故事,敬請期待!

FPGA圖像處理之路,從此開始