Wednesday, November 07, 2007

Chapter5-Neighborhood Processing-理論篇(未完成)

5.1 Introduction
一開始先說明了filter,filter是mask與function的組合,也就是用來做運算處理的一個陣列(這一段我自己加的),利用filter便可以將圖片做出類似柔邊(模糊)的效果,若function為linear function則稱為linear filter.

另外說明了一些較簡易的filter做法,例如page 90的平均值做法

5.2 Notation
簡述關於filter中的mask怎麼製作
不過我覺得重點應該在5.2.1 Edges of the Image
邊緣的處理方法有兩種Ignore the edges 和 Pad with zeros
(1)Ignore the edges - 這種方法是忽略邊緣,也就是邊緣不做處理,但是這種方法會讓邊緣的pixel消失,造成處理過後的圖比原圖小的狀況,假設mask很大則產生出來的圖可能會消失.

(2)Pad with zeros - 這種方法是事先在邊緣外加上一層零,之後在做處理,這種方法可以讓原圖不會縮小,但是mask若變大則會在邊緣產生類似黑色框架的東西.

5.3 Filtering in MATLAB
本章節是在說明MATLAB上的一些程式碼
第一個就是 filter2 (filter,image,shape) , 首先第一個參數就是要用來運算的filter,第2個就是要處理的原圖,第三個就是對於image邊緣的處理.
直接說明第三個參數shape
有下列三種
(1)same - 會維持原圖大小
(2)valid - 忽略最外圍的那一層pixel,若在最外圍加上一層零,則可達成與same相同的效果.
(3)full - 處理完後會擴張image陣列的大小
如果沒有輸入則預設為same

第二個是fespecial('average', )
這個程式碼是取陣列的平均數當做filter
第二個參數可以輸入[5,3](陣列大小),11(11*11的陣列),如過沒有輸入則預設為3*3的陣列

Wednesday, October 31, 2007

Chapter4-Point Processing

4.2 Arithmetic Operation

這一節是在介紹有關使用算式來執行影像處理的部分
原圖a: 原圖b:


用whos a取得原圖1的資訊


Name Size Bytes Class Attributes

a 288x288 82944

由於a為uint8的型態所以必須轉為double,再加上128=>a1=uint8(double(a)+128)

a1=uint8(double(a)+128)也可以寫成a2=imadd(a,128)兩者執行的效果一樣
a1=uint8(double(a)+128):
a2=imadd(a,128):



執行乘除法的結果
a3=immultiply(a,0.5):
a3=imadd(immultiply(a,0.5),128):
a3=immultiply(a,2):


也可以使用imcomplement來達到類似底片的效果
bc=imcomplement(b):
ac=imcomplement(a):

4.3Histogram
此章節第一個重點在顯示一張圖的Histogram,藉此去了解這張圖片的顏色屬性
原圖3:

imhist(a),axis tight=>輸出原圖3的Histogram與座標軸


第二個重點就是使用imadjust取的gamma值,且使用plot將2張圖做比較
ah=imadjust(a,[],[],0.5):
plot(a,ah,'.'),axis tight:



第三個重點就是利用imdivide(功能不明)histeq
an=imdivide(a,4):
imhist(an),axis tight:
an=imdivide(a,0.5):
imhist(an),axis tight:
ah=histeq(a):
imhist(ah),axis tight:



至於page77的程式碼還沒執行過所以不確定在做什麼(待補!)