在知乎上看到一個比較有意思的話題,卷積為什么叫”卷“積?哈哈哈哈哈
其中有個動圖用卷毛巾生動形象的比喻了卷積的過程。
帶著好奇心先看一下我們最熟悉的卷積公式:
還可以改寫成:
其中a,b表示a+b=n這條直線上所有的點。y(n)就表示這條直線上所有點對應(yīng)的函數(shù)值x(a)h(b)的累加。
以下圖卷毛巾為例,將毛巾沿紅色虛線方向卷起來,設(shè)這條紅色虛線為a+b=5,卷起來后這條紅線上的所有函數(shù)值都累加到n=5這一點上,即是y(5)的值。
1.一維信號的卷積
上面只是從數(shù)學(xué)公式解釋了卷積是如何計算的,但卷積物理意義是什么呢?
學(xué)習(xí)信號與系統(tǒng)的時候總是聽老師說信號經(jīng)過一個系統(tǒng)就是與這個系統(tǒng)進行卷積。所以我們先從一維信號來解釋一下。
(1)表示信號δ(t)經(jīng)過某系統(tǒng)產(chǎn)生了輸出h(t)。
(2)將信號δ(t)延時τ后,輸出也延時了τ,為h(t-τ)。
(3)將1,2中信號疊加輸入系統(tǒng)后,產(chǎn)生輸出y(t)也進行了一個疊加,輸出等于h(t)+h(t-τ)。
再假如有這樣一個x(t),由很多個δ(t)組成,這個δ(t)不正是沖激函數(shù)嘛。它經(jīng)過系統(tǒng)會輸出什么?
由δ(t)沖激函數(shù)的性質(zhì)
帶入便得到了卷積公式。
所以卷積的意義就是累加唄,得到的結(jié)果y(t)就表示在t這點的沖激響應(yīng)和t之前所有沖激響應(yīng)的”余波“的累加值。(這里累加下限τ=0是因為假設(shè)t《0時沒有信號的,不會對t這點產(chǎn)生影響)
2.二維圖像卷積
上升到二維空間,卷積公式變?yōu)?/p>
以高斯濾波為例,w(x,y)是二維高斯函數(shù)。
圖像f與w卷積,可以同樣理解為圖像經(jīng)過系統(tǒng)w所產(chǎn)生的輸出,而圖像中每個像素點可以理解為一維卷積中的信號δ(t),最終的輸出也是每個像素點沖激響應(yīng)累加的結(jié)果。
累加的上下標(biāo)a,b代表著能對中心像素產(chǎn)生影響的周圍像素的范圍,而影響的大小取決于①它對中心像素的“余波”;②周圍像素點本身的像素值(相當(dāng)于一維中的a0,a1 ,a2 。 。 。 。)。
舉個例子,當(dāng)a,b都為2時,表示以某像素為中心3×3的矩陣內(nèi),所有像素都對此像素有影響。
想象一下這個3×3的矩陣中每個像素上都對高斯濾波器產(chǎn)生了沖激響應(yīng),可以想象成每個像素上有座山,山坡會延伸到周圍像素上,山的高度可以疊加,那中心點像素的山就是最高的了。
那中間山的高度是多少呢? 取決于:
①周圍像素對中心像素的“余波”;
f(x-1,y-1)在中心像素的“余波”為1,f(x-1,y)在中心像素的“余波”為2,f(x-1,y+1)在中心像素的“余波”為1,f(x,y-1)在中心像素的“余波”為2,f(x,y)自己貢獻了4,f(x,y+1)在中心像素的“余波”為2,f(x+1,y-1)在中心像素的“余波”為1,f(x+1,y)在中心像素的“余波”為2,f(x+1,y+1) 在中心像素的“余波”為1。
②周圍像素點本身的像素值
最終山的高度等于∑(某點像素值 × 其對中心點”余波“)。而“余波”不就是所用的模板嗎。
還有一點需要注意,這個模板并不是我們的w,而是將w翻轉(zhuǎn)了180度,方便與相同位置像素對應(yīng)。
由卷積公式得下式,對應(yīng)圖中相同顏色的相乘。
3.FPGA實現(xiàn)
理解了高斯濾波模板的意義,接下來就考慮如何用FPGA來實現(xiàn)了。由于圖像是一個像素一個像素流入FPGA的,所以怎樣將一個個像素流變成3×3的方塊與我們的模板相乘是一個問題。
還好altera ip核中有個shift_ram,可以將數(shù)據(jù)緩存后分行輸出。下圖就比較直觀的展現(xiàn)了它的功能。
所以我們需要將數(shù)據(jù)緩存兩行,每行640個像素,加上當(dāng)前流入的像素,就可以構(gòu)成需要的3×3的矩陣了。
最后行場同步需要打兩拍是由于輸入數(shù)據(jù)的時候數(shù)據(jù)打了一拍,上圖構(gòu)建矩陣時打了一拍,詳見完整代碼。
仿真結(jié)果
可以看出shift_ram在緩存兩行數(shù)據(jù)后,就可以三行數(shù)據(jù)同時輸出。就可以構(gòu)成3×3的矩陣了。
接下來對這個3×3矩陣進行乘上對應(yīng)系數(shù)再累加,便得到濾波后的像素啦。
編輯:jq
-
FPGA
+關(guān)注
關(guān)注
1645文章
22049瀏覽量
618373 -
濾波
+關(guān)注
關(guān)注
10文章
681瀏覽量
57305 -
數(shù)據(jù)
+關(guān)注
關(guān)注
8文章
7256瀏覽量
91855 -
代碼
+關(guān)注
關(guān)注
30文章
4900瀏覽量
70731
原文標(biāo)題:基于FPGA的圖像高斯濾波
文章出處:【微信號:zhuyandz,微信公眾號:FPGA之家】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
基于Matlab與FPGA的雙邊濾波算法實現(xiàn)

基于FPGA的圖像邊緣檢測設(shè)計

FPGA圖像處理基礎(chǔ)----實現(xiàn)緩存卷積窗口

基于FPGA實現(xiàn)圖像直方圖設(shè)計

評論