這次作業是濾鏡處理,包括平滑化、銳利化和去除胡椒鹽的功能。
首先是平滑化,使圖片看起來變的模糊。
平滑處理後可觀察到邊緣變的模糊,有雜質的地方變的較均勻、不明顯。
原理很簡單,就是把自己和周圍八個像素點的色彩值做平均。
模糊後(中中) = (左上 + 中上 + 右上
.........................左中 + 中中 + 右中
.........................左下 + 中下 + 右下) / 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
這時原本應為胡椒鹽的也不胡椒鹽了!
寫成程式碼:
沒有留言:
張貼留言