衍射光栅图案:星形成因及形状预测方法咨询
为什么会拍出星形图案?
嘿,这本质是电视屏幕的二维衍射光栅特性和闪光灯的白光衍射共同作用的结果:
- 咱们日常的电视屏幕(不管是LCD还是OLED),像素/子像素都是按严格的横竖网格(或者RGB条纹阵列)周期性排列的,这就相当于把两组垂直的一维衍射光栅叠在了一起,变成了一个二维的衍射光栅。
- 当iPhone闪光灯的白光打在屏幕上时,这个周期性的像素结构会把光拆分开:横向的像素排列会让光在垂直方向分散出一系列水平亮线,纵向的像素排列则让光在水平方向分散出一系列垂直亮线。这两组亮线交叉叠加,再加上白光色散(不同颜色的光衍射角度不一样,会带彩色边缘),就形成了你看到的星形图案~
- 另外,iPhone闪光灯的光斑是近似圆形的,和正交的衍射条纹叠加后,视觉上就呈现出了星芒感。
有没有可预测这个形状的公式或方法?
当然有!核心是用二维衍射光栅的光栅方程来推算:
核心公式
假设屏幕水平方向的像素周期是dₓ(相邻两个像素的水平间距),垂直方向是dᵧ;入射光波长为λ,水平方向衍射角为θₓ,垂直方向为θᵧ,那么衍射亮斑(也就是星形的“角”)的位置满足:
dₓ sinθₓ = mλ dᵧ sinθᵧ = nλ
这里的m和n是衍射级次,是整数(0、±1、±2……):m=0,n=0对应中央的直接反射光斑,其他非零的m、n组合就是星形的各个分支亮线啦。
因为是白光,不同颜色的光波长λ不同,所以不同颜色的衍射亮线位置会错开,这也是星形边缘带彩色的原因。
预测步骤
- 获取屏幕参数:先算出屏幕的像素周期
dₓ和dᵧ——比如1080P屏幕(1920×1080像素),如果屏幕宽度是50cm,那dₓ = 50cm / 1920 ≈ 0.26mm,同理算垂直方向的dᵧ。 - 计算衍射角:代入上面的公式,针对不同的衍射级次
m、n,算出对应的θₓ和θᵧ。 - 转换为图像位置:根据你拍摄时的距离,把衍射角转换成照片上的坐标,就能精准预测星形的各个分支位置了。
要是想直观模拟的话,用Python的scipy库或者Matlab的光学模拟工具,输入屏幕的像素结构参数,就能生成对应的衍射图案哦~
内容的提问来源于stack exchange,提问作者Freezy




