焦散透镜设计概要


发布于 2025-12-28 / 16 阅读 / 0 评论 /
透镜设计 caustic design(0)-简介 理论介绍 源光场:曲面是一个平面时的初始明暗图像,对于平行光,初始明暗图像就是一张全白图。 目标光场:目标灰度图,例如一张福字。 stage-1: 洛依德算法 Lloyd's algorithm 对源光场各个像素,以(归一化的)灰度值为概率,进行蒙

透镜设计 caustic design(0)-简介

理论介绍

源光场:曲面是一个平面时的初始明暗图像,对于平行光,初始明暗图像就是一张全白图。

目标光场:目标灰度图,例如一张福字。

stage-1: 洛依德算法 Lloyd's algorithm

对源光场各个像素,以(归一化的)灰度值为概率,进行蒙特卡洛采样 (~几十万个),当然全白图的蒙卡采样……就是均匀采样。以采样得到的像素点为节点 site生成 Voronai diagram (伏罗诺依图) , 计算每个 Voronoi cell的质心, 以 cell质心为新节点, 更新 sites, 再生成 Voronoidiagram,再找质心,再更新 site位置……不断循环,直到收敛。这一步是为了把源光场分割为几乎等概率的小块。“等概率”是指每个 cell的灰度积分几乎相等。这一步不需要重复进行,算一次,把结果保存下来即可。

stage-2: 最优运输 optimal transport

为stage1中每个节点 voronoi site分配 (初始) 权重, weighted Voronoi diagram叫做 power diagram, cell改叫 power cell, 在目标光场中对 power cell做概率积分。焦散透镜设计的核心思想是: voronoi cell在源光场的概率积分,等于对应的 power cell在目标光场的概率积分。这在数学上抽象为一个最优运输问题,具体等价于优化权重使一个凸代价函数最小。优化采用BFGS算法,就是 scipy. optimize中的fmin l bfgs b功能。得到最优权重后,再计算每个 power cell的质心, 目的是构建起“vornoi cell质心和 power cell质心的一对一映射关系”。

stage-3: 自然领域插值 natural neighbor interpolate与 pytorch优化

首先生成自定义的网格,方形、三角形、什么形状随便,对每个网格节点 (~几十万个)根据stage2得到的映射关系,做自然领域插值,得到每个网格节点的新-旧坐标之间的映射关系。我们希望经过网格节点旧坐标的光线可以打在接收屏的新坐标上,由此,利用折射定律,得到每个网格节点的法线方向,法线积分可得网格节点处的面型高度,有了高度就有了节点处完整面型坐标。

最后,为了抑制法线积分误差,利用 pytorch优化某个目标函数,对节点坐标进行优化微调。

stage-4:利用网格节点坐标生成曲面模型文件

以网格节点的坐标插值出面型函数(B样条曲面插值或线性插值),用曲面函数生成曲面模型. step或. stl文件。



是否对你有帮助?

评论