↑這次作業一開始我有跟上..,例如做RG,固定紅色色彩值由上至下從0到255, 固定綠色色彩值由左至右從0到255
TrackBar來控制整個藍色的的值。(另外兩個GB和RB也一樣)
程式碼如下:
for(int i=0;i<255;i++)
{
RG=(Byte *)Image2->Picture->Bitmap->ScanLine[i];
for(int j=0;j<255;j++)
{
RG[j*3]=temp; //藍色的值
RG[j*3+1]=j; //綠色的值
RG[j*3+2]=i; //紅色的值
}
}
Image2->Refresh();
↑這次作業要先將灰階值算出來,
RGB 轉 YUV的公式如下:
Y = ( ( 66 * R + 129 * G + 25 * B + 128) >> 8) + 16
U = ( ( -38 * R - 74 * G + 112 * B + 128) >> 8) + 128
V = ( ( 112 * R - 94 * G - 18 * B + 128)>> 8) + 128
y的值也就是灰階,轉換程式碼如下,
int grayY = ( ( 66 * grayImg[j*3+2] + 129 * grayImg
[j*3+1] + 25 * grayImg[j*3] + 128)>> 8) + 16 ;
//先將R*乘上66加上G乘上129再加上B乘上25加128後向右移8位元最後再加上16
↑接下來點選不同的UV值給它,U是色度,V是濃度。
↑最後是將HSI轉換成RGBH:色相是色彩的基本屬性,就是平常所說的顏色名稱,如紅色、黃色等,依照在上圖的標準色輪上的位置,取0~360度的數值。(也有用到0~100%的方法確定的)S:飽和度是指色彩的純度,越高色彩越純,低則逐漸變灰,取0~100%的數值。V:是明度也叫亮度,取0~100%。
沒有留言:
張貼留言