首先计算机图形学的一条原则是,如果它看上去是对的,那它就是对的。所以,对于一些计算模型来说,最重要的是最后拟合的效果。它不一定符合物理,但通常计算都以物理上的考虑为基础。

像素颜色和相关运算的理解

我们常说某件物体是某种颜色的,仿佛颜色是物体的自有属性。其实这样的理解并不正确。颜色是物体反射的光进入眼睛以后给我们的一种感觉。也就是说,除了物体本身的属性,光照条件也是最终看到颜色的决定因素之一。我们说一张纸是白色的,其实是在说这张纸能反射所有的可见光。如果我们以单色光,比如红光照射它,我们看到这样纸就呈现出红色。因为输入的光只有红色,因此纸张也就只能反射红光。所以,如果单论颜色这一概念,应该是光的自有属性(取决于波长),而不是物体的属性。物体所谓的颜色,其实是它在反射过程中所表现出的特点。

由于人眼感光的特点,我们把红绿蓝作为颜色空间的三个分量,不同比例的红绿蓝光混合可以得到人眼对其它颜色的感觉。同时,在约定范围的前提下,分量的数值大小可以表示光的强度。基于这种颜色模型,如果有不同的几束光进入眼睛,我们可以认为等于三个分量叠加以后的光进入眼睛。实际上这也符合这样的直觉:越多的可见光照射物体,物体也就显得越亮。

所以,上面的讨论解释了颜色向量相加的含义。在许多光照模型中,某个点反射的光由好几部分组成:例如自发光,漫反射光,镜面高光,环境光。那么最后反射光给我们的颜色感觉,就是各组成部分光颜色相加以后的结果。总结起来,这样模拟的出发点是:

1.认为有三种基本颜色的光。人眼形成的颜色感觉来自于三种基本光不同比例不同强度的混合。

2.不同颜色的光互不干扰,各自线性叠加。

其实这样考虑很显然有很多与物理现实不符的地方。例如光的波长应当是连续取值的。一些混合光进入眼睛,在计算它们叠加以后的视觉效果上的贡献时,对波长积分,不同波长的光本身的贡献是不同的,应该有个经验系数。显然简化成三种波长的单色光然后线性叠加是简单的处理。

在光照模型中计算反射部分的时候,有所谓反射颜色的属性。比如计算漫反射部分,我们会定义一个材质的漫反射颜色属性。计算反射光颜色的时候,将漫反射颜色属性的分量和入射光对应分量相乘得到最后的结果。这个运算应当怎么理解?

首先我们注意到,反射部分是体现材质自有属性的环节。假设我们都用标准的白光照射,那么材质反射出来的光的颜色就可以作为它自身属性的表示。光经过材质反射,强度必然不会增加,因为部分光将被材质吸收。例如一个白光下呈现红色的材质,就吸收了红色以外的光。所以,材质的漫反射颜色不应该理解为与光的颜色等同的概念,它其实是各个分量的反射百分比。因此它的分量被规定在[0,1]范围内。例如我们定义一个材质的漫反射颜色是(0.8,0,0)意味着它反射80%的红色光,吸收了全部的绿光和蓝光。
————————————————
版权声明:本文为CSDN博主「zsffff」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u013476163/article/details/73564941

像素颜色和颜色向量相加相乘的理解相关推荐

  1. 【PyAutoGUI操作指南】05 屏幕截图与图像定位:截图+定位单个目标+定位全部目标+灰度匹配+像素匹配+获取屏幕截图中像素的RGB颜色

    6 屏幕截图与图像定位 PyAutoGUI可以拍摄屏幕截图,将其保存到文件中,并在屏幕中定位图像.OSX使用操作系统附带的screencapture命令.Linux使用scrot命令,可以通过运行su ...

  2. 【Android 应用开发】Paint 滤镜原理 之 颜色矩阵 ( 颜色模式 | 颜色通道 | 颜色矩阵 | 矩阵运算 | 矩阵乘法 | 矩阵加法 | 颜色矩阵深入解析 )

    文章目录 颜色模式 颜色通道 Android 中的颜色矩阵 矩阵乘法运算 滤镜中的矩阵乘法运算 矩阵加法运算 滤镜中的矩阵乘法运算 滤镜运算原理 ( 总结 ) 实际滤镜理论示例 颜色模式 颜色模式 : ...

  3. OpenGL学习笔记:颜色(RGBA颜色,颜色索引模式)

    OpenGL支持两种颜色模式:一种是RGBA,一种是颜色索引模式. 无论哪种颜色模式,计算机都必须为每一个像素保存一些数据. 不同的是,RGBA模式中,数据直接就代表了颜色:而颜色索引模式中,数据代表 ...

  4. javascript乘法和加法_JavaScript大数相加相乘的实现方法实例

    前言 JavaScript 中的最大安全整数是 2 ^{53} – 1 ,即 9007199254740991,当我们进行超出这个范围的数值计算的时候就无法得到精确的值,而是一个近似值,比如我们计算 ...

  5. 计算机中的颜色XIII——颜色转换的快速计算公式

    本文的公式的基础都是在前文的基础上的.详情请参看前文: 计算机中的颜色I--颜色概述 计算机中的颜色II--VB2005中的Color结构 计算机中的颜色III--HSV表示方法 计算机中的颜色IV- ...

  6. OpenCV图像旋转,指定填充背景颜色边界颜色

    OpenCV图像旋转,指定填充背景颜色边界颜色 OpenCV与图像旋转有关的函数: (1)warpAffine函数 void cv::warpAffine ( InputArray  src,     ...

  7. python 向量_关于Python中的向量相加和numpy中的向量相加效率对比

    直接使用Python来实现向量的相加 # -*-coding:utf-8-*- #向量相加 def pythonsum(n): a = range(n) b = range(n) c = [] for ...

  8. OpenCL 第5课:向量相加

    OpenCL程序分为两个部份,一部份是内核代码,负责具体算法.另一部份是主程序负责初始化OpenCL和准备数据.主程序加载内核代码,并按照即定方法进行运算. 内核代码可以写在主程序里面,也可以写在另一 ...

  9. OpenCL向量相加

    原文http://www.olcf.ornl.gov/training_articles/opencl-vector-addition/ 本文仅仅是为了学习OpenCL而做的的相关翻译. 由于原文中的 ...

最新文章

  1. Python:年轻人,不会正则表达式你睡得着觉?有点出息没有?
  2. 随机生成 字体大小--转
  3. SpringMVC 数据的格式化、JSR 303数据校验和国际化
  4. 堆排序算法的实现 (冒泡排序)
  5. 【youcans 的 OpenCV 例程200篇】125. 形态算法之提取连通分量
  6. 一个XML Schema及XML文档(联系人)
  7. 小鱼易连电脑版_揭秘:为什么win10电脑越用越卡,本质问题是什么?
  8. 2009年最受欢迎jQuery插件
  9. HTML基础知识回顾整理
  10. 协助数据库完成大数据实时查询
  11. 黑猫论坛实战免杀教程
  12. restful风格个人理解
  13. SpringBoot系列之(二):1.使用SpringBoot
  14. React之Dva的学习
  15. uni-app视频保存到本地/相册
  16. (2013.05.05)N枚硬币找1枚假币
  17. java中级工程师所需的技能_Java 工程师要具备哪些技能或技术?
  18. 乔布斯往事:游戏之神卡马克眼中的“英雄和傻瓜”
  19. cad有没有网页版_在线CAD看图网页版,一样可以快速查看CAD图纸
  20. 易语言误报优化助手 v1.5

热门文章

  1. 如何在 Mac 上强制退出应用
  2. 计算机中丢失safeengine.dll,safeengine.dll
  3. 读书百客:《题竹林寺》简析
  4. Python 阿拉伯数字转换为中文大写数字
  5. iOS多级列表 - XQMultistageTableView
  6. 以项目思维解读,秦穆公的“霸业梦”
  7. 读书笔记3——《如何高效学习》:斯科特·扬
  8. 傅里叶实现高精度乘法
  9. 第28章 Spring框架内的JNDI支持
  10. 一篇6450字的广告,如何开启1.8万亿美金的华尔街传奇?