2011年1月6日 星期四

HW4

這次作業是濾鏡處理,包括平滑化、銳利化和去除胡椒鹽的功能。

首先是平滑化,使圖片看起來變的模糊。














平滑處理後可觀察到邊緣變的模糊,有雜質的地方變的較均勻、不明顯。

原理很簡單,就是把自己和周圍八個像素點的色彩值做平均。

模糊後(中中) = (左上 + 中上 + 右上
.........................左中 + 中中 + 右中
.........................左下 + 中下 + 右下) / 9


從左而右,由上而下,每個像素都做一次,如此就可以讓邊緣銳利、有雜質的圖,變的平滑、模糊。

寫成程式碼:









接著是銳利化,讓圖片變的更銳利、色彩分明。














銳利化處理後使得圖片的細部變得更明顯,與平滑化相反。

原理是把自己的色彩值乘"9",再減去周圍"八"個像素點色彩值,
(或者是把自己的色彩值乘"5",再減去周圍"四"個像素點色彩值)
若減完後的值小於0則等於0;大於255就等於255。

銳利後(中中) = 中中*9 - (左上 + 中上 + 右上
.......................................左中 + 中中 + 右中
.......................................左下 + 中下 + 右下)
if(中中 < 0) 中中 = 0
if(中中 > 255) 中中 = 255

寫成程式碼:











最後是胡椒鹽處理,顧名思義就是去除有如胡椒鹽一顆一顆這樣的雜質。














如圖,色彩值過分差異的點都去除了!

原理一樣很簡單,把自己和周圍八個點的色彩值做排序,取中位數即是答案。
之所以要取中位數是因為排序完後,色彩值過分差異的值都排到很前面或很後面,在取中位數時就不會選到,只會選到9個點中最平均的那個值。

因為要做排序,我先宣告一個陣列來存放色彩值,然後做排序,
排序完後印出陣列[5]即是去除胡椒鹽後的結果!

例如:30,40,41,45,56(中位數),57,58,60,230(胡椒鹽)

不過再仔細看一下上圖,去除後的影像仍有一些沒去除乾淨,
那是因為該3*3的範圍中胡椒鹽過多,超過一半以上,
導致排序完取中位數後仍然取到胡椒鹽,這是正常的。

例如:20,25,26,240,244(中位數),246,250,255,255

這時原本應為胡椒鹽的也不胡椒鹽了!

寫成程式碼:

沒有留言:

張貼留言