銳化
銳化即在圖像上增強顯示圖像内容的邊緣成分。
根據邊緣成分的計算方法,常用的方法有高斯濾波銳化和拉普拉斯濾波銳化。
高斯濾波銳化将原始圖像 x 減去高斯濾波(相當于低通濾波)後得到的平滑圖像 gaussian(x),計算得到邊緣圖像 z:
z = x − g a u s s i a n ( x ) z=x-gaussian(x) z=x−gaussian(x)
拉普拉斯濾波銳化直接使用拉普拉斯濾波(相當于高通濾波)得到邊緣成分,典型的拉普拉斯濾波系數如下:
( 0 − 1 0 − 1 4 − 1 0 − 1 0 ) \left( \begin{array} {ccc} 0&-1&0\\ -1&4&-1\\ 0&-1&0 \end{array} \right) ⎝⎛0−10−14−10−10⎠⎞
( − 1 − 1 − 1 − 1 8 − 1 − 1 − 1 − 1 ) \left( \begin{array} {ccc} -1&-1&-1\\ -1&8&-1\\ -1&-1&-1 \end{array} \right) ⎝⎛−1−1−1−18−1−1−1−1⎠⎞
銳化圖像的計算公式如下:
y = { x + a × z ∣ z ∣ > T x ∣ z ∣ ≤ T y=\begin{cases} x+a\times z & \lvert z\rvert>T\\ x&\lvert z\rvert\leq T \end{cases} y={x+a×zx∣z∣>T∣z∣≤T
上式中 a 值為銳化強度,一般選擇範圍是 0 ≤ a ≤ 1.5 0\leq a \leq 1.5 0≤a≤1.5,為防止出現過度銳化,可以将 a 值取為0.5(經驗值,根據圖像場景調節)。
上式中 T 值為銳化門限,控制算法隻對邊緣強度大于 T 值的部分進行銳化,對于平滑區域保持不變,像素位寬為 8 的情況下,可以将 T 值取為8(經驗值,根據圖像場景調節)。
使用灰階圖像,以 3 × 3 3\times 3 3×3 的高斯濾波器為例,說明 FPGA 實作方法,典型的高斯濾波系數如下:
1 16 × ( 1 2 1 2 4 2 1 2 1 ) \frac{1}{16}\times\left( \begin{array} {ccc} 1&2&1\\ 2&4&2\\ 1&2&1 \end{array} \right) 161×⎝⎛121242121⎠⎞
系數矩陣中心的 4 對應的是目前像素點的權重值,則 z 值計算對應的二維卷積核:
1 16 × ( − 1 − 2 − 1 − 2 ( 16 − 4 ) − 2 − 1 − 2 − 1 ) \frac{1}{16}\times\left( \begin{array} {ccc} -1&-2&-1\\ -2&(16-4)&-2\\ -1&-2&-1 \end{array} \right) 161×⎝⎛−1−2−1−2(16−4)−2−1−2−1⎠⎞
在計算 z 值時,即可以使用上方公式直接用二維卷積計算,也可以根據其原理先計算 gaussian(x),再計算 x-gaussian(x)。濾波系數中 2、4 值的乘法可以分别通過低位補 1 位 0 和低位補 2 位 0 的方法實作,第一種方法濾波系數中心的 12,如果不使用乘法器,則需要分解為 × 4 \times 4 ×4和 × 8 \times 8 ×8,再将 2 個積值相加,計算麻煩;先濾波再計算減法的方法則更為簡便。
PS:在其它卷積算法中,如果卷積系數比較複雜(不能使用加減或者移位計算),必須使用乘法(甚至除法)的情況下,将卷積計算前後其它的算法合并至卷積系數,用一次卷積完成多個計算步驟,可以減少計算量。
在後續的銳化強度計算中,由于 a=0.5,則 × a \times a ×a 的計算可以用截去低位的辦法實作除以 2。
具體的 sysgen 設計如下:
輸入圖像資料首先進入 3 × 3 3\times 3 3×3二維緩沖:
用移位方法實作卷積系數的乘法計算:
将卷積系數乘法結果相加,并用截去低位的辦法實作 × 1 16 \times\frac{1}{16} ×161:
銳化計算:
上圖中紅色高亮區域中實作 a × z a\times z a×z的計算,但是将 a 值通過低位補 0 的方式設定為 4,用于增強視覺效果。
如果使用前文所述的 a 值為 0.5 的邊緣增強系數,則使用如下所示的子產品:
銳化門限控制,T 值為 8,由于是有符号整數補碼的絕對值比較,是以分别比較 +8與 -8,再用 or 合并比較結果:
高斯濾波後完整的銳化設計:
仿真結果如下。
試驗圖檔來源于:https://unsplash.com/
輸入原始圖像:
銳化,參數 a=1,T=0:
銳化,參數 a=16,T=0(為加強銳化效果選擇該參數):
最後附上拉普拉斯濾波銳化的輸出圖像,參數 a=1,T=0,供參考比較: