2008年12月4日 星期四

Chapter 5

NEIGHBORHOOD PROCESSING

5.1 Introduction
neighborhood processing的構想是一個移動的mask。一個長方形或是其他形狀的影像。建立一張pixels的灰階值是由mask的灰階值計算出來的新圖片。mask與function的組合稱為filter。
如果是linear function,又稱為linear filter。

一個linear filter可藉由將mask的每一個值各與neighborhood相對位置的值相乘後加總。

spatial filtering三個步驟:
1. 放置mask在current pixel上。
2. 計算出各filter element與neighborhood上相對位置的值的乘積。
3. 加總所有的值。

spatial convolution:
與spatial filtering相同方法,但filter element在乘與加之前必須旋轉180度。大多數的filter mask都會rotationally symmetric(旋轉對稱),所以spatial filtering與spatial convolution會產生同樣結果。

averaging filter:
一種linear filter,是使用3*3的mask,filter是1/9*mask。利用spatial filtering算出的值等於是原圖的9個值取平均。
‧x = magic(n);
形成一個邊長為n的方形矩陣(n*n),n填入1.2.3....n,需要滿足各列、各行、各對角線的值的總和。

ex. >>x=uint8(10*magic(5))
利用magic()建立一5x5的矩陣,在乘以10倍的大小。

‧mean2(x(1:3,2:4));
對x矩陣的第一列到第三列與第二行到第四行的所有值取平均。


5.2Notatoin

5.2.1 Edges of the Image
圖的邊緣值做filteringt時,mask超出界外,需要用不同的方法處理。

‧Ignore the edges
會產生比原圖還小的圖。
     
‧Pad with zeros
邊緣值不做filtering都填入0。會得到與原圖一樣大的影像,但卻有introducing unwanted artifacts的結果。(introducing unwanted artifacts是怎樣的結果?)

5.3 Filtering in MATLAB

‧filter2(filter,image,shape); =>做linear filtering。"shape"用到3種方法,same、valid、full。
‧filter2(filter,image,'same'); =>做linear filtering。產生原本的大小
‧filter2(filter,image,'valid'); =>做linear filtering,產生比原圖還小的圖。
‧filter2(filter,image,'full'); =>周圍的值補0後,再做linear filtering。產生比原圖還大的圖。

ex. >> filter2(a,x,'same') 是5*5的話
>> filter2(a,x,'valid') 變成3*3
>> filter2(a,x,'full') 變成7*7


‧zeros(7,7); => 7*7的零矩陣。
‧fspecial('average',[5,7]); => 一個5*7大小的averaging filter。
‧fspecial('average',11); => 一個11*11大小的averaging filter。
‧fspecial('average'); => 一個3*3大小的averaging filter。


5.4 Frequencies:Low- and High-Pass Filters

frequencies:不同距離灰階值的改變量。
‧High-frequency components:characterized by large
changes in gray values over small distance.短距離灰階值有大的改變。(不懂?)

‧Low-frequency components:the magie characterized by little
changes in gray values.長距離灰階值有小的改變。(不懂?)
      
‧high-pass filter:略過high-frequency components,減少或消除low-frequency components。

由課本圖可知high-pass filtering可讓邊緣清晰化。

‧low-pass filter:略過low-frequency components,減少或消除high-frequency components。

灰階值不在0-255:
‧Make negative values positive.
只能處理負數,無法解決大於255的數。適用於少數的負數,且這些數接近0。
‧lip values.
不適用於超過0-255範圍的數。如果灰階值散播在大的範圍,這個做法會毀壞filter的結果。
‧caling transformation.
y = 255 x[ (x-gL) / (gH-gL)]

‧ mat2gray(cf2); =>scaling transformation。

5.5 Gaussian Filters
Gaussian Filters是low-pass filter的一種,以Gaussian probability distribution function為基礎。較大的standard deviation值會產生較flatter的曲線。較小的standard deviation值會較pointer的曲線。
Gaussian filter重要的原因:
1.數學上多種通用的。Gaussian filter的Fourier transform也是另一個Gaussian。(不懂?)
2.旋轉對稱的,edge-detection演算法好的開始點。
3.可分解的,可分解成x方向的一維Gaussian加y方向的一維Gaussian。
4.兩個Gaussian的convolution會是另一個Gaussian。
 
  
5.6 Edge Sharpening
Spatial filtering可使圖片裡的edge變清晰,這個處裡稱為edge enhancement or edge crispening or unsharp masking。

5.6.1 Unsharp Masking
Unsharp Masking是原本影像減去一個模糊影像讓影像裡的edge變得清晰。
   
5.6.2 High-Boost Filtering
high boost = A*(original) - (low pass) (low pss=original-high-pass)
 A是擴大的係數(amplification factor),如果A=1,會是普通的high-pass filter。

5.7 Nonlinear Filters
nonlinear filter:從nonlinear function 獲得 grayscale value在mask中
‧maximum filter:會造成較亮的效果。
‧minimum filter:會造成較暗的效果。
=>maximum filter,minimum filter也是rank-order filte

nlfilter(c,[3,3],'max(:))'): 對影像c使用3*3 neighborhood,執行的maximum filter
nlfilter(c,[3,3],'min(:))'): 對影像c使用3*3 neighborhood,執行的minimum filter
colfilt(c,[3,3],'sliding',@max):sliding指出重疊的edge將被使用
ordfilt2(c,9,ones(3,3)):建立一個maximum filter。
ordfilt2(c,1,ones(3,3)):建立一個minimum filter。
ordfilt2(c,5,ones(3,3)):建立一個median filter。

‧eometric mean filter:用於image restoration

5.8 Region of Interest Processing

ROI processing。(不懂何種處理是
ROI processing?)

5.8.1 Regions of Interest in MATLAB
roipoly(ig,[406 600 600 406],[58 58 231 231]);
=>以binary image形成的mask,選取的區域為1,其餘為0。

5.8.2 Region of Interest Filtering

roifilt2(a,ig,roi);


越到後面的章節越難懂。
希望老師可以說明第五章。

沒有留言:

張貼留言