2014年1月3日 星期五

HW5

第五次作業是色彩模型的實作

色彩模型

分別給定B、G和R,下圖為給定BGR為0的值,左邊為BG的混合,中間為BR的混合,右圖則為GR的混合。剛開始都為0,所以每張影像的左上角都為黑色。


下圖為當RGB的值設為255(最大)時所呈現得影像。最後的點都為255,所以每張影像的右下角都為白色。

程式碼:
//最左邊的影像為例
for(j=0 ; j<iImageHeight ; j++)
{
bPtrImageRow = (Byte*)Image1->Picture->Bitmap->ScanLine[j];
for(i=0 ; i<iImageWidth ; i++)
{
bPtrImageRow[3*i]   = i;
bPtrImageRow[3*i+1] = j;
bPtrImageRow[3*i+2] = ScrollBar1->Position;     //紅色值
}
}
================================================================

灰階影像

此次是以這影像作範例


 灰階影像就是將RGB的值帶入YUV裡的Y(明亮),而灰階影像除了黑色和白色之間的灰色層次。
下圖為彩色影像轉換成灰階影像的實作

程式碼:
for(j=0;j<Image5->Picture->Height;j++)
{
bPtrImageRow1 = (Byte *)Image5->Picture->Bitmap->ScanLine[j];
bPtrImageRow2 = (Byte *)Image6->Picture->Bitmap->ScanLine[j];
for(i=0;i<Image5->Picture->Width;i++)
{
ib = bPtrImageRow1[i*3];      //B的值
ig = bPtrImageRow1[i*3+1];    //G的值
ir = bPtrImageRow1[i*3+2];    //R的值
                // Y = ( 66 * R + 129 * G + 25 * B + 128 ) >> 8 + 16
bPtrImageRow2[i*3] = (66*ir+129*ig+25*ib+128)>>8+16;
}
}
================================================================

YUV


================================================================
這次的作業最簡單的部分是色彩模型的實作,因為只要一個色彩會做另外兩個的彩也會,該開始還不太懂要如何下手,老師一指點想一下才發現其實不難,接這灰階影像要搞懂RGB的值乘上多少會變成灰階值,接著計算三個色彩的值帶入公式後,就可以完成灰階影像。還有我覺得這次的作業有比前幾次難上許多,不過老師指點,同學討論還是可以完成這次作業的。


沒有留言:

張貼留言