1. 程式人生 > >數字影象處理3之在影象增強中使用直方圖統計

數字影象處理3之在影象增強中使用直方圖統計

在影象增強中我們也可以使用直接從直方圖中獲得的統計引數。

1、平均值、方差的定義

令r表示在區間[0 , L-1]上代表離散灰度的離散隨機變數,並且令p(r_{i})表示對應於r_{i}的歸一化直方圖分量,我們可以把p(r_{i})看做是灰度級r_{i}出現的概率估計值。

(1)r的均值定義為:m=\sum_{i=0}^{L-1}r_{i}p(r_{i})

(2)r關於其均值的n階矩定義為:u_{n}(r)=\sum_{i=0}^{L-1}(r_{i}-m)^{n}p(r_{i})

其中當n=2(二階矩)非常重要:u_{2}(r)=\sum_{i=0}^{L-1}(r_{i}-m)^{2}p(r_{i}),我們將該表示式稱為灰度方差,通常用\sigma ^{2}(r)來表示。(標準差是方差的平方根)。

我們考慮均值和方差這兩種增強應用。全域性均值和方差是在整幅影象上計算的,這對於灰度和對比度的總體調整是有用的。對於這些引數的一種更有效的應用是區域性增強,在區域性增強中,區域性均值和區域性方差是根據影象中每個畫素的領域內的影象特徵進行改變的基礎。

2、區域性均值和區域性方差

(x,y)表示影象中任意畫素的座標,令s_{xy}表示規定大小的以(x,y)為中心的鄰域(子影象)。該鄰域的平均值m_{s_{xy}}和灰度級方差\sigma ^{2}_{s_{xy}}可以用下列式子計算:

(1)m_{s_{xy}}=\sum_{i=0}^{L-1}r_{i}p_{s_{xy}}(r_{i})

表示式中p_{s_{xy}}是區域s_{xy}中畫素的直方圖,該直方圖由L個分量,對應於輸入影象中L個可能的灰度值。其中許多灰度值為0,具體取決於s_{xy}的大小。

(2)\sigma ^{2}_{s_{xy}}=\sum_{i=0}^{L-1}(r_{i} - m_{s_{xy}})^2 p_{s_{xy}}(r_{i})

和全域性均值和全域性方差相同,均布均值是對鄰域s_{xy}中的平均灰度的度量,區域性方差(或者標準差)是對鄰域中灰度對比度的度量。

下面來看一道使用直方圖統計的區域性增強的例子。

下圖(1)顯示了一根繞在支架上的鎢絲的SEM(掃描電子顯微鏡)影象。可以看到影象中央的支架很清楚並很容易分析;但是在影象的右側即影象的暗側,有一根鎢絲的結構,但是由於太暗幾乎看不到,其大小和特徵也不容易辨認。

圖(1):

在這種情況下,目前的問題是要增強暗色區域,同時儘可能使得明亮區域不變,因為明亮區域並不需要增強。

圖(2)是使用全域性直方圖均衡化之後的結果:

圖(2):

從全域性直方圖均衡化的結果圖中可以看出,暗色區域有了一點點改善,但是也不是很容易分辨,同時明亮區域也發生了一些變化,這是我們不想看到的。

圖(3)是使用區域性直方圖統計引數增強後的影象:

圖(3):

從處理結果可以看到,暗色區域顯示效果比之前好了很多,同時明亮區域被很好的保留了下來。

下面來看一下實現直方圖統計的區域性增強的過程:

(使用本節介紹的概念可以得到一種增強方法,這種方法能分辨暗色區域和明亮區域的不同,同時只增強暗色區域)

1、判斷一個區域在點(x,y)處是暗還是亮的方法?

把區域性平均灰度{\color{Red} m_{s_{xy}}}{\color{Red} m_{G}}並稱之為全域性均值的平均影象灰度進行比較:

如果{\color{Red} m_{s_{xy}}\leq k_{0}m_{G}},其中{\color{Red} k_{0}}是一個值小於1.0的正常數,我們將把點{\color{Red} (x,y)}處的畫素考慮為處理的候選點。

2、因為我們感興趣的是增強低對比度的區域,所以還需要一種度量方法來確定一個區域的對比度是不是可以作為增強的候選點。怎麼來確定呢?

如果{\color{Red} \sigma _{s_{xy}}\leq k_{2}\sigma_{G}},則認為點{\color{Red} {\color{Red} }(x,y)}處的畫素是增強的候選點,其中{\color{Red} \sigma_{G}}是全域性標準差,{\color{Red} k_{2}}為正常數。(若我們的興趣是增強亮區域,則該常數大於1.0,對於暗區域,則該常數小於1.0)。

但是,很明顯\sigma_{G}不能無限的小下去呀!所以我們需要限制能夠接受的最低對比度的值,否則上面的過程會試圖去增強標準差為0的恆定區域。我們通過下列式子來進行限制:

要求\fn_cm {\color{Red} \sigma_{s_{xy}}\geq k_{1}\sigma_{G}}{\color{Red} k_{1} < k_{2}},通過這個式子可以對區域性標準差設定一個較低的限制值。

找到了候選點之後,進行什麼操作來實現增強的效果呢?

滿足區域性增強所有條件的一個位於點{\color{Red} (x,y)}處的畫素,可以簡單的通過將畫素值乘以一個指定常數E來處理,以便相對於影象的其它部分增大(或減少)其灰度值。不滿足增強條件的畫素則保持不變。

用一個公式來表示這個過程的話,可以表示為如下的形式:

{\color{Red} f(x,y)}表示在影象任意座標{\color{Red} {\color{Red} }(x,y)}處的畫素值,令{\color{Red} g(x,y)}表示這些座標處相應的增強的畫素值,則有:

{\color{Red} g(x,y)= \left\{\begin{matrix} E*f(x,y), m_{s_{xy}}\leq k_{0}m_{G} \delta \delta k_{1}\sigma_{G}\leq \sigma_{s_{xy}}\leq k_{2}\sigma_{G} \\ f(x,y),else \end{matrix}\right.}

到這裡,灰度變換的內容就暫時結束了。下一篇學習空間濾波的相關知識。