萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 軟體知識 >  >> 影像處理 >> Photoshop 教學 >> Photoshop 入門教學

圖像處理核心算法解析:高斯模糊原理、權重矩陣構建與邊界處理實現

高斯模糊是圖像處理、計算機視覺、深度學習預處理中最基礎也最關鍵的數據平滑算法。本文從數學原理出發,推導二維高斯函數、構建離散權重矩陣、演示像素級計算流程,並討論邊界處理策略,為理解濾鏡底層邏輯、編寫自定義濾鏡/Shader 提供理論基石。

一、模糊的本質:鄰域加權平均

「模糊」在數值層面即平滑化:每個像素新值 = 鄰域像素加權平均。若採用簡單平均(盒子濾波),權重均等,會產生方塊狀伪影。自然界光學擴散呈現鐘形分佈:中心權重最大,隨距離呈指數衰減,這正是正態分佈(高斯分佈)的特性。

二、正態分佈權重:從一維到二維

1. 一維高斯函數

$$G(x) = \frac{1}{\sigma\sqrt{2\pi}} e^{-\frac{(x-\mu)^2}{2\sigma^2}}$$

  • $\mu$:均值,中心點設為原點 $\Rightarrow \mu=0$。
  • $\sigma$:標準差,控制模糊半徑/擴散程度。$\sigma$ 越大,曲線越平緩,模糊越強。

2. 二維高斯函數(各向同性)

利用獨立性:$G(x,y) = G(x) \cdot G(y)$

$$G(x,y) = \frac{1}{2\pi\sigma^2} e^{-\frac{x^2+y^2}{2\sigma^2}}$$

等高線為同心圓,中心峰值最高,四周漸弱。

三、離散權重矩陣構建(核 Kernel 生成)

  1. 確定核半徑:通常取 $r = \lceil 3\sigma \rceil$(覆蓋 99.7% 概率質量)。$\sigma=1.5 \Rightarrow r=5$(11×11 核);實時渲染常用 $r=1$(3×3)或 $r=2$(5×5)近似。
  2. 計算離散坐標權重:以中心 (0,0) 為原點,遍歷 $[-r, r] \times [-r, r]$ 整數坐標,代入二維高斯函數得原始權重 $w_{ij}$。
  3. 歸一化:$\sum w_{ij} = 1$。將所有 $w_{ij}$ 除以總和 $W$。
    例:$\sigma=1.5, r=1$ (3×3 核) 原始權重和 = 0.4787147 → 歸一化後矩陣:

四、卷積計算流程

  1. 對每個像素 $(x,y)$,以其為中心覆蓋核矩陣。
  2. 核內每個鄰域像素值 $P_{ij}$ 乘以對應歸一化權重 $w_{ij}$。
  3. 加權和 $\sum P_{ij} w_{ij}$ 作為輸出像素值。
    演示(灰度 0-255):
  4. 彩色圖像:對 R/G/B 三通道獨立卷積,或轉 YCbCr 僅模糊 Y 通道保色彩銳度。

五、邊界處理策略

邊緣像素鄰域不完整,主流策略:

  • 複製邊緣:將邊緣像素值向外延展填充虛擬鄰域(最常用,OpenCV `BORDER_REPLICATE`)。
  • 鏡像反射:以邊緣為軸鏡像複製(`BORDER_REFLECT`),減少邊緣伪影。
  • 常數填充:填 0 或指定顏色(`BORDER_CONSTANT`),適合透明背景合成。
  • 循環/周期性:對面邊緣對應像素填充(`BORDER_WRAP`),適用於無縫紋理。

PS/GPU 實現常採用分離式卷積:二維高斯核可分解為兩次一維卷積(先橫向後縱向),複雜度從 $O(n^2)$ 降為 $O(2n)$,大幅提速。

六、工程落地要點

  • 定點數優化:移動端/嵌入式無 FPU 時,權重乘以 256/1024 轉整數,卷積後右移位還原。
  • 近似算法:多次盒子濾波疊加逼近高斯(3 次盒濾 ≈ 高斯),無需指數運算。
  • 可分離性驗證:確保核矩陣秩為 1(SVD 分解奇異值僅首個非零),才能安全分離卷積。
  • Sigma 與半徑映射表:預計算常用 $\sigma$ 對應核矩陣存入查找表,避免運行時 `exp()` 開銷。

七、參考文獻

  • Gonzalez & Woods, Digital Image Processing, Ch.3 Spatial Filtering.
  • Intel IPP / OpenCV `GaussianBlur` 實現源碼。
  • “How to program a Gaussian Blur without using 3rd party libraries” (StackOverflow/Shadertoy 社區實現)。
copyright © 萬盛學電腦網 all rights reserved