作者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
1F:→ jaw109:问题是 真的精准你分辨得出来吗? 除以3可能是考虑速度 04/08 23:05
2F:→ jaw109:除以256的确是0~255啊 04/08 23:05
3F:→ snowlike:当然除以3也是灰阶,那些比例是根据肉眼对RGB的敏感程度 04/08 23:36
4F:→ devilrucifer:感谢大大们推文 ^^ 04/08 23:55