第三篇 颜色的合成与计算

 前面的文章虽然有提到颜色,有提到三原色和亮度,但实际上并没有说它是怎么得出来的。我们知道五颜六色的缤纷色彩是三原色组合的,但是具体是怎么组合的,却没有讲。本次,我们就来讨论一下到底颜色是怎么得出来的。

说到颜色合成,就必须说一说颜色加色法,或颜色加法。所谓的颜色加法,就是将三原色按不同数量进行混合,即相加,就可以得到其它的色。先上图吧:

 

    这个就是颜色相加的结果,也是四条公式

红色+绿色=黄色

红色+蓝色=品红

蓝色+绿色=青色

红+绿+蓝=白色

嗯。这四个公式很重要。为什么呢。因为下面我将要详细进行说明。事实上这几个公式,只要接触图像或颜色,基本都需要清楚。并且可以通过观看颜色可以粗略的判断出颜色的值。

 虽然在上一篇文章中,我们分析了BMP格式的数据构成。而在上上一篇中,我也讲了三原色,但是在上面的数据时,我没有真实的去给大家分板每一个数据是什么颜色。又为什么这  个颜色。那么这一节我们将对数据来进行分析。其实只需要简单分析一下就能理解了。

 

 

上图是格式加数据,真实数据是从2C,61,54;31,66,59;35,6A,5D;34,69,5C;那我们就来分析这几个数据。首先,我们有说是三原色,存储时即三个字节,所以这几组数据也就代表了4个像素的数据。以2c,61,54;分别代表好像应该是R:2C G:61 B:54,但要纠正一点,千万别搞错了,正确值是B:2C G:61 R:54。即BGR模式。为什么是这样呢。这是因为存储模式造成的。准确的说,一个rgb值的十六进制是:0xrrggbb形式。前红绿蓝,但到了存储就倒过来了。因为存储是小端模式。关于这个大端小端问题大家可以自己百度一下。本质上就是存储的正序与倒序问题。而我们的BMP采用的是倒序。所以成了BGR模式。好了,我们再来验证一下。另外还有一点要补充,也是重点中的重点。即BMP是按倒序的行模式存储的。这一点不搞清楚也是很痛苦的。还是上一个图吧。

 

 

这个是我们看到的方式,即从左到右,从上到下的值。但存储却不是这样。

存储却是按下图的方式来的。即Y轴的行完全倒过来了。所以在写程序解析图像进必须按倒序来读。

搞清楚这一点了,事情就比较好办了。再上以前的图:

我们在photoshop下,将原图放大1600倍。就可以看到图像的色块。

这是右下角的600倍值。

 

这是1600倍。我们放大这么多倍是为了更好的看到颜色的值。看到左边标尺的值没,已经是1438到底了,因一个数字有两个格子即1438,1439.因为是从0起到1439,所以是1440行。即到了最后一行。

好了,我们看回刚才提到的四个像素颜色值吧。2C,61,54;31,66,59;35,6A,5D;34,69,5C; 因为这个是十六进制数,换成10进制则是:

B:44 G:97 R:84,

B:49 G:102 R:89;  

B:53 G:106 R:93; 

 B:52 G:105 R:92。

好接下来我们将直接展示它们的值。

 从上面的信息也看得出,第一,图像中四个像素主要色还是以绿色为主,且整体偏暗,所以三个色值都不高只有一半不到的值。所谓颜色加色就是将不同的通道设置不同的值就可以得到混合的色。

至此关于颜色就基本上讲完了。一般情况下,如果懂C语言的文件操作的话,基本上可能做到能读取操作这些像素了。下一篇将直接由代码进行读取。整个难度较低。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值