为了账号安全,请及时绑定邮箱和手机立即绑定

将RGB转换为灰度/灰度

将RGB转换为灰度/灰度

将RGB转换为灰度/灰度当从RGB转换为灰度时,应该使用R、G和B通道的特定权重。这些重量是:0.2989,0.5870,0.1140。据说,造成这种情况的原因是人类对这三种颜色的不同感知/感受。有时还会说,这些是用来计算NTSC信号的值。然而,我并没有在网上找到一个很好的参考资料。这些价值观的来源是什么?另见前几个问题:这里和这里.
查看完整描述

3 回答

?
元芳怎么了

TA贡献1798条经验 获得超7个赞

以下是c中的一些代码,用于将RGB转换为灰度。RGB对灰度转换的实际权重为0.3R+0.6g+0.11B。这些重量并不是绝对重要的,所以你可以和它们一起玩。我做了0.25R+0.5g+0.25B。它会产生一个稍微暗一些的图像。

注意:以下代码采用xRGB 32位像素格式

unsigned int *pntrBWImage=(unsigned int*)..data pointer..;  //assumes 4*width*height bytes with 32 bits i.e. 4 bytes per pixel
unsigned int fourBytes;
        unsigned char r,g,b;
        for (int index=0;index<width*height;index++)
        {
            fourBytes=pntrBWImage[index];//caches 4 bytes at a time
            r=(fourBytes>>16);
            g=(fourBytes>>8);
            b=fourBytes;

            I_Out[index] = (r >>2)+ (g>>1) + (b>>2); //This runs in 0.00065s on my pc and produces slightly darker results
            //I_Out[index]=((unsigned int)(r+g+b))/3;     //This runs in 0.0011s on my pc and produces a pure average
        }


查看完整回答
反对 回复 2019-07-09
  • 3 回答
  • 0 关注
  • 888 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信