圖像處理-Ch2-空間域的圖像增強

Ch2 空間域的圖像增強

文章目錄

  • Ch2 空間域的圖像增強
    • Background
    • 空間濾波(Spatial Filtering)
      • 線性移不變系統與卷積
        • 強無敵例子說明
      • 線性空間濾波(Linear Spatial Filtering)
        • Correlation v.s. Convolution
      • 非線性空間濾波(Nonlinear Spatial Filtering)
        • 銳化(高通)空間濾波器(Sharpening Spatial Filters)
          • 拉普拉斯濾波器(Laplacian Filter)
        • 鈍化掩蔽和高提升濾波(Unsharp masking and high-boost filtering)

The principal objective of enhancement is to proce s s s an image so that the result is more suitable than the original image for a specific application.

圖像增強的目的:使圖像更適于特定應用。

圖像增強分為兩大類:

  • 空間域方法:對圖像中像素直接操作。
  • 頻率域方法:對圖像傅里葉變換進行修改。

Background

空間域處理數學表達:
g ( x , y ) = T [ f ( x , y ) ] g(x,y)=T[f(x,y)] g(x,y)=T[f(x,y)]

  • f ( x , y ) f(x,y) f(x,y): 輸入圖像
  • g ( x , y ) g(x,y) g(x,y): 輸出圖像
  • T T T: an operator on f f f, defined over some neighborhood of ( x , y ) (x, y) (x,y). 在 ( x , y ) (x,y) (x,y)一個鄰域上定義的對 f f f的算子。

Q: 算子?鄰域?

A: 算子可應用于單幅圖像的pixels or 一組圖像的 pixels.

鄰域一般是 ( x , y ) (x,y) (x,y)周邊的8個格子( 3 × 3 , ( x , y ) 3\times 3, (x,y) 3×3,(x,y)處于中心)、可能還有矩形或是圓形。

最簡單的 T T T是鄰域 1 × 1 1\times 1 1×1的(也就是只有本身 ( x , y ) (x,y) (x,y)),稱為灰度變換函數。
s = T ( r ) s=T(r) s=T(r)
s , r s,r s,r分別表示 g , f g,f g,f在任意點 ( x , y ) (x,y) (x,y)處的灰度。

灰度變換函數(Gray-level Transformation)

對數變換(Logarithmic)

s = c log ? ( 1 + r ) s=c\log(1+r) s=clog(1+r)

c c c是常數, r ≥ 0 r\ge 0 r0.

對數變換的作用

  • 動態范圍壓縮:當輸入圖像的灰度值范圍非常寬(例如 0 到 10610^6106),直接顯示會丟失暗部細節。通過對數變換,可以將寬動態范圍壓縮到更可管理的范圍。
  • 細節增強:低強度值區域的細節被拉伸并增強,因此在頻譜圖像、醫學圖像中常用。

對數變換的曲線特性:

  • 對數變換的形狀固定。此變換的形狀類似于 γ \gamma γ曲線,兩個尺度上的低值均設置為 0,高值均設置為 1。
  • r r r 較小時,輸出 s s s增長較快(細節增強)。
  • r r r 較大時,輸出 s s s 增長減緩(壓縮動態范圍)。
  • Gamma 校正 不同,對數變換的曲線形狀不可調。
冪律變換(Power-Law)

s = c r γ s=cr^{\gamma} s=crγ

其中, c , γ c,\gamma c,γ是正常數(positive constants)。

image-20241220104929919

分段線性變換函數(Piecewise-Linear)
對比度拉伸(Contrast-Stretching)

對比度拉伸是一種用于增強圖像對比度的強度變換方法。通過對灰度值的拉伸,使暗區域更暗、亮區域更亮,從而增強圖像的視覺效果。

對比度拉伸的公式可以定義為:
s = T ( r ) = 1 1 + ( m r ) E s = T(r) = \frac{1}{1 + \left(\frac{m}{r}\right)^E} s=T(r)=1+(rm?)E1?

  • s s s: 輸出像素的灰度值。
  • r r r: 輸入像素的灰度值。
  • m m m: 輸入圖像灰度值的中點(灰度范圍的閾值)。
  • E E E: 函數的冪次,用于控制拉伸的坡度(陡峭程度)。

對比度拉伸的作用:

  • 增強圖像細節:使圖像中灰度分布更加均勻,提升對比度。
  • 突出某些特定灰度值區域:通過調整參數 m m m E E E,可以針對性地增強某些灰度值范圍。
  • 解決低對比度問題:例如,在過暗或過亮的圖像中,灰度值集中在某一小范圍內時,拉伸可以增加動態范圍,提升視覺效果。
灰度級分層(Gray-level Slicing)

突出圖像中的特定灰度區間:

  • method1:(二值圖像) 將感興趣范圍內的所有灰度值顯示為一個值、將其他所有灰度值顯示為另外一個值。

  • method2:基于下圖中的變換,使期望的灰度范圍變亮(/變暗),但保持圖像中其他的灰度級不變。

    image-20241220105449485

比特平面分層(Bit-plane slicing): 像素值是由比特組成的整數。8比特圖像可以視為8個1比特平面組成,其中plane 1中包含圖像中所有圖像的最低有效比特、plane 8包含所有像素的最高有效比特。

image-20241220111120761

直方圖處理(Histogram Processing)

圖像的直方圖是一種統計工具,用來描述圖像中像素強度(灰度值)的分布情況。

f f f的非歸一化直方圖定義為:
h ( r k ) = n k , k = 0 , 1 , … , L ? 1 h(r_k)=n_k,k=0,1,\dots,L-1 h(rk?)=nk?,k=0,1,,L?1

其中, r k r_k rk?表示一副 L L L級灰度數字圖像 f ( x , y ) f(x,y) f(x,y)的灰度, n k n_k nk?表示 f f f中灰度為 r k r_k rk?的像素的數量,并且細分的灰度級稱為直方圖容器。

f f f的歸一化直方圖定義為:
p ( r k ) = h ( r k ) M N = n k M N p(r_k)=\frac{h(r_k)}{MN}=\frac{n_k}{MN} p(rk?)=MNh(rk?)?=MNnk??
其中 M , N M,N M,N分別是圖像的行數和列數。(這是書上給出的公式)

或者也可以寫成(PPT中給出的公式):
p ( r k ) = h ( r k ) N = n k N N = ∑ k = 0 L ? 1 n k , k = 0 , 1 , … , L ? 1 p(r_k)=\frac{h(r_k)}{N}=\frac{n_k}{N}\\ N=\sum^{L-1}_{k=0}n_k,\ k=0,1,\dots,L-1 p(rk?)=Nh(rk?)?=Nnk??N=k=0L?1?nk?,?k=0,1,,L?1
殊途同歸。 p ( r k ) p(r_k) p(rk?)是對圖像中出現的灰度級 r k r_k rk?的概率的估計。對k的所有值, p ( r k ) p(r_k) p(rk?)的和總是1.

直方圖均衡化(Histogram Equalization)

直方圖均衡化是一種自動調整圖像亮度分布的方法,通過重新分配像素灰度值,使輸出圖像的灰度直方圖盡可能接近均勻分布,從而增強圖像的整體對比度。

假設灰度值最初是連續的,令變量 r r r表示待處理圖像的灰度。 r = [ 0 , L ? 1 ] r=[0,L-1] r=[0,L?1], r = 0 r=0 r=0黑色, r = L ? 1 r=L-1 r=L?1白色。對于這些滿足條件的 r r r,我們關注如下的灰度映射:
s = T ( r ) , 0 ≤ r ≤ L ? 1 s=T(r),\quad 0\le r\le L-1 s=T(r),0rL?1
對于輸入圖像中的給定灰度值 r r r, 它將產生一個輸出灰度值 s s s。假設:

  • T ( r ) T(r) T(r)在區間 [ 0 , L ? 1 ] [0,L-1] [0,L?1]上是一個單調遞增函數.
  • 0 ≤ r ≤ L ? 1 0\le r\le L-1 0rL?1, 有 0 ≤ T ( r ) ≤ L ? 1 0\le T(r)\le L-1 0T(r)L?1.

假使我們想從 s s s逆推回 r r r, 那么就是 T T T的逆變換。如果想這個倒推成立,那么就需要是嚴格遞增函數,不然自變量與因變量就不是一一對應的關系

image-20241220165317323

直方圖均衡化基于概率密度函數(PDF:probability density function),產生一個隨機變量。

連續變量 r , s r,s r,s

p s ( s ) = p r ( r ) ∣ d r d s ∣ = p r ( r ) ∣ 1 ( L ? 1 ) p r ( r ) = 1 L ? 1 , 0 ≤ s ≤ L ? 1 p_s(s)=p_r(r)\left\vert\frac{dr}{ds}\right\vert=p_r(r)\vert\frac 1 {(L-1)p_r(r)}=\frac 1{L-1},\quad 0\le s\le L-1 ps?(s)=pr?(r) ?dsdr? ?=pr?(r)(L?1)pr?(r)1?=L?11?,0sL?1

其中 p r ( r ) , p s ( s ) p_r(r), p_s(s) pr?(r),ps?(s)分別表示兩幅不同圖像中灰度值 r , s r,s r,s的概率密度函數(PDF). p p p的下標表明 p r , p s p_r,p_s pr?,ps?是不同的函數。可見 p s ( s ) p_s(s) ps?(s)是均勻(uniform)PDF, T ( r ) T(r) T(r)取決于 p r ( r ) p_r(r) pr?(r), 但 p s ( s ) p_s(s) ps?(s)永遠是均勻的。

**概率論基本結論:**若已知 p r ( r ) , T ( r ) p_r(r),T(r) pr?(r),T(r), 且 T ( r ) T(r) T(r)是連續的且在感興趣的值域上是可微的,則變換侯的變量 s s s的PDF是:
p s ( s ) = p r ( r ) ∣ d r d s ∣ p_s(s)=p_r(r)\left\vert\frac{dr}{ds}\right\vert ps?(s)=pr?(r) ?dsdr? ?
累計分布函數(CDF: cumulative distribution function):由于PDF總為正,且函數的積分是函數下方的面積,因此可以證明 s = T ( r ) s=T(r) s=T(r)是單調遞增函數。
s = T ( r ) = ∫ 0 r p r ( w ) d w s=T(r)=\int^r_0 p_r(w)dw s=T(r)=0r?pr?(w)dw
計算微分:
d s d r = d T ( r ) d r = d [ ∫ 0 r p r ( w ) d w ] d r = p r ( r ) p s ( s ) = p r ( r ) ∣ d r d s ∣ = p r ( r ) ? 1 p r ( r ) = 1 , 0 ≤ s ≤ 1 \frac{ds}{dr}=\frac{dT(r)}{dr}=\frac{d\left[\int^r_0 p_r(w)dw\right]}{dr}=p_r(r)\\ p_s(s)=p_r(r)\left\vert\frac{dr}{ds}\right\vert=p_r(r)*\frac{1}{p_r(r)}=1,\quad 0\le s\le 1 drds?=drdT(r)?=drd[0r?pr?(w)dw]?=pr?(r)ps?(s)=pr?(r) ?dsdr? ?=pr?(r)?pr?(r)1?=1,0s1
假如說 0 ≤ s ≤ L ? 1 0\le s\le L-1 0sL?1,則有:
p s ( s ) = p r ( r ) ∣ d r d s ∣ = p r ( r ) ? 1 ( L ? 1 ) p r ( r ) = 1 L ? 1 , 0 ≤ s ≤ L ? 1 p_s(s)=p_r(r)\left\vert\frac{dr}{ds}\right\vert=p_r(r)*\frac{1}{(L-1)p_r(r)}=\frac 1 {L-1}, \quad 0\le s\le L-1 ps?(s)=pr?(r) ?dsdr? ?=pr?(r)?(L?1)pr?(r)1?=L?11?,0sL?1

離散變量 r , s r,s r,s

在離散的條件下有, 下列數學表達。需要注意,第一個是書上給出、第二個是PPT中給出,二者沒什么大的差別。灰度級 r k r_k rk?在一副圖像中出現的概率是:
p r ( r k ) = h ( r k ) M N = n k M N p r ( r k ) = n k N , k = 0 , 1 , … , L ? 1 p_r(r_k)=\frac{h(r_k)}{MN}=\frac{n_k}{MN} \\ p_r(r_k)=\frac{n_k}{N},\quad k=0,1,\dots,L-1 pr?(rk?)=MNh(rk?)?=MNnk??pr?(rk?)=Nnk??,k=0,1,,L?1
灰度映射函數是:
s = T ( r k ) = ∑ j ? 0 k p r ( r j ) = ∑ j ? 0 k n k M N s = T ( r k ) = ∑ j ? 0 k p r ( r j ) = ∑ j = 0 k n j N s=T(r_k)=\sum^k_{j-0}p_r(r_j)=\sum^k_{j-0}\frac{n_k}{MN}\\ s=T(r_k)=\sum^k_{j-0}p_r(r_j)=\sum^k_{j=0}\frac{n_j}{N} s=T(rk?)=j?0k?pr?(rj?)=j?0k?MNnk??s=T(rk?)=j?0k?pr?(rj?)=j=0k?Nnj??
使用這個函數可以將輸入圖像中灰度級為 r k r_k rk?的每個像素映射到輸出圖像中灰度級為 s k s_k sk?的對應像素,這稱為直方圖均衡化/直方圖線性化變換。

直方圖匹配(Histogram Matching)

直方圖均衡化產生一個變換函數,試圖生成一副具有均勻直方圖的輸出圖像。但有時候不適用,有時候需要規定待處理圖像的直方圖形狀。用于生成具有規定直方圖圖像的方法,稱為直方圖匹配或是直方圖均衡化。

r , z r,z r,z是PDF p r ( r ) , p z ( Z ) p_r(r),p_z(Z) pr?(r),pz?(Z)的隨機變量。 r , z r,z r,z分別表示輸入圖像和輸出圖像的灰度級。 p z ( z ) p_z(z) pz?(z)是規定的PDF,是我們希望輸出圖像具有的。

計算直方圖匹配三步走

  1. 計算輸入圖像的直方圖 p r ( r ) p_r(r) pr?(r), 得到 s k s_k sk?
  2. 計算 G ( z q ) = ( L ? 1 ) ∑ i = 0 q p z ( z i ) G(z_q)=(L-1)\sum^q_{i=0}p_z(z_i) G(zq?)=(L?1)i=0q?pz?(zi?) p z ( z ) p_z(z) pz?(z)是規定直方圖的所有值。
  3. 計算 G ( z q ) = s k G(z_q)=s_k G(zq?)=sk?, 求 G ? 1 G^{-1} G?1, 找到對應的 z q z_q zq?的對應值,匹配,形成直方圖規定化后的圖像。
連續變量 r , s , z r,s,z r,s,z

s s s是一個具有如下性質的隨機變量:
s = T ( r ) = ( L ? 1 ) ∫ 0 r p r ( w ) d w s=T(r)=(L-1)\int^r_0p_r(w)dw s=T(r)=(L?1)0r?pr?(w)dw
定義關于變量 z z z的一個函數 G G G, 它具有如下的性質:
G ( z ) = ( L ? 1 ) ∫ 0 z p z ( v ) d v = s G(z)=(L-1)\int^z_0p_z(v)dv=s G(z)=(L?1)0z?pz?(v)dv=s
由這兩個公式可知: G ( z ) = s = T ( r ) G(z)=s=T(r) G(z)=s=T(r), 因此 z z z必定滿足條件:
z = G ? 1 ( s ) = G ? 1 [ T ( r ) ] z=G^{-1}(s)=G^{-1}[T(r)] z=G?1(s)=G?1[T(r)]
使用輸入圖像算出 p r ( r ) p_r(r) pr?(r)后,就可以得到 s s s, 有了 s s s, 就能得到 p z ( z ) p_z(z) pz?(z)

離散變量 r , s , z r,s,z r,s,z

s k = T ( r k ) = ( L ? 1 ) ∑ j = 0 k p r ( r j ) , k = 0 , 1 , … , L ? 1 G ( z q ) = ( L ? 1 ) ∑ i = 0 q p z ( z i ) = s k z q = G ? 1 ( s k ) s_k=T(r_k)=(L-1)\sum^k_{j=0}p_r(r_j),\quad k=0,1,\dots,L-1\\ G(z_q)=(L-1)\sum^q_{i=0}p_z(z_i)=s_k\\ z_q=G^{-1}(s_k) sk?=T(rk?)=(L?1)j=0k?pr?(rj?),k=0,1,,L?1G(zq?)=(L?1)i=0q?pz?(zi?)=sk?zq?=G?1(sk?)

QA

Q: 離散情況下,通常直方圖均衡并不能產生絕對平坦的輸出直方圖?

A:–

  • 離散累計映射并不能保證該映射是單調遞增的,只能保證是單調不減的;
  • 累計映射的輸出值需要轉化成整型的灰度級,轉化的過程中出現多對一的關系,這是造成輸出直方圖不平坦的重要原因。

直方圖均衡只能使用一次,多次使用沒有效果;直方圖均衡時直方圖匹配的一個特例。

空間濾波(Spatial Filtering)

  • 在空間濾波(相對于頻域濾波)中,輸出圖像是通過對輸入圖像的像素進行簡單計算直接計算得出的。
  • 空間濾波可以是線性的,也可以是非線性的。
  • 對于每個輸出像素,計算中都會用到輸入像素的某個鄰域。(空間濾波通過把每個pixel的值替換為該pixel及其鄰域的函數值來修改圖像)

線性移不變系統與卷積

線性系統 H H H: 滿足加法和數乘=線性

  • 可疊加性: H [ f 1 ( x , y ) + f 2 ( x , y ) ] = H [ f 1 ( x , y ) ] + H [ f 2 ( x , y ) ] H[f_1(x,y)+f_2(x,y)]=H[f_1(x,y)]+H[f_2(x,y)] H[f1?(x,y)+f2?(x,y)]=H[f1?(x,y)]+H[f2?(x,y)]
  • 伸縮性: H [ a f ( x , y ) ] = a H [ f ( x , y ) ] H[af(x,y)]=aH[f(x,y)] H[af(x,y)]=aH[f(x,y)]

移不變系統 H H H: 規律不會隨著移動進行改變。比如時不變:不會隨著時間改變而改變。

  • 移不變性: H [ f ( x , y ) ] = g ( x , y ) , H [ f ( x ? a , y ? b ) ] = g ( x ? a , y ? b ) H[f(x,y)]=g(x,y),H[f(x-a,y-b)]=g(x-a,y-b) H[f(x,y)]=g(x,y),H[f(x?a,y?b)]=g(x?a,y?b)

對一個線性移不變系統而言:它的單位脈沖響應=系統的響應特性。

即,只要知道了這個系統的單位脈沖響應,我就能推斷處這個系統對任何輸入的響應。

卷積時用于計算線性移不變系統輸入與輸出的數學模型:如果知道該系統的單位脈沖響應 h ( x , y ) h(x,y) h(x,y),則該系統的輸入 f ( x , y ) f(x,y) f(x,y)與輸出 g ( x , y ) g(x,y) g(x,y)之間可以表示為: g ( x , y ) = f ( x , y ) ? h ( x , y ) g(x,y)=f(x,y)* h(x,y) g(x,y)=f(x,y)?h(x,y).

強無敵例子說明

首先
z [ t ] = x [ t ] ? y [ t ] = [ 1 ] ? [ 2 0 ? 2 ] = [ 2 0 ? 2 ] z[t] = x[t] * y[t] = [1] * [2 \ 0 \ -2] = [2 \ 0 \ -2] z[t]=x[t]?y[t]=[1]?[2?0??2]=[2?0??2]
一般地當輸入 (單位脈沖響應$)
x [ t ] = [ 1 ] , x[t] = [1], x[t]=[1],

z [ t ] = x [ t ] ? y [ t ] = y [ t ] z[t] = x[t] * y[t] = y[t] z[t]=x[t]?y[t]=y[t]

現在有輸入:
x [ t ] = [ 1 2 3 ] = 1 ? [ 1 0 0 ] + 2 ? [ 0 1 0 ] + 3 ? [ 0 0 1 ] x[t] = [1 \ 2 \ 3] = 1 \cdot [1 \ 0 \ 0] + 2 \cdot [0 \ 1 \ 0] + 3 \cdot [0 \ 0 \ 1] x[t]=[1?2?3]=1?[1?0?0]+2?[0?1?0]+3?[0?0?1]

信號響應
x 0 = 1 ? [ 1 0 0 ] x_0 = 1 \cdot [1 \ 0 \ 0] x0?=1?[1?0?0] z 0 = [ 1 ? 2 1 ? 0 1 ? ( ? 2 ) 0 0 0 ] z_0 = [1 \cdot 2 \ 1 \cdot 0 \ 1 \cdot (-2) \ 0 \ 0 \ 0] z0?=[1?2?1?0?1?(?2)?0?0?0]
x 1 = 2 ? [ 0 1 0 ] x_1 = 2 \cdot [0 \ 1 \ 0] x1?=2?[0?1?0] z 1 = [ 0 2 ? 2 2 ? 0 2 ? ( ? 2 ) 0 ] z_1 = [0 \ 2 \cdot 2 \ 2 \cdot 0 \ 2 \cdot (-2) \ 0] z1?=[0?2?2?2?0?2?(?2)?0]
x 2 = 3 ? [ 0 0 1 ] x_2 = 3 \cdot [0 \ 0 \ 1] x2?=3?[0?0?1] z 2 = [ 0 0 3 ? 2 3 ? 0 3 ? ( ? 2 ) ] z_2 = [0 \ 0 \ 3 \cdot 2 \ 3 \cdot 0 \ 3 \cdot (-2)] z2?=[0?0?3?2?3?0?3?(?2)]

當我們把信號 x 0 , x 1 , x 2 x_0, x_1, x_2 x0?,x1?,x2? 疊加起來刺激系統時,有響應變成對應響應的疊加:
z [ t ] = z 0 + z 1 + z 2 = [ 2 , 4 , 4 , ? 4 , ? 6 ] z[t] = z_0 + z_1 + z_2 = [2, 4, 4, -4, -6] z[t]=z0?+z1?+z2?=[2,4,4,?4,?6]

線性空間濾波(Linear Spatial Filtering)

對一幅圖像 f M × N f_{M\times N} fM×N?, 大小為 m × n m\times n m×n的線性濾波器掩碼為:
g ( x , y ) = ∑ s = ? a a ∑ t = ? b b w ( s , t ) f ( x + s , y + t ) a = m ? 1 2 , b = n ? 1 2 g(x,y)=\sum^a_{s=-a}\sum^b_{t=-b}w(s,t)f(x+s,y+t)\\ a=\frac{m-1}{2},b=\frac{n-1}2 g(x,y)=s=?aa?t=?bb?w(s,t)f(x+s,y+t)a=2m?1?,b=2n?1?
上式稱為相關。Filter masks(濾波器掩碼)有時也叫做卷積掩碼/卷積核。

Correlation v.s. Convolution
  • 相關運算:在圖像上移動核的中心,并且在每個位置計算乘積之和。
    ( f ? g ) ( τ ) = ∫ ? ∞ ∞ f ? ( t ) g ( t + τ ) ( f ? g ) [ n ] = ∑ m = ? ∞ ∞ f [ m ] g [ m + n ] \begin{align} (f\star g)(\tau)&=\int^\infty_{-\infty}f^*(t)g(t+\tau)\\ (f\star g)[n]&=\sum^{\infty}_{m=-\infty}f[m]g[m+n] \end{align} (f?g)(τ)(f?g)[n]?=??f?(t)g(t+τ)=m=??f[m]g[m+n]??

  • 卷積運算:將相關運算的核旋轉180°。
    ( f ? g ) ( τ ) = ∫ ? ∞ ∞ f ( t ) g ( ? t + τ ) ( f ? g ) [ n ] = ∑ m = ? ∞ ∞ f [ m ] g [ ? m + n ] \begin{align} (f* g)(\tau)&=\int^\infty_{-\infty}f(t)g(-t+\tau)\\ (f* g)[n]&=\sum^{\infty}_{m=-\infty}f[m]g[-m+n] \end{align} (f?g)(τ)(f?g)[n]?=??f(t)g(?t+τ)=m=??f[m]g[?m+n]??

image-20241220224250812

對于這個例子,

  • “same” correlation res: 08242100
  • “same” convolution res:01242800

image-20241220233119440

書中給出的二維定義:
convolution: ( w ? f ) ( x , y ) = ∑ s = ? a a ∑ t = ? b b w ( s , t ) f ( x ? s , y ? t ) correlation: ( w ? f ) ( x , y ) = ∑ s = ? a a ∑ t = ? b b w ( s , t ) f ( x + s , y + t ) \text{convolution:}(w*f)(x,y)=\sum^a_{s=-a}\sum^b_{t=-b} w(s,t)f(x-s,y-t)\\ \text{correlation:}(w\star f)(x,y)=\sum^a_{s=-a}\sum^b_{t=-b} w(s,t)f(x+s,y+t) convolution:(w?f)(x,y)=s=?aa?t=?bb?w(s,t)f(x?s,y?t)correlation:(w?f)(x,y)=s=?aa?t=?bb?w(s,t)f(x+s,y+t)

性質卷積(Convolution)相關(Correlation)
交換性 f ? g = g ? f f*g=g*f f?g=g?f
結合性 f ? ( g ? h ) = ( f ? g ) ? h f*(g*h)=(f*g)*h f?(g?h)=(f?g)?h
分配性 f ? ( g + h ) = f ? g + f ? h f*(g+h)=f*g+f*h f?(g+h)=f?g+f?h f ? ( g + h ) = f ? g + f ? h f\star (g+h)=f\star g+f\star h f?(g+h)=f?g+f?h

平滑核:讓相鄰的像素越來越像、求均值。

  • 盒式核(box kernel):直接求均值。
  • 高斯核(Gaussian kernel):中間的均值最大,更加考慮自己,所以平滑作用沒有盒式核那么大。

image-20241220233253937

非線性空間濾波(Nonlinear Spatial Filtering)

  • 非線性空間過濾通常也使用鄰域,但會使用一些其他數學運算。例如,讓每個中心點的響應等于其鄰域中的最大像素值是一種非線性過濾操作。
  • 另一個基本區別是,掩碼的概念在非線性處理中并不那么普遍。

給定一個大小為 M × N M\times N M×N的輸入圖像 f f f和一個大小為 m × n m\times n m×n的鄰域,函數 colfilt 生成一個最大大小為 m n × M N mn × MN mn×MN 的矩陣,稱為 A: 每列對應于以圖像中某個位置為中心的鄰域所包含的像素。

銳化(高通)空間濾波器(Sharpening Spatial Filters)

平滑稱為低通濾波、銳化稱為高通濾波。就是圖像的邊緣處強度發生較大變化。

  • 銳化目的:是突顯圖像中的精細細節或增強模糊的細節。
  • 銳化通常通過空間微分來實現。

數字函數的導數以差分/差值的形式定義。

對于一階導數,我們要求它必須滿足:(如 Sobel 算子,適合邊緣檢測)
? f ? x = f ( x + 1 ) ? f ( x ) \frac{\partial f}{\partial x}=f(x+1)-f(x) ?x?f?=f(x+1)?f(x)

  1. 在平坦段(灰度值恒定的區域)必須為零 。

  2. 在灰度階躍或斜坡的開始處必須非零。

  3. 沿斜坡必須非零 。

    sobel算子

對于二階導數,我們要求它必須滿足:(如 Laplacian 算子,可以增強圖像細節,但可能放大噪聲。)
? 2 f ? x 2 = f ( x + 1 ) + f ( x ? 1 ) ? 2 f ( x ) \frac{\partial^2 f}{\partial x^2}=f(x+1)+f(x-1)-2f(x) ?x2?2f?=f(x+1)+f(x?1)?2f(x)

  1. 在平坦段(灰度值恒定的區域)必須為零。
  2. 在灰度階躍或斜坡的開始和結束處必須非零。
  3. 沿斜率恒定的斜坡必須為零

image-20241220234426807

(a) 圖像中水平掃描線的一段,顯示斜坡和階梯邊緣以及恒定段。
(b) 掃描線及其導數的值。
? 導數圖,顯示零交叉。在 (a) 和 ? 中,為了便于視覺顯示,各點用虛線連接起來。

從這個圖中,我們可以看到:

  1. 一階導數:有一個比較突出的值:0 5 0
  2. 二階導數:必過0點:0 5 -5 0
拉普拉斯濾波器(Laplacian Filter)

最簡單的各向同性導數算子(核)是拉普拉斯,對于兩個變量的函數圖像 d ( x , y ) d(x,y) d(x,y), 它定義為:
? 2 f ? x 2 = f ( x + 1 , y ) + f ( x ? 1 , y ) ? 2 f ( x , y ) ? 2 f ? y 2 = f ( x , y + 1 ) + f ( x , y ? 1 ) ? 2 f ( x , y ) ? 2 f = ? 2 f ? x 2 + ? 2 f ? y 2 = [ f ( x + 1 , y ) + f ( x ? 1 , y ) + f ( x , y + 1 ) + f ( x , y ? 1 ) ] ? 4 f ( x , y ) \begin{align} \frac{\partial^2 f}{\partial x^2}&=f(x+1,y)+f(x-1,y)-2f(x,y)\\ \frac{\partial^2 f}{\partial y^2}&=f(x,y+1)+f(x,y-1)-2f(x,y)\\ \nabla^2 f& = \frac{\partial^2 f}{\partial x^2} + \frac{\partial^2 f}{\partial y^2}\\ &= [f(x+1, y) + f(x-1, y) + f(x, y+1) + f(x, y-1)] - 4f(x, y) \end{align} ?x2?2f??y2?2f??2f?=f(x+1,y)+f(x?1,y)?2f(x,y)=f(x,y+1)+f(x,y?1)?2f(x,y)=?x2?2f?+?y2?2f?=[f(x+1,y)+f(x?1,y)+f(x,y+1)+f(x,y?1)]?4f(x,y)??
這個公式可以使用下面的核進行卷積運算來實現。因此,圖像銳化的濾波原理類似于低通濾波,只是使用的系數不同。

image-20241220235220715

邊緣有很強的脈沖(正負信號都有):勾畫邊緣處、增強。

使用拉普拉斯核進行圖像增強 g ( x , y ) = f ( x , y ) ? ? 2 f ( x , y ) g(x,y)=f(x,y)-\nabla^2 f(x,y) g(x,y)=f(x,y)??2f(x,y)

image-20241220235333869

(a)模糊后的月球北極圖像。
(b)使用上述(a)核得到的拉普拉斯圖像。
?使用公式 g ( x , y ) = f ( x , y ) ? ? 2 f ( x , y ) , c = ? 1 g(x,y)=f(x,y)-\nabla^2 f(x,y), c=-1 g(x,y)=f(x,y)??2f(x,y),c=?1得到的銳化后的圖像。
(d)重復相同過程但使用上述(b)核得到的結果。

拉普拉斯圖像往往是黑色的、無特征的。

鈍化掩蔽和高提升濾波(Unsharp masking and high-boost filtering)

鈍化掩蔽和高提升濾波是圖像銳化的重要技術,主要用于增強圖像細節,通過放大圖像的高頻成分(如邊緣和紋理)來突出細節部分。

鈍化掩蔽三步走

鈍化掩蔽通過從原圖像中減去模糊化版本來實現銳化。
f s ( x , y ) = f ( x , y ) ? f ˉ ( x , y ) f_s(x, y) = f(x, y) - \bar{f}(x, y) fs?(x,y)=f(x,y)?fˉ?(x,y)
其中 f s ( x , y ) f_s(x, y) fs?(x,y) 表示銳化后圖像, f ˉ ( x , y ) \bar{f}(x, y) fˉ?(x,y) 是圖像 f ( x , y ) f(x, y) f(x,y)的模糊版本。

  1. 模糊原圖像
  2. 從原圖像減去模糊后圖像(產生的差稱為模板)
  3. 將模板與原圖像相加
image-20241221093414873

高提升濾波

然后,將加權后的模板與原圖像相加, 得到 f h b ( x , y ) f_{hb}(x, y) fhb?(x,y)
f h b ( x , y ) = A f ( x , y ) ? f ˉ ( x , y ) f_{hb}(x, y) = A f(x, y) - \bar{f}(x, y) fhb?(x,y)=Af(x,y)?fˉ?(x,y)
其中 A ≥ 1 A \geq 1 A1, f ˉ ( x , y ) \bar{f}(x, y) fˉ?(x,y) f ( x , y ) f(x, y) f(x,y)的模糊版本。.

更近一步,還能得到:
f h b ( x , y ) = ( A ? 1 ) f ( x , y ) + f ( x , y ) ? f ˉ ( x , y ) f h b ( x , y ) = ( A ? 1 ) f ( x , y ) + f s ( x , y ) f_{hb}(x, y) = (A - 1)f(x, y) + f(x, y) - \bar{f}(x, y)\\ f_{hb}(x, y) = (A - 1)f(x, y) + f_s(x, y) fhb?(x,y)=(A?1)f(x,y)+f(x,y)?fˉ?(x,y)fhb?(x,y)=(A?1)f(x,y)+fs?(x,y)
使用拉普拉斯算子進行銳化:當使用 ? 2 f ( x , y ) \nabla^2f(x, y) ?2f(x,y)來計算銳化圖像 f s ( x , y ) f_s(x, y) fs?(x,y),高提升濾波的公式變為:
f h b ( x , y ) = ( A ? 1 ) f ( x , y ) ? ? 2 f ( x , y ) or? f h b ( x , y ) = ( A ? 1 ) f ( x , y ) + ? 2 f ( x , y ) f_{hb}(x, y) = (A - 1)f(x, y) - \nabla^2f(x, y)\\ \text{or}\ f_{hb}(x, y) = (A - 1)f(x, y) + \nabla^2f(x, y) fhb?(x,y)=(A?1)f(x,y)??2f(x,y)or?fhb?(x,y)=(A?1)f(x,y)+?2f(x,y)
其中拉普拉斯算子用于檢測圖像的快速灰度變化區域(邊緣和細節),這使得銳化能夠更直接地基于邊緣信息進行。

**

然后,將加權后的模板與原圖像相加, 得到 f h b ( x , y ) f_{hb}(x, y) fhb?(x,y)
f h b ( x , y ) = A f ( x , y ) ? f ˉ ( x , y ) f_{hb}(x, y) = A f(x, y) - \bar{f}(x, y) fhb?(x,y)=Af(x,y)?fˉ?(x,y)
其中 A ≥ 1 A \geq 1 A1, f ˉ ( x , y ) \bar{f}(x, y) fˉ?(x,y) f ( x , y ) f(x, y) f(x,y)的模糊版本。.

更近一步,還能得到:
f h b ( x , y ) = ( A ? 1 ) f ( x , y ) + f ( x , y ) ? f ˉ ( x , y ) f h b ( x , y ) = ( A ? 1 ) f ( x , y ) + f s ( x , y ) f_{hb}(x, y) = (A - 1)f(x, y) + f(x, y) - \bar{f}(x, y)\\ f_{hb}(x, y) = (A - 1)f(x, y) + f_s(x, y) fhb?(x,y)=(A?1)f(x,y)+f(x,y)?fˉ?(x,y)fhb?(x,y)=(A?1)f(x,y)+fs?(x,y)
使用拉普拉斯算子進行銳化:當使用 ? 2 f ( x , y ) \nabla^2f(x, y) ?2f(x,y)來計算銳化圖像 f s ( x , y ) f_s(x, y) fs?(x,y),高提升濾波的公式變為:
f h b ( x , y ) = ( A ? 1 ) f ( x , y ) ? ? 2 f ( x , y ) or? f h b ( x , y ) = ( A ? 1 ) f ( x , y ) + ? 2 f ( x , y ) f_{hb}(x, y) = (A - 1)f(x, y) - \nabla^2f(x, y)\\ \text{or}\ f_{hb}(x, y) = (A - 1)f(x, y) + \nabla^2f(x, y) fhb?(x,y)=(A?1)f(x,y)??2f(x,y)or?fhb?(x,y)=(A?1)f(x,y)+?2f(x,y)
其中拉普拉斯算子用于檢測圖像的快速灰度變化區域(邊緣和細節),這使得銳化能夠更直接地基于邊緣信息進行。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/64308.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/64308.shtml
英文地址,請注明出處:http://en.pswp.cn/web/64308.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Linux | Ubuntu零基礎安裝學習cURL文件傳輸工具

目錄 介紹 檢查安裝包 下載安裝 手冊 介紹 ?cURL是一個利用URL語法在命令行下工作的文件傳輸工具,首次發行于1997年??12。cURL支持多種協議,包括FTP、FTPS、HTTP、HTTPS、TFTP、SFTP、Gopher、SCP、Telnet、DICT、FILE、LDAP、LDAPS、IMAP、POP3…

cesium通過經緯度獲取3dtiles 得feature信息

找到這里3dtiles的兩種訪問方式: 1.1 3DTileContent#getFeature 這里涉及3DTile 數據結構,暫不了解3DTile 數據結構,因此暫不使用。 1.2 scene.pick 本次使用 scene表示虛擬場景中所有 3D 圖形對象和狀態的容器;scene中…

內置ALC的前置放大器D2538A/D3308

一、概述 D2538A/D3308是芯谷科技推出的帶有ALC(自動電平控制)的前置音頻放大器芯片,最初產品為單聲道/立體聲收錄機及盒式錄音機而開發,作為錄音/回放的磁頭放大器使用;由于產品的高增益、低噪聲及ALC外部可調的特性&…

基于SSM的“快遞管理系統”的設計與實現(源碼+數據庫+文檔+PPT)

基于SSM的“快遞管理系統”的設計與實現(源碼數據庫文檔PPT) 開發語言:Java 數據庫:MySQL 技術:SSM 工具:IDEA/Ecilpse、Navicat、Maven 系統展示 登陸頁面 注冊頁面 快遞員頁面 派單員訂單管理頁面 派單員訂單添…

Mac 查詢IP配置,網絡代理

常用命令 1.查詢IP ifconfig | grep "inet" 2.ping查詢 ping 172.18.54.19(自己IP) 3.取消代理,通過在終端執行以下命令,可以取消 Git 的代理設置 git config --global --unset http.proxy git config --global …

Spring創建異步線程,使用@Async注解時不指定value可以嗎?

在Spring中使用Async注解時,不指定value是可以的。如果沒有指定value(即線程池的名稱),Spring會默認使用名稱為taskExecutor的線程池。如果沒有定義taskExecutor線程池,則Spring會自動創建一個默認的線程池。 默認行為…

Python小括號( )、中括號[ ]和大括號{}代表什么

python語言最常見的括號有三種,分別是:小括號( )、中括號[ ]和大括號也叫做花括號{ },分別用來代表不同的python基本內置數據類型。 小括號():struct結構體,但不能改值 python中的小括號( )&am…

QML 之狀態

文章目錄 狀態示例 1:矩形的可見/隱藏切換功能介紹: 示例 2:按鈕的激活/非激活狀態功能介紹: 示例 3:面板的展開/折疊功能介紹: 示例 4:燈泡的開/關功能介紹: 總結 狀態 狀態是界面中…

C語言簡單測試總結

前言 在學C語言之前回顧一下C中的一些知識.選用的是中國大學MOOC中C程序設計(面向對象進階)中的C語言水平評估測試題. 題目 ?The keyword "unsigned" can modify the keyword [ B ] A.signed B.long C.long double D.float題解:unsigned是無符號的意識,通常在…

frp(s) 內網穿透 Liunx環境雙端Docker部署

FRP(Fast Reverse Proxy)是一款高性能的反向代理應用,主要用于內網穿透、負載均衡和反向代理等多種場景。它能夠將內網中的服務暴露給公網,實現遠程訪問。此外,FRP還可以用于接收類似GitHub或第三方提供的Webhook請求。在微服務架構中,FRP可以作為服務調用的反向代理,提…

代碼隨想錄算法訓練營第三十五天|01背包問題 二維和一維(卡碼網第46題)、416分割等和子集

day35 動態規劃part03 1. 01背包問題 二維 卡碼網第46題 01 背包:有n件物品和一個最多能背重量為w 的背包。第i件物品的重量是weight[i],得到的價值是value[i] 。每件物品只能用一次,求解將哪些物品裝入背包里物品價值總和最大。 動規五部…

【Unity3D】ECS入門學習(九)SystemBase

SystemBase:支持主線程或多線程執行篩選實體任務。 主要介紹是內部成員:Entities的各種篩選方法,其內部成員還有EntityManager ForEach方法篩選,傳遞一個有參委托函數進去,參數ref xxx組件類(可填多個&…

[Android]init中添加新的command

在Android的init進程中,command是用于定義啟動時要執行的具體命令行指令的關鍵部分。init進程是Android系統啟動的第一個進程,它負責初始化系統的各個組件,并啟動必要的服務。command可以在init.rc文件及其包含的其他.rc文件中找到&#xff0…

STM32F103RCT6學習之五:ADC

1.ADC基礎 ADC(Analog-Digital Converter)模擬-數字轉換器ADC可以將引腳上連續變化的模擬電壓轉換為內存中存儲的數字變量,建立模擬電路到數字電路的橋梁12位逐次逼近型ADC,1us轉換時間 輸入電壓范圍:0~3.3V&#xff…

strncpy函數和使用案例

strncpy 是 C 語言標準庫函數之一,用于字符串操作。它的功能是將源字符串(source)中的字符復制到目標字符串(destination)中,但最多復制 n 個字符。如果源字符串的長度小于 n,則目標字符串剩余的…

實現類似gpt 打字效果

1. css的動畫(animation) css中實現動畫有兩種方式:transition過渡動畫、 animation自定義動畫。 具體的可以看MDN鏈接:https://developer.mozilla.org/zh-CN/docs/Web/CSS/animation 使用keyframes自定義關鍵幀動畫并未其命名使用自定義動…

微軟遠程桌面APP怎么用

微軟遠程桌面(Remote Desktop)客戶端(RD Client)是一款由微軟開發的應用程序,允許用戶通過網絡連接遠程訪問和控制另一臺計算機。同時,微軟遠程桌面RD Client支持多種設備和操作系統,包括Window…

【每日學點鴻蒙知識】grid里面的item支持拖動問題、WebView回調問題、獲取頁面名稱、彈幕效果實現、修改App輸出路徑 |

1、HarmonyOS grid里面的item支持拖動問題? 想要grid里面的item支持拖動,拖出來后可以刪除,下面的代碼就是你們上次給我提供的,正常情況下是可以使用的但是,往下拖的過程中遇到了TextInput后,gridItem的onDragMove就不會走了,我給TextInput設置了draggable(false)后…

SDK 指南

在前端開發中,SDK(Software Development Kit,軟件開發工具包)是一個用于幫助開發者在特定平臺、框架或技術棧中實現某些功能的工具集。 1. SDK 是什么? SDK 是一種開發工具包,它提供了開發人員實現某些功…

Unity3d UGUI如何優雅的實現Web框架(Vue/Rect)類似數據綁定功能(含源碼)

前言 Unity3d的UGUI系統與Web前端開發中常見的數據綁定和屬性綁定機制有所不同。UGUI是一個相對簡單和基礎的UI系統,并不內置像Web前端(例如 Vue.js或React中)那樣的雙向數據綁定或自動更新UI的機制。UGUI是一種比較傳統的 UI 系統&#xff…