Ch2 空間域的圖像增強
文章目錄
- Ch2 空間域的圖像增強
- Background
- 灰度變換函數(Gray-level Transformation)
- 對數變換(Logarithmic)
- 冪律變換(Power-Law)
- 分段線性變換函數(Piecewise-Linear)
- 對比度拉伸(Contrast-Stretching)
- 灰度級分層(Gray-level Slicing)
- 直方圖處理(Histogram Processing)
- 直方圖均衡化(Histogram Equalization)
- 直方圖匹配(Histogram Matching)
- QA
- 空間濾波(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 r≥0.
對數變換的作用:
- 動態范圍壓縮:當輸入圖像的灰度值范圍非常寬(例如 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)。
分段線性變換函數(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:基于下圖中的變換,使期望的灰度范圍變亮(/變暗),但保持圖像中其他的灰度級不變。
比特平面分層(Bit-plane slicing): 像素值是由比特組成的整數。8比特圖像可以視為8個1比特平面組成,其中plane 1中包含圖像中所有圖像的最低有效比特、plane 8包含所有像素的最高有效比特。
直方圖處理(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=0∑L?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),0≤r≤L?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 0≤r≤L?1, 有 0 ≤ T ( r ) ≤ L ? 1 0\le T(r)\le L-1 0≤T(r)≤L?1.
假使我們想從 s s s逆推回 r r r, 那么就是 T T T的逆變換。如果想這個倒推成立,那么就需要是嚴格遞增函數,不然自變量與因變量就不是一一對應的關系。
直方圖均衡化基于概率密度函數(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?,0≤s≤L?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,0≤s≤1
假如說 0 ≤ s ≤ L ? 1 0\le s\le L-1 0≤s≤L?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?,0≤s≤L?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?0∑k?pr?(rj?)=j?0∑k?MNnk??s=T(rk?)=j?0∑k?pr?(rj?)=j=0∑k?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,是我們希望輸出圖像具有的。
計算直方圖匹配三步走:
- 計算輸入圖像的直方圖 p r ( r ) p_r(r) pr?(r), 得到 s k s_k sk?
- 計算 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)是規定直方圖的所有值。
- 計算 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=0∑k?pr?(rj?),k=0,1,…,L?1G(zq?)=(L?1)i=0∑q?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=?a∑a?t=?b∑b?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]??
對于這個例子,
- “same” correlation res: 08242100
- “same” convolution res:01242800
書中給出的二維定義:
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=?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)
性質 | 卷積(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):中間的均值最大,更加考慮自己,所以平滑作用沒有盒式核那么大。
非線性空間濾波(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)
-
在平坦段(灰度值恒定的區域)必須為零 。
-
在灰度階躍或斜坡的開始處必須非零。
-
沿斜坡必須非零 。
對于二階導數,我們要求它必須滿足:(如 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)
- 在平坦段(灰度值恒定的區域)必須為零。
- 在灰度階躍或斜坡的開始和結束處必須非零。
- 沿斜率恒定的斜坡必須為零
(a) 圖像中水平掃描線的一段,顯示斜坡和階梯邊緣以及恒定段。
(b) 掃描線及其導數的值。
? 導數圖,顯示零交叉。在 (a) 和 ? 中,為了便于視覺顯示,各點用虛線連接起來。
從這個圖中,我們可以看到:
- 一階導數:有一個比較突出的值:0 5 0
- 二階導數:必過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)??
這個公式可以使用下面的核進行卷積運算來實現。因此,圖像銳化的濾波原理類似于低通濾波,只是使用的系數不同。
邊緣有很強的脈沖(正負信號都有):勾畫邊緣處、增強。
使用拉普拉斯核進行圖像增強: 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)
(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)的模糊版本。
- 模糊原圖像
- 從原圖像減去模糊后圖像(產生的差稱為模板)
- 將模板與原圖像相加

高提升濾波
然后,將加權后的模板與原圖像相加, 得到 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 A≥1, 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 A≥1, 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)
其中拉普拉斯算子用于檢測圖像的快速灰度變化區域(邊緣和細節),這使得銳化能夠更直接地基于邊緣信息進行。