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);
越到後面的章節越難懂。
希望老師可以說明第五章。
沒有留言:
張貼留言