字體:小 中 大 | |
|
|||||||||
2009/03/08 14:25:21瀏覽7657|回應2|推薦10 | |||||||||
這學期上了資工系所開設的「電腦視覺導論」,在朋友給了我一些範例程式碼後,開始寫一些課本上有介紹到的影像處理。 上次她問我,她寫了一個程式,把圖片放大之後圖片卻變暗了,要怎麼處理? 我想說,那就再寫一個可以把圖片變亮的程式呀! 於是著手寫這個程式。 由於我們之前有教到RGB色彩模式轉HSV色彩模式,簡單介紹一下: RGB色彩模式,R為red(紅),G為green(綠),B為blue(藍), HSV色彩模式,H為hue(色調),S為saturation(飽和度),V為value(亮度), (欲知詳情請見Wikipedia: http://en.wikipedia.org/wiki/HSL_and_HSV) 所以就想出了以下解決步驟:
但是這些步驟卻遇到了以下麻煩:
所以上網找了HSV、RGB的轉換公式(就是上面給的網址), 經測試後沒問題(RGB轉HSV後再轉回RGB,圖片看起來差異不大,但是RGB值有改變一些,畢竟這是透過數學公式計算的)。 接下來就是V值的問題了! 一開始我是用這個算法:V = V + (1 - V) * 0.25; 但是卻發現紅色暗處會變太亮,在經過幾番嘗試之後,改為: if (V < 0.5) 果然好些! 但又覺得改變亮度太大的話,變的很奇怪,感覺對比也變了。 又是幾番嘗試之後,加上了這些程式碼: if (filter_brightness >= 5) 沒想到效果真的變的比之前好很多。 最上面那九張圖是程式執行後的結果, 左上輸入值為-10,第二張輸入值為-8,第三張輸入值為-5, 做完又是滿滿的成就感。 雖然沒有學過改變亮度的演算法,但是這樣做出來效果也不錯。 希望電腦視覺導論能夠學習到更多好玩的東西! |
|||||||||
( 知識學習|其他 ) |