做光学仿真,把波长转化成RGB数据
技术分享
发布于 2025-10-15 18:34:13
查看 7过去230天
# 定义颜色编码函数
function color_code(lambda)
# 输入光的波长(单位米),输出RGB,一个三元素行向量
lambda_nm = lambda * 1e9
r, g, b = 0.0, 0.0, 0.0
if lambda_nm < 380
r, g, b = 1.0, 0.0, 1.0
elseif lambda_nm < 440
r = (440 - lambda_nm) / (440 - 380)
g = 0.0
b = 1.0
elseif lambda_nm < 490
r = 0.0
g = (lambda_nm - 440) / (490 - 440)
b = 1.0
elseif lambda_nm < 510
r = 0.0
g = 1.0
b = (510 - lambda_nm) / (510 - 490)
elseif lambda_nm < 580
r = (lambda_nm - 510) / (580 - 510)
g = 1.0
b = 0.0
elseif lambda_nm < 645
r = 1.0
g = (645 - lambda_nm) / (645 - 580)
b = 0.0
else
r, g, b = 1.0, 0.0, 0.0
end
if lambda_nm > 700
factor = 0.3 + 0.7 * (780 - lambda_nm) / (780 - 700)
r *= factor
g *= factor
b *= factor
elseif lambda_nm < 420
factor = 0.3 + 0.7 * (lambda_nm - 380) / (420 - 380)
r *= factor
g *= factor
b *= factor
end
r = clamp(r, 0.0, 1.0)
g = clamp(g, 0.0, 1.0)
b = clamp(b, 0.0, 1.0)
return (r, g, b)
end
所属专栏:Julia语言
产品信息:Syslab科学计算环境