2010年1月6日 星期三

HW6

這次做的是filter運用



分別有兩個

1.平滑化
(filter範圍內的值分別乘以filter範圍內的色彩值後相加)/filter值的和。

PS. filter值的和不為0

EX:以3*3來說,這9個座標內的色彩值相加/9,再把值傳回。
1,1,1
1,1,1
1,1,1

簡單說就是中心點+8近鄰去平均再傳回,所以值會被周圍色彩值影響變的較為平滑。


===========================================================
原圖





===========================================================
5*5

1,1,1,1,1
1,1,1,1,1
1,1,1,1,1
1,1,1,1,1
1,1,1,1,1






___________________________________________________________


2.銳利化
這邊Filter跟前面其實很像

(filter範圍內的值分別乘以filter範圍內的色彩值後相加)

PS. filter內的值和要為0

不過要注意因為有負數,所以當抓取RGB色彩值時要轉成int再去做運算

當做完恭喜你,你已經做好了拉普拉斯轉換!!

不過這只是中心點與8近鄰差異量。

所以銳利化 = 中心點色彩值 + 常數C * 拉普拉斯(中心點與8近鄰差異量)。

常數C 為判斷加或減所以值為 +1 or -1 (看中心點為正就加,反之則減) 。

差點忘了!!由於它是屬於+ - 運算,所以可能小值減大值,或大值+大值,發生溢位。

所以要記得收斂到0~255(就超過255就給255,低於0就給0)。

所以公式就是 原圖+(拉普拉斯)

當拉普拉斯為正才顏色較深,反之為負較淺,所以就有銳利效果。

===========================================================

所以

0,-1, 0
-1, 4,-1
0,-1, 0



0, 1, 0
1,-4, 1
0, 1, 0

是一樣低





===========================================================

-1,-1,-1
-1, 8,-1
-1,-1,-1



1, 1, 1
1,-8, 1
1, 1, 1




由此兩張圖可知,受越多鄰近影響,銳利化程度越明顯。


===========================================================


下圖就貼一下有程式低~~證實




貼一張5*5低

-1,-1,-1,-1,-1
-1,-1,-1,-1,-1
-1,-1,24,-1,-1
-1,-1,-1,-1,-1
-1,-1,-1,-1,-1






補充:

至於為啥轉換過後的圖都有一層白框,

那是因為我們用ScanLine,把它當二維陣列中的一維

3*3
ScanLine[i-1]
ScanLine[ i ]
ScanLine[i+1]

5*5
ScanLine[i-2]
ScanLine[i-1]
ScanLine[ i ]
ScanLine[i+1]
ScanLine[i+2]

而ScanLine[?]------------> ?=0

所以起始位置以3*3來說(1,1)開始填,5*5的話就是(2,2)。

沒有留言:

張貼留言