专栏
标签
做光学仿真,把波长转化成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科学计算环境
科学计算

全部回答

暂无数据
暂无数据
用户
和原帖交流更多问题细节吧,去
我要发帖 我要发帖
资料中心 资料中心
查看更多>
热门帖子 热门帖子
主要贡献者 主要贡献者
过去7天