關於圖像處理高斯濾波的筆記(1)

注:本篇文章由【開源騷客:OpenSoc】公眾號首發,現轉載至頭條號。

一旦開始使用 FPGA 開始進行圖像處理,就會越發愛上 FPGA 對圖像處理的實時性,從此一發不可收拾!

關於圖像處理高斯濾波的筆記(1)

因為最近在學習一本圖像處理算法書籍中關於圖像增強的算法,大家可以先看看這個圖像增強算法的效果。下面給一張書中原圖和Matlab 仿真的結果圖。

因為最近在學習一本圖像處理算法書籍中關於圖像增強的算法,大家可以先看看這個圖像增強算法的效果。下面給一張書中原圖和Matlab 仿真的結果圖。

關於圖像處理高斯濾波的筆記(1)

圖1 書中原圖

關於圖像處理高斯濾波的筆記(1)

圖二 Matlab 仿真結果

大家有沒有覺得這個圖像增強算法實在是太讓人震撼了,能把一幅對比度極低的圖片增強到能把之前比較黑的地方看得很清晰,比起什麼直方圖均衡這種 low B 算法,那可是強太多了!

當時看到這個算法的第一反應就是,FPGA這麼一個牛 X 的玩意兒,能不能實現這個算法呢?

大家看到這,是不是很迫切的想知道介紹這個算法到底是一本什麼樣的書呢?

關於圖像處理高斯濾波的筆記(1)

書籍封面圖

書呢就是這樣的一本書,大家感興趣的可以在網上自行購買。

這本書裡面涉及的算法種類還是非常多的,咱們再稍微看下目錄吧,滿足一下大家的好奇心。

這本書,我這裡沒有 PDF 電子版,大家就不用找我要了,我也是買的紙質書看的。

關於這本書的內容到底是好還是壞呢?站在客觀的角度來講,其內容的豐富度極高,涉及的算法非常多。當然也有一個美中不足的地方,每一種算法就大致介紹一下其原理。

書中並未給出具體的用某種語言實現的代碼。如果是剛剛接觸圖像處理的朋友,很大程度是看不太懂的。

關於書籍本身,就先介紹這麼多,咱們這篇文章還是回到高斯濾波上來。

對於高斯濾波這個算法本身來講,網上是有非常多的文章,也有很多關於如何用 FPGA 實現高斯濾波的文章。那些文章用的高斯卷積核一般是3 * 3的矩陣大小,其權重矩陣也是會由那些文章直接給出。

問題的關鍵是,現在這個圖像增強算法,會用到高斯濾波,但其卷積核並不是 3*3 大小的,是更大的卷積核。

如果有做過 sobel 圖像邊緣檢測算法的朋友,應該會了解高斯濾波會有一個權重矩陣,類似 sobel 算子的係數矩陣。

很多文章會直接給出3*3高斯卷積核的權重矩陣,但對於更大的權重矩陣,並不知曉如何獲取,如7*7的權重矩陣,11*11的權重矩陣,甚至是81*81的權重矩陣。

這個時候就需要回到高斯濾波算法的公式本身了。

關於圖像處理高斯濾波的筆記(1)

高斯函數公式

在高斯函數曲線中,σ描述正態分佈資料數據分佈的離散程度,σ越大,數據分佈越分散,σ越小,數據分佈越集中。σ也稱為是正態分佈的形狀參數,σ越大,曲線越扁平,反之,σ越小,曲線越瘦高。

如果需要獲取更大尺寸的高斯權重矩陣值,只需要將公式中的 x 和 y 兩個變量設置成相應大小的向量就 OK 了!

舉個栗子:

如果想獲取 5*5 的權重矩陣係數,可以將 x = 1, 2 , 3 , 4 , 5 和 y = 1, 2 , 3 , 4 , 5。或者將x = -2, -1, 0, 1, 2 和 y = -2, -1, 0, 1, 2 帶入公式求取其權重係數,σ 可以自己取值,之後再進行歸一化處理。

獲取其他尺寸的權重矩陣,也是使用同樣的方式進行計算。如果自己手動去算,肯定是比較麻煩的,咱們可以藉助 Matlab 直接算出來。

計算 5*5 權重矩陣的 Matlab 代碼如下:

fspecial('gaussian',[5,5],1)

關於圖像處理高斯濾波的筆記(1)

Matlab 高斯權重矩陣係數

[5 , 5] 表示權重矩陣的尺寸大小,1為 σ 的值。

敲重點:這些值怎麼在FPGA內部進行使用呢?

可以將這些係數都統一乘上 1000,將小數轉成整數,待運算之後再將結果同意除以1000。

今天的筆記就先分享到這,主要是分享:當需要自定義高斯濾波的權重矩陣尺寸時,可以通過 Matlab 獲取其權重矩陣的參數。

重要提醒:想學習FPGA的朋友福利來了,為了方便廣大想入門FPGA的小白們,Kevin 錄製了一套零基礎入門的課程,課程結合線下班學員的常見入門疑惑,並加入由易到難的上手練習,不對著PPT念,從0開始帶著設計時序敲代碼。目前課程已錄製10多講,1080P高清無碼播放。

關於圖像處理高斯濾波的筆記(1)

基礎視頻課程

Kevin 錄製的視頻,質量你們是清楚的!

視頻何時公開,免費還是收費,就要看大家在下方評論區有多熱情了!!!


分享到:


相關文章: