《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 業(yè)界動態(tài) > FPGA的圖像處理是怎么做到的?

FPGA的圖像處理是怎么做到的?

2018-05-20
關鍵詞: FPGA 濾波器 圖像處理

  基于軟件的圖像處理方法存在著一些局限性,尤其是計算速度和算法效率方面。所以大家很自然的就想到了FPGA作為嵌入式圖像應用的平臺。許多圖像處理本身就是并行計算的,并且FPGA的編程硬件,本質上也是并行的。但是利用FPGA硬件進行圖像處理存在很多的困難,需要學到很多的技巧。下面我介紹兩幾種比較基礎的圖像處理算法思想。

  單幅圖像的點操作是圖像處理中最簡單的操作,輸出值只取決于輸入值,與位置無關,可以看作是一個函數(shù)的映射。從硬件實現(xiàn)的角度來說,最簡單的方式就是通過一個實現(xiàn)函數(shù)的模塊對輸入的每個像素進行依次處理,也就是流水化處理。每個像素都是單獨處理的,可以把圖像分為若干部分,每個部分單獨處理,所以點操作容易并行實現(xiàn)。點操作可作為讀取圖像和后續(xù)處理之間的一個橋梁。A:亮度調節(jié);為了使圖像變亮,可以增大輸出像素值,可以通過加一個常量實現(xiàn)。類似地,變暗減小像素值。但是實際中,調節(jié)亮度要復雜的多,因為人的視覺系統(tǒng)是非線性的。B:對比度調節(jié);圖像的對比度受映射函數(shù)的斜率影響。斜率大于1增強,小于1則降低,可以通過乘以一個大于或者小于1的常數(shù)實現(xiàn)。C:同時調節(jié)亮度和對比度;一個簡單的調節(jié)它們的點操作是:Q=aI+b=a(I+b’),a,b是控制亮度和對比度的任意常數(shù)。當Q超出范圍怎么辦?例如用8位表示像素值時,Q超出0~255,那么輸出怎么辦?默認情況下只取8位最低有效位并且忽略任何會導致值超出范圍的溢出位。通常還需要進行飽和或者裁剪到極值效果會更好。

  直方圖操作。使用直方圖的圖像處理有兩個相關的主要步驟。第一步是建立直方圖,第二步是從直方圖中提取數(shù)據(jù)并用它來處理圖像。A建立直方圖:對每個像素值累計計數(shù)。通過計數(shù)器數(shù)組完成計算每個像素值出現(xiàn)的次數(shù)。這個方法的缺點是占用的硬件資源比較多,適合閾值后的直方圖計算。可以使用雙口存儲器實現(xiàn),可以大大減少邏輯資源的使用。B直方圖均衡化(使用局部信息來分配那些在輸出像素值的范圍上具有大的計數(shù)值的輸入值的像素來獲得更平坦的直方圖):實現(xiàn)直方圖均衡化的映射是歸一化累積直方圖。直觀地,如果輸入點集合的計數(shù)值大于平均值,那么映射的斜率大于1,反之,小于1。

  局部濾波器。局部濾波器擴展點操作,以一個局部窗口內像素值的函數(shù)運算結果作為輸出。窗口的大小、形狀可以隨意,但是一般都是采用奇數(shù)正方形的,我見過最多的就是3x3,5x5,7x7,這樣的話中心就很容易確定。局部濾波器有去噪、邊緣檢測、邊緣增強等。線性去噪有排序去噪,均值去噪,加權均值去噪等,邊緣檢測可以利用Prewitt,Sobel算子等,將這些算法在3x3窗口中實現(xiàn),相對來說就比較容易了。也可以改進這些算法,是寫小論文比較好的創(chuàng)新點。還有一些形態(tài)學濾波器,顏色濾波器,大致思想都一樣,就是實現(xiàn)的時候算法改一下。

  

1.jpg


本站內容除特別聲明的原創(chuàng)文章之外,轉載內容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創(chuàng)文章及圖片等內容無法一一聯(lián)系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經(jīng)濟損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。