2016年1月2日 星期六

資工四甲 01360912 陳奕穎 HW5

這次的作業要做出三個 RGB 色彩模型和一個 YUV 色彩模型,並且要能利用這幾個色彩模型來幫一張只有灰階的影像上色,實作我們是用一張彩圖只取其中的 Y ,然後再加上使用者選擇的 U 跟 V 來產生一張新的圖,這是之前就有的作業,這次教授加了一個新的作業──對彩圖取 U 跟 V ,加上使用者調整的 Y 來產生一張新的圖,實作如下圖。

一開始未選擇顏色

從 R = 0 的 GB 平面選左下角的顏色

從 R = 255 的 GB 平面選左下角的顏色

從 G = 0 的 RB 平面選左下角的顏色

從 G = 255 的 RB 平面選左下角的顏色

從 B = 0 的 RG 平面選左下角的顏色

從 B = 255 的 RG 平面選左下角的顏色

從 Y = 0 的 UV 平面選左下角的顏色

從 Y = 255 的 UV 平面選左下角的顏色

新的功課──保留彩圖 U 跟 V 讓使用者選擇 Y


取彩圖 U 跟 V,Y = 0 的結果

取彩圖 U 跟 V,Y = 180 的結果

實驗──保留彩圖 U 跟 V 讓 Y = 使用者選擇 Y + 彩圖原來的 Y


因為如果 Y 完全都由使用者設定就會出現像上面兩張圖一樣奇怪的畫面,因此我後來又做了一項實驗

如果使用者控制 Y = 0 ,Y 就會是原來彩圖的 Y

如果使用者有調整 Y,那 Y = 彩圖的 Y + 使用者的 Y

產生下面這樣的效果
使用者控制 Y = 0

使用者控制 Y = 130

討論 :

在這次得作業中碰到的問題有兩個,第一個是在用教授提供的灰階的範例程式碼,因為有些宣告沒有被宣告在範例程式碼內,沒有被宣告的分別是下面這三個

LOGPALETTE  GrayPalette
PALETTEENTRY PaletteEntry
HPALETTE GrayPaletteHandle

再來就是不論在講義或是我去維基百科上面看到 YUV 的範圍各別是

Y是 [0,1]
U是[-0.436, 0.436]
V是[-0.615, 0.615]

但是我無論怎麼想就是想不到這個範圍怎麼來的,而且套入計算也產生不出所要的 YUV 模型圖,最後我 YUV 的範圍是用 [0, 255] 這個範圍才產出跟講義一樣的模型圖

心得 :

    這次的作業不難,在撰寫程式碼都算是很簡單就寫出來,但是有一些原理的東西我就完全不知道為什麼這樣做就可以出現對的結果,像是 YUV 的範圍,在維基百科裡雖然寫了很多看起來像是在解釋的東西,但是我完全看不懂......,然後還有因為對 XE2 還是不是很熟悉,所以每次在找需要的功能都還是找很久,像是 Trackbar 要怎麼設定它的間隔,就讓我花了很多時間,我看了蠻多之前有修課的人的 blog,想看他們是怎麼設定的,結果發現他們都沒有設定......,所以只能靠自己了,最後找到 Frequency 這個屬性可以設定間隔,而 PageSize 這個屬性可以設定按一下 Tracebar 要移動多少,最後附上這次作業的程式碼
標頭檔

2016/1/7 Edit

因為有同學在參考我的 Blog 後,對我提出疑問,我才發現到我沒有解釋我的程式的功能,所以我就來補上了。

 我這個程式的功能是在利用色彩模型為一張灰階影像上色,我建立的色彩模型總共有四個,依序是

GB 平面 R 可以調 (上面左邊數來第一個)

RB 平面 G 可以調 (上面左邊數來第二個)

RG 平面 B 可以調 (上面左邊數來第三個)

UV 平面 Y 可以調 (下面左邊數來第三個) 

只要使用滑鼠在色彩模型你想要的色彩上點一下,灰階影像 (下面左邊數來第二個) 就會變成你選擇的顏色了,這時你如果去調整你選擇的色彩模型下面的 bar,上色了的影像會因為你選擇的顏色改變了而一起改變,然後最近因為有學 GitHub ,所以就把以前寫過的程式都丟上去了,以下就是我這個作業 GitHub 的連結,阿同學有興趣想載下來的話,只要把檔名為 Project1 以及 Unit1 的載下來放在一起應該就能執行了

沒有留言:

張貼留言