COMP9517 學習筆記 圖像處理常用技術介紹 image processing(持續更新中)

本文爲個人學習筆記(持續更新中)
如果覺得寫的不錯歡迎點贊收藏交流
如有疑問歡迎留言或者私信

圖像處理簡介

圖像處理的目的:

  1. 處理失真(suppress distortions)
  2. 增強相關信息
  3. 爲接下來的圖像分析做預處理

1. 圖像分析的種類及常用技術

1.1 空間域操作(spatial domain operations)

1.1.1 點操作(對單個像素點的intensity轉換)

  1. 對比度拉伸(Contrast streching)
    操作
    灰度值(grey value)小於L的像素設爲黑(即灰度值爲0),灰度值大於H的像素設爲白, 在L,H之間的像素進行線性縮放到最大值
    效果
    增強圖片對比度

  2. 強度閾值(Intensity thresholding)
    操作
    灰度值小於Threshold的點設爲黑,大於Threshold則設爲白
    效果
    等於特殊情況下的對比度拉伸,產生兩色灰度圖,通常用於圖像增強,只在對象和背景intensity很不同的情況下效果好

  3. 自動閾值強度(automatic intensity thresholding):
    操作
    方式一:
    利用Otsu’s method計算閾值T, 低於T的像素爲class 1,高於T的爲class 2,σ02,σ12\sigma_0^2,\sigma_1^2爲intensity variances, p0,p1p_0,p_1爲像素比例, μ0,μ1\mu_0,\mu_1爲mean intensity
    使得 inter-class variance最大化:
    σB2=p0p1(μ0μ1)2\sigma_B^2 = p_0p_1(\mu_0 - \mu_1)^2
    方式二:
    Iso-method計算閾值T。初始化T,計算μ0,μ1\mu_0, \mu_1,利用T=(μ0+μ1)/2T = (\mu_0 + \mu_1)/2更新T值直至T不再變化
    效果
    同強度閾值

  4. 多級閾值(multi-level thresholding):
    操作
    與 2.強度閾值 相同,不過設立多個T值

  5. 強度翻轉(intensity inversion)
    操作
    O=I+maxgreyvalueO = -I + maxgreyvalue
    效果
    針對背景主要爲黑的圖片的灰白細節。

  6. 對數變換(log transformation):
    操作
    O=clog(1+I)O = c\log (1+I)
    c爲常數
    效果
    低灰度值點輸出的灰度值範圍變大,高灰度值點輸出的灰度值範圍變小。
    也可以針對像素值方差過大的圖片進行動態範圍(maxvalue-minvalue)壓縮。

  7. 冪變換(power transformation)
    操作
    O=cIγO = c I^\gamma
    c,γc, \gamma均爲常數
    效果
    類似於對數變換,取決於γ\gamma的值

  8. 分段線性變換(Piecewise linear transformations)
    是對於其他變換的補充和調整,變換圖可以很複雜,所以相比於一般的變換會要求輸入量更多(像素點更多)。

  9. 分段對比度拉伸(Piecewise contrast streching)
    分段線性變換的一種簡單情況,一般用於放映記錄設備上擴大圖片的動態範圍(顯示的顏色更豐富)

  10. 灰度切割(grey-level slicing):
    操作
    將某一範圍內的灰度值增強,不在範圍內的降低或者不變
    效果
    突出某一色彩範圍

  11. 位圖切割(bit-plane slicing)
    操作
    n-bits圖片有n個bit-planes
    高亮對整體圖片顯示影響最大的bits
    效果
    用於圖片壓縮

1.1.2 像素強度的直方圖和處理

對於所有可能的像素強度(like 0-255),統計圖片中相對應的像素的數量,畫成直方圖

  1. 直方圖均衡(histogram qualization)

操作
高強度的增強對比度,低像素降低對比度

連續情況s=T(r)s = T(r), 其中T(r)T(r)是單調遞增的轉換函數,r爲in,s爲out,範圍均爲[0, L-1]
設輸入輸入圖片像素的概率分佈PDF pr(r)p_r(r)andps(s)p_s(s)
根據概率論我們有:ps(s)=pr(r)drdsp_s(s) = p_r(r)|\frac {dr}{ds}|
然後我們選擇s的CDF:s=T(r)=(L1)0rpr(x)dxs = T(r) = (L-1)\int_0^{r}{p_r(x)dx}
則:dsdr=dT(r)dr=(L1)ddr[0rpr(x)dx]=(L1)pr(r)\frac {ds}{dr} = \frac {dT(r)}{dr} = (L-1)\frac {d}{dr}[\int_0^{r}{p_r(x)dx}] = (L-1)p_r(r)
代入上式得到 ps(s)=1L1p_s(s) = \frac {1}{L-1} for 0<=s<=L-1, 即unitform distribution。

離散情況
我們有:pr(rk)=nkMNp_r(r_k) = \frac {n_k}{MN}表示像素值爲rkr_k的像素佔所有像素數量的比例
則:sk=T(rk)=(L1)j=0kpr(rj)=L1MNj=0knjs_k = T(r_k) = (L-1)\sum_{j=0}^{k}p_r(r_j) = \frac {L-1}{MN}\sum_{j=0}^{k}n_jfor k=0,1,…L-1

效果
將圖片轉換成具有均衡直方圖的圖片。實際應用中,圖片是離散的,得到完美的uniform distribution很少見。

  1. 直方圖匹配(histogram matching)
    將圖片轉換成具規定形狀直方圖的圖片
    我們已經有s=T(r)=(L1)0rpr(x)dxs = T(r) = (L-1)\int_0^{r}{p_r(x)dx}
    我們在定義一個G(z)=(L1)0zpz(x)dxG(z) = (L-1)\int_0^{z}{p_z(x)dx}
    就可以得到輸出圖像:z=G1(s)=G1[T(r)]z = G^{-1}(s) = G^{-1}[T(r)]

1.1.3 算術邏輯運算(Arithmetic and logical operations)

對兩個圖片進行像素與像素的算數和邏輯運算,比如AND, OR, 加法,減法,可以用於動作檢測,MASKING等

1.1.4 鄰居點操作 (spatial filtering on many pixels)

1.1.4.1 降噪系列

圖像平均(image averaging)
操作
g(x,y)=f(x,y)+n(x,y)g(x,y) = f(x,y) + n(x,y)
其中g(x,y),f(x,y),n(x,y)g(x,y),f(x,y),n(x,y)分別代表噪音圖像,噪音,原圖像。
對每K個像素求平均:g(x,y)1Ki=1Kgi(x,y)g(x,y) \approx \frac {1}{K}\sum_{i=1}^K g_i(x,y)
效果
用於圖像去噪
K增加,像素值的種類下降
假設所有噪音相互獨立(uncorrelated),且圖片無畸變
空間濾波(spatial filtering)
操作:
選取以像素(x,y)爲中心的矩陣爲 /filter/kernel/mask(後文統稱filter),經過運算產生新的(x,y)像素值
example one: 離散卷積(discrete convolution)(使用線性變換filter h(i,j)):
g(x,y)=i=aaj=bbh(i,j)f(xi,yj)g(x,y) = \sum_{i=-a}^a \sum_{j=-b}^{b}h(i,j)f(x-i,y-j)
example two: 平滑過濾(smoothing spatial filters)
選取filter的平均值/加權平均值產生新的g(x,y),可以模糊邊緣


幾種常用的filter:

  1. Gaussian filter:
    在這裏插入圖片描述
    需要設定標準差σ\sigma。計算加權平均,σ\sigma越小,降噪效果越好,細節丟失越多,圖片越模糊
  2. Median filter (non-linear filter)
    使用neighbours的中位數替代中心像素,對於處理脈衝噪音很有效。
    filter迫使突出的像素(噪音)更像median。同時,小於n2/2n^2/2的像素蔟也會被nnn * n的fiter消除。
  3. Max/Min filter(non-linear filter)
    使用neighbours的最大/最小值替代中心像素,對於處理脈衝噪音很有效。
  4. Max/min/average pooling
    減少計算量,需要設定stride和kernel size

1.1.4.2 銳化系列:

檢測邊緣, 加強模糊的細節

定義像素導數:

1-D f(x):
一階導數:
dfdx=f(x+1)f(x)\frac {df}{dx} = f(x+1)-f(x)
二階導數:
d2fdx2=f(x+1)+f(x1)2f(x)\frac {d^2f}{dx^2} = f(x+1)+f(x-1) - 2f(x)
在這裏插入圖片描述
一階導變化可以表示邊緣的出現,二階導可以表示該像素出現在邊緣暗邊還是亮邊。
總體來說一階導數對厚邊緣反應良好,二階導數對小邊緣(細線,小點)更敏感。

1.2 變換域操作(主要是在傅里葉空間Fourier space)

TBC…

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章