2010年11月5日 星期五

作業一


題目: 將一張彩色影像轉成灰階影像後, 再對灰階影像進行色彩量化處理, 分別用 128 色, 64 色, 32 色, 16 色, 8 色, 4 色, 2 色(黑白影像) 顯示。

但是我只做出了2色的,很簡單的想法是把256色的灰階拆成兩半,0~127為白色而另外128~256為黑色,這就是所謂的二值化。我找了很多的資料,但是都很複雜,
有的用陣列的方法是例如:

24bit-> 16bit比较的容易,因为graylevel = 0.29 * R + 0.59 * G + 0.11 * B, 因为人的眼睛对灰度比较敏感,16bit 不能被3整除,而Green通道对灰度的贡献是比较大的,所以对Green通道的量化细一些,R:G:B = 5:6:5,Green通道多分了一个bit,就是这个道理,24bit转16bit按照如下公式即可,(C描述)
R_16Bit = R_24Bit > > 3;
B_16Bit = B_24Bit > > 3;
G_16Bit = G_24Bit > > 2; Color_16Bit = ((short)R_16Bit < <>

真的有點看不懂,所以到最後還是去看同學的心得才寫出來。找資料的時候,我總是希望有人可以提供程式碼出來,但這一切都是幻象,因為真正的程式也是別人想出來的,必須要從理論著手,不過真的思考上打結了,所以雖然大概知道概念,但總是打不出來,所以必須要多練熟BCB並且把影像處理的概念多弄熟,這樣對寫程式才有幫助,這是最近找資料遇到的瓶緊,下次我會好好的先了解一些概念,在開始打程式,而不是一開始就有人幫你打好了,而且就算有程式,沒概念的人一樣不會打。

上課之後,藉由老師的講解有把剩下的程式打出來,也做出了2bit,4bit,8bit,16bit,32bit,64bit,128bit

2bit
4bit
8bit
16bit
32bit
64bit

128bit

經過老師的講解,其實這個作業並沒有想像中的這麼難,主要就是將灰階的256色給轉換罷了,
如果要2色就將256色切成2種顏色,前面0~127為一種後面,128~255是一種,如果是4色的話就是將全部分成四個顏色也就是:0~64,65~127,128~192,192~255,所以主要是先確定要分幾個顏色,然後用for迴圈把顏色分段,例如0~64為同一種顏色65~127為一種顏色...等等,所以其實這次的作業並不難,再說這次我自己被自己給誤導,其實只要了解概念就可以寫得出來,而我一直認為要去上網找看有沒有人分享類似的程式碼,結果找的都是不一樣的,不過這也是一個經驗,至少知道以後必須要有一些概念與知識。


沒有留言:

張貼留言