光波长与RGB数值的转换
最近做毕业设计时,需要Matlab仿真计算彩色物体的散射图像。计算中需要用到彩色图片(RGB色彩模式)对应的光波长数值。查找资料发现可以实现:由光波长求对应RGB数值。正在做尝试,所以来记录一下思路。
------------------------------------分割线------------------------------------
0516更新:由光波长计算RGB数值的Matlab脚本实现
% 输入指定波长,转换成RGB数值,并输出
% 输入波长范围:380~780 nmfunction [r,g,b] = lambda2rgb(lambda)if (lambda >= 380.0) && (lambda < 440.0)r = -1.0 * (lambda - 440.0) / (440.0 - 380.0);g = 0.0;b = 1.0;
elseif (lambda >= 440.0) && (lambda < 490.0)r = 0.0;g = (lambda - 440.0) / (490.0 - 440.0);b = 1.0;
elseif (lambda >= 490.0) && (lambda < 510.0)r = 0.0;g = 1.0;b = -1.0 * (lambda - 510.0) / (510.0 - 490.0);
elseif (lambda >= 510.0) && (lambda < 580.0)r = (lambda - 510.0) / (580.0 - 510.0);g = 1.0;b = 0.0;
elseif (lambda >= 580.0) && (lambda < 645.0)r = 1.0;g = -1.0 * (lambda - 645.0) / (645.0 - 580.0);b = 0.0;
elseif (lambda >= 645.0) && (lambda <= 780.0)r = 1.0;g = 0.0;b = 0.0;
elser = 0.0;g = 0.0;b = 0.0;
end% 在可见光谱的边缘处强度较低。
if (lambda >= 380.0) && (lambda < 420.0)attenuation = 0.3 + 0.7 * (lambda - 380) / (420 - 380);r = r * attenuation;g = 0.0;b = 1.0 * attenuation;
elseif(lambda >= 701.0) && (lambda < 780.0)attenuation = 0.30 + 0.70 * (780.0 - lambda) / (780.0 - 700.0);r = r * attenuation;g = 0.0;b = 0.0;
end
r = round(r*255);
g = round(g*255);
b = round(b*255);end
------------------------------------分割线------------------------------------
1.光波长
可见光波长在780~400nm之间,是电磁波谱中人眼可以感知的部分。
而不同波长可见光呈现的颜色效果是不一样的,如下图:
2.RGB
RGB是一种颜色标准,通过对红(R)、绿(G)、蓝(B)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的。RGB即是代表红、绿、蓝三个通道的颜色。RGB标准几乎包括了人类视力所能感知的所有颜色。
3.单色光与RGB
生活中,人眼可见的大部分色彩都不是单一波长的光产生的,而是由多种波长光混合而成。RGB作为一种色彩标准,表示为一种颜色视觉效果,所以是无法确定其中的光波长信息。
或者讲,不同比例的单色光混合,最终都可能有相同的颜色视觉效果,即相同的RGB数值。
反过来,光波长计算对应RGB值是可行的。这里,可以参考网络上的一些资料,里面有具体的计算方法。
https://www.en.silicann.com/blog/post/wavelength-color/
http://www.physics.sfasu.edu/astro/color/spectra.html
https://blog.csdn.net/tanmx219/article/details/91658415
光波长与RGB数值的转换相关推荐
- 十六进制颜色码与RGB颜色值的转换
十六进制颜色码与RGB颜色值的转换 十六进制颜色码 十六进制颜色码就是在软件中设定颜色值的代码.在很多软件中,都会遇到设定颜色值的问题,发展来源人的眼睛看到的颜色有两种: 一种是发光体发出的颜色,比如 ...
- RGB与YUV转换以及存储格式(YIQ)(信号扫描线)(内插补点算法)(紧缩格式(packed formats))(平面格式(planar formats))
文章目录 色彩空间与色彩模型 色彩空间 色彩模型 不同色彩空间的比较 1.RGB(采集与显示) 2. YUV YCbCr的两种常用格式 1)ITU-R BT.601 conversion 2)JPEG ...
- Python Tkinter 小项目 RGB数值转换为16进制码
欢迎来到<Python 小项目>专栏,这个专栏会不定时更新Python的小项目,大家可以订阅关注哦! 这次,我们用Tkinter写一个RGB转16进制的一个小工具,先看看效果: 代码教学: ...
- python 自定义进制转换_[python]从零开始学python——颜色的16进制于RGB之间的转换...
在学习openstack的时候,发现openstack是python开发的:学习mininet自定义拓扑,发现mininet是python开发的:看看ryu,还是python开发的--于是心中升起了自 ...
- python画24色卡图及对比图,sRGB反gamma操作得到线性RGB数值(附代码)
文章目录 1.已知24色卡的RGB数据,画出对应的图像 2.sRGB反gamma操作得到线性RGB数值 1.已知24色卡的RGB数据,画出对应的图像 比如两组RGB数据 list1 = [[115, ...
- 常用图像格式(PNG,JPG)到SGI图像格式(RGB,BW)的转换
常用图像格式(PNG,JPG)到SGI图像格式(RGB,BW)的转换 网站链接 根据该网站的描述和给的相应例子,自己改写了一个把png,jpg等常用格式的图片转化为rgb,bw格式的代码. #incl ...
- matlab 数值格式转换,Matlab字符串转换及数值格式转换
Matlab字符串转换及数值格式转换 字符串转换函数 abs 字符串到ASCII转换 dec2hex 十进制数到十六进制字符串转换 fprintf 把格式化的文本写到文件中或显示屏上 hex2dec ...
- MySQL日期、字符串、数值型转换
日期字符串提取月份,例如两个日期字符串间隔几个月,可以用 month('2019-05-01')-month('2019-12-02') 字符串转日期,使用类型转换函数: cast('2019-12- ...
- Python数值特征转换
前言 经常用SparkML中特征转换,包括二值化.多项式展开.字符串-索引变换.独热编码.规范化.最大-最小缩放.分位数离散化等等一系列的操作,可如何用python来实现呢? 全面了解请看官网 离散值 ...
最新文章
- STM32用keil5调试程序出现 Error:Flash Download Failed-Cortex-M3解决方案
- cxf客户端访问方式
- ant+jmeter中build.xml配置详解
- html2canvas关于图片不能正常截取
- HDU 1213 How Many Tables(并查集模板)
- nacos服务配置中心演示
- 有些人可能也在哪见过这样的HTML5效果
- 网上讨论“电商平台打败了实体店”?
- python 线程-threding示例使用
- Tomcat、Servlet、Servlet容器
- html解决页面放大后元素乱排的问题
- 在线搭建自己的网课答案公众号题库系统
- 上海交大计算机系分数线2019,2019年上海部分高校各专业录取分数线汇总|附2019上海交通大学上海生源情况!...
- 飞桨PaddlePaddle 英特尔神经计算棒 联合优化AI算法CPU部署性能,推动产业低成本智能化升级
- python画地图模拟迁徙_python爬取百度地图迁徙-迁入地来源和迁出目的地
- 必看!云桌面与传统PC六项成本对比
- Java后端开发工程师是否该转大数据开发?
- java学习书籍推荐
- 上线65535_百闻牌:遇到这几个式神压力真大,65535攻击带不屈,这咋打?
- vue中使用v-if出现的值回显不了的问题
热门文章
- JAVA学习记录(取反运算~)
- av_parser_parse2函数介绍
- //假设有一个能装入总体积为T的背包和n件体积分别为w1,w2....wn.的物品,能否从n件物品中挑选若干件恰好装满背包,即使w1+w2+....+wn=T,要求找出所有满足上述条件的解。例如:当T
- CSS中Float概念相关文章采撷
- 基于Docker容器的DevOps应用方案
- Linux DBUS总线
- 企业应尽早使用BIM技术——BIM带来的优势
- TLD和eTLD的区别
- 使用NumPy加载txt文件提示ValueError:could not convert string to float
- RedisTemplate指令