空间域图像增强
圖像增強是數字圖像處理相對簡單卻最具藝術性的領域之一,增強的目的是消除噪聲,
顯現那些被模糊了的細節或簡單突出一幅圖像中我們感興趣的特征。一個簡單例子是增強圖
像的對比度, 使其看起來更加一目了然。增強是圖像處理中非常主觀的領域, 它以怎樣構成
好的增強效果這種人為主觀偏好為基礎, 也正是這一點為其賦予了藝術性。這與圖像復原技
術剛好相反, 圖像復原也是改進圖像外貌的一個處理領域, 但它是客觀的。
本文主要包括以下內容
- 空間域濾波的基礎知識
- 相關和卷積
- 圖像平滑, 包括平均平滑和高斯平滑
圖像增強基礎
為什么要進行圖像增強
圖像增強是指根據特定的需要突出一幅圖像中的某些信息, 同時削弱或去除某些不需要
的信息的處理方法。其主要目的是使處理后的圖像對某種特定的應用來說, 比原始圖像更適
用。因此, 這類處理是為了某種應用目的而去改善圖像質量的。處理的結果使圖像更適合人
的觀察或機器的識別系統。
應該明確地是增強處理并不能增強原始圖像的信息, 其結果只能增強對某種信息的辨別
能力, 而同時這種處理有可能損失一些其他信息。正因如此, 我們很難找到一個評價圖像增
強效果優劣的客觀標準, 也就沒有特別通用模式化的圖像增強方法, 這需要我們根據具體期
望的處理效果做出取舍。
圖像增強的分類
圖像增強技術基本上可分成兩大類: 一類是空間域增強, 另一類是頻率域增強。本章著
重介紹空問域增強技術, 下一意講述頻率域圖像增強。
空間域圖像增強技術主要包括直方圖修正、灰度變換增強、圖像平滑化以及圖像銳化等。
在增強過程中可以采用單一方法處理, 但更多實際情況是需要采用幾種方法聯合處理, 才能
達到預期的增強效果(某個單一的圖像處理方法可以解決全部問題〉。
在第3 章中通過灰度變換改善圖像外觀的方法, 以及3.7 節和3.8 節中的直方圖灰度修
正技術〈即直方圖均衡化和直方圖規定化〉都是圖像增強的有效手段, 它們的共同點在于變
換是直接針對像素灰度值的, 與該像素所處的鄰域無關, 而空間域增強則是基于圖像中每一
個小范圍(鄰域〉內的像素進行灰度變換運算, 某個點變換之后的灰度由該點鄰域之內的那
些點的灰度值共同決定, 因此空間域增強也稱為鄰域運算或鄰域濾波。空間域變換可使用
下式描述:
g(x,y)=T[f(x,y)]
空間域濾波
濾波是信號處理中的一個概念, 是將信號中特定波段頻率濾除的操作, 在數字信號處理
中通常采用傅立葉變換及其逆變換實現。由于下面要學習的內容實際上和通過傅立葉變換實
現的頻域下的濾波是等效的, 故而也稱為濾波。空間域濾波主要直接基于鄰域〈空間域〉對
圖像中像素執行計算,我們使用空間域濾波這一術語以區別第6 章中將要討論的頻率域濾波。
空間域濾波和鄰域處理
對圖像中的每一點(x, y), 重復下面的操作:
(1) 對預先定義的以(x, y) 為中心的鄰域內的像素進行運算。
(2)將(2)中運算的結果作為(x, y)點的新響應。
上述過程就稱為鄰域處理或空間域濾波。一幅數字圖像可以看成一個二維函數為f(x,y),
而x-y平面表明了空間位置信息, 稱為空間域, 基于x-y 空間鄰域的濾波操作稱作空間域濾
波. 如果鄰域中的像素計算為線性運算, 則又稱為線性空間域濾波, 否則稱為非線性空間域
濾液。
邊界處理
執行濾波操作需注意當模板位于圖像邊緣時,需要對邊緣附近的那些元素執行濾波操作單獨處理,以避免引用到本不屬于圖像的無意義的值(在Matlab中這將引起系統的警告,而在vc中很可能會由于非法訪問內存而產生運行錯誤〉。
以下3種策略都可以用來解決邊界問題:
(1)收縮處理范圍一處理時忽略位于圖像f 邊界附近會引起問題的那些點, 如對于
圖5.1中所使用的模板, 處理時忽略圖像f 四周一圈1個像素寬的邊界, 即只處理從x =
1,2 ,3, … .M-2和y = 1,2,3, .. .N-2 (在Matlab中應為x = 2,3,4, … ,M-1和y = 2,3,4, … N-1)范圍內
的點, 從而確保了濾被過程中模板始終不會超出圖像f 的邊界。
(2)使用常數填充圖像一根據模板形狀為圖像f 虛擬出邊界. 虛擬邊界像素值為指定
的常數, 如0, 得到虛擬圖像f ’。保證模板在移動過程中始終不會超出f ’的邊界。
(3)使用復制像素的方法填充圖像,和(2)基本相同, 只是用來填充虛擬邊界像素
值的不是固定的常數, 而是復制圖像f本身邊界的模式.
這些技巧在本章后面的小節程序設計實例中將給出具體實現。
相關和卷積
圖像處理之卷積概念
我們來看一下一維卷積的概念.
連續空間的卷積定義是 f(x)與g(x)的卷積是 f(t-x)g(x) 在t從負無窮到正無窮的積分值.t-x要在f(x)定義域內,所以看上去很大的積分實際上還是在一定范圍的.
實際的過程就是f(x) 先做一個Y軸的反轉,然后再沿X軸平移t就是f(t-x),然后再把g(x)拿來,兩者乘積的值再積分.想象一下如果g(x)或者f(x)是個單位的階越函數. 那么就是f(t-x)與g(x)相交部分的面積.這就是卷積了.
把積分符號換成求和就是離散空間的卷積定義了.
對于圖像而言,離散卷積的計算過程是模板翻轉,然后在原圖像上滑動模板,把對應位置上的元素相乘后加起來,得到最終的結果。如果不考慮翻轉,這個滑動-相乘-疊加的過程就是相關操作。事實上我也一直用相關來理解卷積。在時域內可以從兩個角度來理解這樣做的含義。
一種是濾波,比如最簡單的高斯模板,就是把模板內像素乘以不同的權值然后加起來作為模板的中心像素值,如果模板取值全為1,就是滑動平均;如果模板取值為高斯,就是加權滑動平均,權重是中間高,四周低,在頻率上理解就是低通濾波器;如果模板取值為一些邊緣檢測的模板,結果就是模板左邊的像素減右邊的像素,或者右邊的減左邊的,得到的就是圖像梯度,方向不同代表不同方向的邊緣;
另一種理解是投影,因為當前模板內部圖像和模板的相乘累加操作就是圖像局部patch和模板的內積操作,如果把patch和模板拉直,拉直的向量看成是向量空間中的向量,那么這個過程就是patch向模板方向上的投影,一幅圖像和一個模板卷積,得到的結果就是圖像各個patch在這個方向上的response map或者feature map;如果這樣的模板有一組,我們可以把這一組看成一組基,得到的一組feature map就是原圖像在這組基上的投影。常見的如用一組Garbor濾波器提取圖像的特征,以及卷積神經網絡中的第一層,圖像在各個卷積核上的投影。
我們之所以決定使用卷積后的特征是因為圖像具有一種“靜態性”的屬性。也就是說使用卷積就是為了提取顯著特征,減少特征維數,減少計算量。
在對圖像進行卷積操作后的主觀印象:圖像變得模糊了,可是我們依然能夠分辨出是什么!所以卷積就是提取顯著特征!(個人理解,簡單明了)
濾波操作的Matlab實現
Matlab中與濾披相關的函數主要有imfilter和fspecial. imfilter完成濾波操作,而fspecial
可以為我們創建一些預定義的2維濾波器, 直接供imfilter函數使用.
濾波函數imfilter
函數原型如下:
g =imfilter(f,w,optional1,optional2);
參數說明
? f是要進行濾波操作的圖像.
? w是濾波操作所使用的模板,為一個二維數組.
? option 1, option2, … 是可選項, 具體可以包括:
(1)邊界選項: 主要針對5.2.2 小節中提到的邊界處理問題, 如表5.1所示。
采用第一種方式用固定值填充虛擬邊界會使邊緣附近會產生梯度, 采用后面三種方式填
充可讓邊緣顯得平滑。
fspecial創建預定義的二維濾波器
其調用格式如下
h = fspecial(type,paramaters)
參數說明:
參數type用于指定濾波器的類型,其中一些類型的濾波器將在5.3節和5.4節中介紹,有些則將放到第9章的圖像分割中介紹,作為邊緣檢測的算子.type的一些合法值 如表5.4所示.
圖像平滑
圖像平滑是一種可以減少和抑制圖像噪聲的實用數字圖像處理技術。在空間域中一般可以采用鄰域平均來達到平滑的目的。
平均模板及其實現
從圖5.2濾波前后的效果對比可以看出濾波后的圖g有平滑或者說模糊的效果, 這完全
是模板w作用的結果。例5.1中的w提供了一種平均的加權模式, 首先在以點(x, y ) 為中
心,3×3鄰域內的點都參與了決定新圖像g中(x,y)點像素值的運算:而且所有系數都為1
表示它們在參與決定g (x, y) 值的過程中貢獻(權重)相同:而前面的系數則保證了整個
模板元素和為1, 這里應為1/9, 這樣就能讓新圖像和原始圖像一樣, 保持在一個灰度范圍中
〈如(0, 255]). 這樣的w叫做平均模板, 是用于使圖像平滑的模板中的一種, 相當于一種局
部平均。更一般的平均模板為:
工作原理
一般來說,圖像具有局部連續性質,即相鄰像素的數值相近,而噪聲的存在使得在噪聲
點處產生灰度跳躍,但一般我們可以合理地假設偶爾出現的噪聲影響并沒有改變圖像局部連
續的性質,例如下面的局部圖像f_sub,灰色底紋標識的為噪聲點,在圖像中表現為亮區中的
2個暗點:
顯然,通過平滑濾波原局部圖像f_sub中噪聲點的灰度值得到了有效修正,像這樣將每
一個點用周圍點的平均替代從而達到減少噪聲影響的過程就稱為平滑或模糊.
Matlab實現
I = imread('baby_noise.bmp'); h = fspecial('average',3); I3 = imfilter(I,h,'corr','replicate'); h = fspecial('average',5); I5 = imfilter(I,h,'corr','replicate'); h = fspecial('average',7); I7 = imfilter(I,h,'corr','replicate'); figure; subplot(2,2,1); imshow(I),title('原圖');subplot(2,2,2); imshow(I3),title('3*3'); subplot(2,2,3); imshow(I5),title('5*5'); subplot(2,2,4); imshow(I7),title('7*7');
上述程序的運行效果如圖 5.3 所示, 可以看出隨著模板的增大, 濾波過程在平滑更多噪聲的同時也使得圖像變得越來越模糊,這是由平均模板的工作機理決定的。當模板增大到7×7時, 圖像中的某些細節,如衣服上的褶皺已經難以辨識了, 紐扣也變得相當模糊。 實際 上, 當圖像細節與濾波器模板大小相近時, 圖像細節就會受到比較大的影響, 尤其當它們的灰度值比較接近時, 混合效應導致的圖像模糊會更明顯。 隨著模板地進一步增大, 像紐扣這樣的細節都會被當作噪聲平滑掉. 因此, 我們在確定模板尺寸時應仔細考慮要濾除的噪聲點的大小, 有針對性地進行濾波.
高斯平滑及其實現
平均平滑對鄰域內的像素一視同仁, 為了減少平滑處理中的模糊, 得到更自然的平滑效
果, 則會很自然地想到適當加大模板中心點的權重, 隨著遠離中心點, 權重迅速減小, 從而
可以確保中心點看起來更接近與它距離更近的點, 基于這種考慮得到的模板即為高斯模板。
常用的3×3的高斯模板如下所示:
matlab實現
I = imread('baby_noise.bmp'); h3_5 = fspecial('gaussian',3,0.5); I3_5 = imfilter(I,h3_5);h3_8 = fspecial('gaussian',3,0.8); I3_8 = imfilter(I,h3_8); h3_18 = fspecial('gaussian',3,1.8); I3_18 = imfilter(I,h3_18);h5_8 = fspecial('gaussian',5,0.8); I5_8 = imfilter(I,h5_8);h7_12 = fspecial('gaussian',7,1.2); I7_12 = imfilter(I,h7_12);figure; subplot(2,3,1); imshow(I); subplot(2,3,2); imshow(I3_5); subplot(2,3,3); imshow(I3_8); subplot(2,3,4); imshow(I3_18); subplot(2,3,5); imshow(I5_8); subplot(2,3,6); imshow(I7_12);上面介紹的平均平滑施波器和高斯平滑濾波器都是線性平滑濾波器, 在學習頻率域濾波
之后, 還可以為它們賦予另外一個名字一一低通濾波器。
自適應平滑濾波
利用平均模板的平滑消除噪聲的同時也會使圖像變得模糊. 高斯平滑在一定程度上緩解
了這些現象, 但由平滑濾波機理可知這種模糊是不可避免的。這當然是我們所不希望的. 于
是想到選擇性地進行平滑,即只在噪聲局部區域進行平滑,而在無噪聲局部區域不進行平滑,
將模糊的影響降到最低, 這就是自適應濾波的思想.
如何判斷該局部區域是包含噪聲需要平滑的區域還是無明顯噪聲不需平滑的區域? 這
要基于噪聲的性質來考慮, 5.3.1小節討論了圖像的局部連續性質, 噪聲的存在導致在噪聲點
處產生灰度跳躍, 從而使噪聲點局部區域灰度跨度較大. 因此可以選擇如下兩個標準中的1
個作為局部區域存在噪聲的判據:
對于那些噪聲位置具有隨機性和局部性的圖像, 自適應的濾波具有非常好的效果. 有興
趣的讀者可自己編制程序實現自適應的高斯平滑算法, 應用于具有上述特點的噪聲圖像中,
并且,和我們給出的標準高斯平滑效果進行比較.
總結
- 上一篇: javamail实现邮箱验证功能
- 下一篇: 刚入职场的菜鸟,这些大数据知识点,你必须