2010年11月5日 星期五

HomeWork1

首先先載入一張圖,並將其轉換成灰階影像,利用FOR迴圈將其三原色RGB顏色(亮度)數值調成一致,再藉由轉換成灰階的公式,產生有明顯亮度變化的灰階影像,如下圖所示:

接著利用上述用來將顏色(亮度)值轉化成一致的FOR迴圈,藉由切割範圍的方式來產生二位元影像,亦即將256中顏色(亮度)值分割成0~127、128~255兩等份,並分別將其轉換成0與255兩個數值,即當搜尋影像顏色(亮度)數值是介於0~127,則將其值改成0,介於127~255之間,則將值改成255,因此當輸出時即會產生黑白壁壘分名的二位元影像,如下圖所示:

四位元、八位元、十六位元、三十二位元、六十四位元、一百二十八位元,均依照上述的方法執行,即將256種顏色(亮度)值切割成四、八、十六、三十二、六十四、一百二十八種範圍,再分別將範圍中的所有顏色(亮度)數值,給定至單一深淺不一的顏色,如此即可產生許多顏色(亮度)漸層不一的數位影像,如下圖所示:
四位元影像:

八位元影像:
十六位元影像:

三十二位元影像:

六十四位元影像:

一百二十八位元影像:

在進行程式撰寫時,最麻煩的莫過於判斷顏色(亮度)數值分布的範圍,本想單純的利用多個IF去進行多次的判斷藉以達到效果,但是使用下來卻極不方便,像一百二十八位元的影像就得有一百二十八種判斷,寫起來相當費時費力,因此後來在FOR迴圈裡去進行更動的方法,便顯得非常簡潔有力,將FOR迴圈中用來累加的正整數I分別做不同大小的累加:I+=127、I+=63、I+=31、I+=15、I+=7、I+=3、I++,透過這些方式便能較方便的制定範圍,在利用一個FOR迴圈內的累加數值J,將RGB三數值合併的程式碼包覆,並從原本的灰階將I值給1改由將I+J值給1,再藉由產生灰階的公式去進行輸出,如此一來便能產生我們所需要的範圍,並能將這些範圍內的數值轉變成各自單一的數值,產生我們所需要的各式影像,藉由這次的作業讓我能夠掌握到影像數位化的基本手法,藉由一些判斷去影響數值的輸出,使得影像能有許多種不同的變化,令我非常印象深刻

沒有留言:

張貼留言