作者devilrucifer (devilrucifer)
看板C_and_CPP
標題[問題] 關於RGB轉灰階的程式碼問題
時間Wed Apr 8 22:55:39 2009
各位板大好:
小弟因為最近剛開始學影像處理,所以有很多東西不懂,
在此想請教一下各位先進關於灰階轉換的問題,常見的兩種的算式
Gray=(B*28+G*151+R*77)/256
OR
gray=R*0.299+G*0.587+B*0.114
請問要用哪一種會比較精準,還是是沒差的呢?
還有想請教為什麼RGB要乘於那些係數呢?
最後除以256是為什麼呢?灰階不是只有0-255?
還有小弟有看過這種程式碼
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
int x,y,graylevel;
for(y=1;y<=Image1->Height;y++)
{
for(x=1;x<=Image1->Picture->Width;x++)
{
TCColor c=Image1->Canvas->Pixels[x][y];
graylevel=((int)c.Red+(int)c.Green+(int)c.Blue)/3;
Image1->Canvas->Pixels[x][y]=TCColor(graylevel,graylevel,graylevel).Color;
}
}
}
//---------------------------------------------------------------------------
請問為什麼程式碼可以這樣寫,他的意思是什麼?RGB加起來除以3也是灰階嗎?
煩請有空的版友撥空回覆一下小弟,小弟感激不盡。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 203.64.186.222
→ jaw109:問題是 真的精準你分辨得出來嗎? 除以3可能是考慮速度 04/08 23:05
→ jaw109:除以256的確是0~255啊 04/08 23:05
→ snowlike:當然除以3也是灰階,那些比例是根據肉眼對RGB的敏感程度 04/08 23:36
→ devilrucifer:感謝大大們推文 ^^ 04/08 23:55