2016年12月30日 星期五

03360404 許淳翔, HW06

HW06:YUV

一.YUV作法:
1.先做顏色方塊:
這是用來讓使用著選取他需要的YUV值的方塊,
你可以當作他就是個爭方形顏料盤~~
跟曲線一樣(事實上我界面將他與曲線放在同個位置用分頁分割)
我把它做成函數~~並且當成是一執行它就會先跑一次!!
把預設的顏色盤顯示出來~~

a.先讓Y值 = 進度條的值(TrackBar1->Position)我是這樣稱呼這個元件。
預設刻度為0(最暗),最大是10!!(最亮)
讓Y在乘上255/10這樣到最大值時就剛好會是255
把Y的參數值顯示出來(在方塊底下)

iY =  Form1->TrackBar1->Position ;
iY *= 255   ;
iY /= 10 ;
Form1->Edit6 -> Text = IntToStr ( iY ) ;

b.之後就是套公式求出256*256方塊的色彩值
UV個用長跟高的像素點帶入(迴圈裡的i與j)
全部最重要的就是這YUV轉RGB公式~~上wiki查就有了!!
但我還真不知道這公式如何而來~~因該是專家求出來的吧!!

c.之後就要判斷他是否超過0~255!!

d.輸出方塊就行了!!這樣顏色方塊就做好了!!

2.對原圖做運算..
a.對顏色盤使用MouseDown事件:
這個東西困擾了超級久!!因為我不知道如何開啟這個功能!?
我一開始以為是涵式!!所以我上網找!!
之後我就找到了....我直接對顏色盤的圖片點兩下!!
並把他的涵式改為了

void __fastcall TForm1::Image19MouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y){}

...最後你會線即使在裡面塞入 i = i 這樣的廢文他還是不會跑!!!
之後我隔了一星期,在上課時問賴X洪時我才知道我有多傻!!
原來只要找到我圖片元件Image19的屬性窗,那上面有個event分頁!!
裡面找到MouseDown點兩下!!就能開始寫了....
所以說有些功能你不熟悉~~真的會害死人!!

b.算出YUV值
Y值 = 原圖(帶入RGB轉YUV公式)再加入顏色盤的Y值除2:
這樣進度條的亮度才有用!!
如果沒這樣做~~那你的Y值永遠都是固定(圖片的)
沒辦法用進度條調亮度!!那會變成擺設,只能看不能用!!

U值用顏色盤的X座標!!
V值用Y座標!
把U跟V值顯示出來

c.用YUV轉RGB公式把變化圖算出來!!
d.顯示變化圖!!

二圖:
原圖:

Y=0的調色盤
變化:
Y=128的調色盤
變化圖:
Y=255的顏色圖


變化圖:


三.感想:
當發現自己卡了這麼久的東西,原來是這麼間單的時候~~蠻不爽的!!
但越過了這個瓶頸之後就一馬平川的將它完成了!!
其實我還可以再加上一些功能,但那時已經要下課了~~
而且還有作業的報告要改~~我就先克制沒有去改它了!!
所以說我這次作業可以說跟別人長得是一模一樣的!!
頂多是界面不一樣而以...沒有像之前加上一些自己喜歡的功能!!
這是暪可惜的地方~~

沒有留言:

張貼留言