人眼中的光 —— 光强,光通量,光照度,光亮度是什么

本文深入浅出地介绍了光的客观存在(光通量、光强、光亮度)和主观感知(光照度),通过实例和历史背景探讨了这些术语,并解释了它们在信息技术中的应用和测量标准。

平时接触到一些对光描述的词汇总是一头雾水,本文对这些词汇术语进行了介绍,并从非专业的角度进行理解。

1. 客观存在

首先,光是一种电磁波,当一个物体发光时相当于向外辐射能量。其向外辐射的光能可以用焦耳(J)表示,辐射光能的功率可以用瓦特(W)来描述。

另外,光源往往以点光源的形式存在像烛光,灯泡,离我们很遥远的恒星, 它们朝着四面八方发光向外扩散。我们以发光点为圆心作半径为1的一个球,球的面积为4\pi,在球的表面取面积为1的一块圆片,这块圆片对应一个锥形空间称为1立体角(sr),它可以帮我们描述光在不同方向上的强度。

2. 主观存在

人类对光的感知是通过眼睛来实现的,不同的光让人们感受到明与暗,红与蓝,冷与暖。这都是大脑对光的主观反应。不同的动物甚至不同的人对同一束光产生的响应可能大相径庭,而光强,流明,光照度,光亮度则是人类对光的明暗的一种主观标准化描述。客观存在是不以人的意志而转移的,而主观存在则是以当下我们人类眼睛和大脑的感受来定义的。

 1)光通量(lm 流明):

是描述一个物体所发射出人眼所能感受到的光辐射功率,通常用来描述发光源的发光能力。

把光想象成粒子,一个物体源源不断的往外发射粒子,这些粒子碰到视网膜就会就会给人一个刺激信号(可见度),让人们感受的光明。当一个\frac{1}{683}W的理想单色光源,只发射名为555nm的绿色光子,其每秒发射的总粒子的可见度(光通量)为1lm。 

为何要以555nm的绿光来表示,因为这是人眼最敏感的波段,要是发射紫外线就算100W人类也看不见,除了可能把眼睛烧糊。人类对不同波段光的响应程度称为视见函数,通过视见函数可以计算出其他波段的光产生1lm所需要的功率。通过lm来描述光源,避免了换算发光效率和光谱的麻烦,买相同流明的led等和白炽灯最终的亮度感受是差不多的,比传统用W来描述直观很多。

为何要以1/683W的功率来来表示1流明,应为这跟一根蜡烛所发出的光通量见度差不多,历史遗留问题。

2)光强(cd 坎德拉):

  光强是用来描述发光源在某方向的发光强度(主观可见的感受)1cd=1lm/sr,若点发光源是均匀向四周发光的则每个方向上的发光强度为发光源的光通量除以4\pi。1cd差不多相当于一根蜡烛对应的强度。

为什么要用立体角来表示,因为光源前进过程中总是不断扩散的,越远光照亮的面积越大,随之也会变的越暗,但是相同立体角内的光通量总数是不变的,因此立体角很适合用来描述与距离无关的光强度。

 3)光照度(lx 勒克斯):

光照度比较好理解,就是单位面积上接受到的光通量。光源照到你的本子上,每平方米的区域接收到了多少的光粒子。

4)光亮度:

单位是cd/m^2 \ or \ lm/(m^2\cdot sr),用来描述一些面光源在某方向上的发光强度,如屏幕,漫反射之类的。因为发光体有了面积,首先计算单位面积的光通量,然后再计算单位面积的发光源在某个方向上的发光强度。

3. 总结

简单理解:每个光子携带一个可见因子,不同波长的光子携带的可见因子大小是不同的。

  • 光通量:发光源每秒钟发射的可见因子总数(总发射速度)。
  • 光强度:发光源朝某个立体角方向发射可见因子的速度
  • 光照度:某个区域单位面积接收可见因子的速度
  • 光亮度:面光源单位面积超某方向发射可见因子的速度

 光刺激是个冲击信号,转瞬即逝,所以需要源源不断的刺激,可以看到所有主观描述都带有一个速度的属性。

 光通量,光强度,光亮度都是描述光源的属性,光通量看的是光源的总体属性,光强,光亮度描述的是局部属性。

而光照度描述的是被照的结果。

附录:

 视见函数,黑线是白天的视见函数,绿线是黑夜的视见函数

  • 光强:cd 坎德拉
  • 光通量:lm 流明
  • 光照度:lx 勒克斯
  • 光亮度:cd/m^2

 部分图片来自互联网,侵删

<think>嗯,用户想用Matlab绘制模拟视觉效果的抛物线图形。首先,我需要明确什么是“视觉效果”。可能是指抛物线在视网膜上的投影,或者考虑眼的透视变形? 根据引用[3],山脊线和山谷线的提取涉及局部算子的应用,这可能与图像处理中的特征检测有关。但用户的问题更偏向于图形绘制,可能需要考虑透视投影或非线性变形。 用户提到抛物线,基本数学表达式是$y=ax^2+bx+c$。但模拟视觉效果可能需要三维坐标系中的投影。Matlab中可以使用3D绘图,并设置视角,比如`view(3)`来呈现立体效果。 另外,引用[1]提到在Matlab中添加路径,比如libsvm工具包。虽然用户的问题不涉及SVM,但可能需要调用图像处理工具箱中的函数,比如`meshgrid`生成网格,`surf`或`mesh`绘制曲面,以及`camproj`设置透视投影。 考虑眼的透视效果,可能需要使用透视投影而非正交投影。Matlab默认是正交投影,需更改为透视投影,使用`camproj('perspective')`。同时调整相机位置和角度,增强立体感,比如`campos`和`camtarget`。 另外,引用[2]中的样本乱序可能不相关,但可以考虑在生成抛物线时添加噪声模拟视觉误差,但用户的问题可能更关注几何变形而非数据扰动。 具体步骤可能包括: 1. 生成抛物线的基础数据,使用参数方程或显式方程。 2. 将抛物线置于三维空间,考虑z轴深度。 3. 应用透视投影,调整相机参数。 4. 使用颜色渐变或透明度增强立体效果。 5. 添加网格和标签,使图形更符合眼观察习惯。 需要注意Matlab中3D绘图的设置,如光照、材质,以及如何调整视图参数。可能需要参考计算机图形学中的透视变换矩阵,但Matlab内置函数可能简化这一过程。 测试代码是否可行,例如: - 生成抛物线数据点。 - 创建三维坐标系并设置透视。 - 绘制抛物线并调整视觉效果。 可能遇到的问题包括透视参数设置不当导致图形变形不自然,需要多次调整视角和投影参数。此外,颜色和线条的渲染方式也会影响视觉效果,需选择合适的绘图函数和样式。</think>### 分步实现方法 #### 步骤1:基础抛物线绘制 视觉中的抛物线具有近大远小的透视效果。首先用三维坐标系绘制抛物线,并添加深度轴$z$。例如: ```matlab % 生成抛物线数据 x = linspace(-5, 5, 100); y = x.^2; % 标准抛物线方程 z = zeros(size(x)); % 深度轴初始值 % 创建三维绘图 figure plot3(x, y, z, 'LineWidth', 2) grid on xlabel('X轴'); ylabel('Y轴'); zlabel('深度轴'); title('基础抛物线') ``` #### 步骤2:添加透视投影 Matlab默认使用正交投影,需更改为透视投影以模拟眼效果: ```matlab set(gca, 'Projection', 'perspective') % 关键设置[^3] view(30, 30) % 调整视角角度 ``` #### 步骤3:引入深度变形 在三维空间中添加$z$轴坐标变化,模拟物体远离观察者的效果: ```matlab z = 0.5 * x; % 深度随x线性变化 figure plot3(x, y, z, 'LineWidth', 2) set(gca, 'Projection', 'perspective') view(45, 20) % 优化后的视角参数 ``` #### 步骤4:增强立体效果 使用曲面网格和颜色渐变强化空间感: ```matlab [X, Z] = meshgrid(linspace(-5,5,50), linspace(0,5,50)); Y = X.^2; % 抛物线曲面 figure surf(X, Y, Z, 'EdgeColor', 'none') colormap(jet) % 颜色映射增强深度感知 camlight % 添加光照 material shiny % 材质反效果 ``` #### 步骤5:动态视角调整 通过交互式控件实现视角动态调整: ```matlab % 添加滑动条控件 uicontrol('Style', 'slider', 'Position', [20 20 120 20],... 'Min',0, 'Max',360, 'Value',30,... 'Callback', @(src,event) view(get(src,'Value'),30)); % 设置相机参数 camva(6) % 视场角调整[^3] campos([-20, -20, 20]) % 相机位置 ``` ### 完整示例代码 ```matlab %% 参数设置 a = 0.25; % 抛物线开口系数 depth_scale = 0.8; % 深度缩放因子 %% 数据生成 x = linspace(-4, 4, 200); y = a * x.^2; z = depth_scale * x; % 深度与x成比例 %% 三维绘图配置 figure('Color','white') ax = gca; hold on % 绘制抛物线 plot3(x, y, z, 'LineWidth', 3, 'Color', [0.2 0.6 0.9]) % 设置投影和视角 ax.Projection = 'perspective'; view(35, 25) set(ax, 'FontSize', 11) % 坐标轴标签 xlabel('横向视野','FontWeight','bold') ylabel('纵向位置','FontWeight','bold') zlabel('观察距离','FontWeight','bold') % 添加网格和光照 grid on light('Position',[1 1 1],'Style','infinite') material dull %% 透视增强 camproj('perspective') % 确认透视模式 camva(8) % 视场角微调 ``` ### 效果优化建议 1. **颜色映射**:使用`colormap(hsv)`增强深度层次 2. **动态演示**:添加`rotate3d on`实现鼠标交互旋转 3. **背景设置**:通过`set(gcf, 'Color', [0.9 0.9 0.9])`调整背景色 4. **多抛物线对比**:绘制不同参数抛物线观察透视差异
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

blanklog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值