色彩模型
RGB色彩模型
R(紅色)、G(綠色)、B(藍色)三原色來決定所顯示出的顏色。
若要表示所有顏色需要一個三維空間,因此在平面的螢幕上是做不到的。
因此若要在平面上表示顏色,我們採用了一張圖片+拉條的方式來呈現。
以拉條決定R、G、B其中一個的值,就可以用一張圖片來顯示該範圍內的所有顏色。
YUV色彩模型
以Y(明亮度)、U(彩度)、V(彩度)才決定所呈現的顏色。
實作YUV色彩模型
上方三張圖片為在不同的Y(亮度)情況下所呈現出來的UV平面。
在實作的前提下,必須將YUV的範圍也看成0~255以便轉換成RGB色彩模型中的顏色,整數空間中的公式會比實數空間中的公式淺顯易算得多。
將YUV轉換為R、G、B後即可以顯示在程式上。
點擊YUV色彩模型為圖片加上遮罩
要為圖片加上顏色遮罩,首先必須把原圖片的RGB轉換為YUV,並只保留Y(亮度值)。
UV則以點擊的位置來決定彩度的多寡。
這邊多為了不同的YUV色彩模型的亮度做了處理,遮罩的亮度亦會影響到原始圖片的亮度,但仍會保留原始圖片各個像素的亮度差異。
一旦點擊到了YUV色彩模型,程式會將原始圖片轉換後的Y保留,並以點擊事件中的X、Y參數來決定U、V值(因為圖片大小已設為256,因此X,Y參數皆為0~255,則可直接視為U、V值),在依TrackBar所指定的Y值對原始圖片的Y值做亮度處理,這邊採用:圖片轉換後的Y值-(255-TrackBar指定Y值)的方式對亮度做出差異。
YUV運算好之後需要再轉換回RGB才能填入圖片中顯示。
結論
三維空間中才有辦法顯示出所有顏色,不論是RGB色彩空間或YUV色彩空間皆是如此,因此選用了指定某值,顯示其餘兩值的平面的方式來實作色彩空間的顯示。
原本在點擊套用濾鏡時,YUV色彩模型的亮度不會影響到原始圖片轉換後的Y值,但是覺得YUV亮度不同的情形下應該也要做處理,因此加上了針對點擊位置亮度作調整的步驟。
沒有留言:
張貼留言