基于重心法哈特曼波前传感器光斑图像的质心计算
一、光斑图像的模拟
首先,仿真得到如下图所示的光斑阵列图像,仿真参数如下:微透镜数目为72×72,每个微透镜所占的像素数为36×36,CCD相机像素数则为2592×2592;
二、重心法原理
在子孔径光斑质心计算方面,最为简单直接的方法是重心法,其计算公式如下:
式中[x(i),y(i)]分别表示第i个子孔径在x,y方向上的质心位置,
分别表示点(m,n)处的像素坐标, I m n {{I}_{mn}} Imn表示的是点(m,n)处像素的强度。通过将当前质心位置与标定质心位置进行比较,即可得到待测波前的斜率:
将图1所示的光斑阵列图像代入到上式中,即可求解得到XY方向上的质心数据,
X方向质心数据为72*72大小的矩阵,如下图所示:
Y方向质心数据为72*72大小的矩阵,如下图所示:
三、资源获取
上述matab程序可从如下链接处获取:
https://download.csdn.net/download/qq_36584460/82066235
资源中提供了仿真的参考质心光斑图像/偏移质心光斑图像,进而可求解波前斜率,进一步重构出待测波前。最后,提供其他技术支持,包括哈特曼波前传感仿真模拟,以及波前重构等算法。
------------恢复内容开始------------
一、光斑图像的模拟
首先,仿真得到如下图所示的光斑阵列图像,仿真参数如下:微透镜数目为72×72,每个微透镜所占的像素数为36×36,CCD相机像素数则为2592×2592;
二、重心法原理
在子孔径光斑质心计算方面,最为简单直接的方法是重心法,其计算公式如下:
$\left. \begin{matrix}
x(i)=\frac{\sum\limits_{m=1}^{M}{\sum\limits_{n=1}^{N}{{{x}_{mn}}{{I}_{mn}}}}}{\sum\limits_{m=1}^{M}{\sum\limits_{n=1}^{N}{{{I}_{mn}}}}} \\
y(i)=\frac{\sum\limits_{m=1}^{M}{\sum\limits_{n=1}^{N}{{{y}_{mn}}{{I}_{mn}}}}}{\sum\limits_{m=1}^{M}{\sum\limits_{n=1}^{N}{{{I}_{mn}}}}} \\
x
(
i
)
=
∑
m
=
1
M
∑
n
=
1
N
x
m
n
I
m
n
∑
m
=
1
M
∑
n
=
1
N
I
m
n
y
(
i
)
=
∑
m
=
1
M
∑
n
=
1
N
y
m
n
I
m
n
∑
m
=
1
M
∑
n
=
1
N
I
m
n
}
\left. \begin{matrix} x(i)=\frac{\sum\limits_{m=1}^{M}{\sum\limits_{n=1}^{N}{<!-- -->{<!-- -->{x}_{mn}}{<!-- -->{I}_{mn}}}}}{\sum\limits_{m=1}^{M}{\sum\limits_{n=1}^{N}{<!-- -->{<!-- -->{I}_{mn}}}}} \\ y(i)=\frac{\sum\limits_{m=1}^{M}{\sum\limits_{n=1}^{N}{<!-- -->{<!-- -->{y}_{mn}}{<!-- -->{I}_{mn}}}}}{\sum\limits_{m=1}^{M}{\sum\limits_{n=1}^{N}{<!-- -->{<!-- -->{I}_{mn}}}}} \\ \end{matrix} \right\}
</span><span class="katex-html"><span class="base"><span class="minner"><span class="mord"><span class="mtable"><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height: 4.01058em;"><span style="top: -6.01058em;"><span class="mord"><span class="mord mathdefault">x</span><span class="mopen">(</span><span class="mord mathdefault">i</span><span class="mclose">)</span><span class="mrel">=</span><span class="mord"><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height: 2.13029em;"><span style="top: -2.19em;"><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mop op-limits mtight"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height: 1.5811em;"><span style="top: -1.87368em; margin-left: 0em;"><span class="sizing reset-size3 size1 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">m</span><span class="mrel mtight">=</span><span class="mord mtight">1</span></span></span></span><span style="top: -2.75001em;"><span><span class="mop op-symbol small-op mtight">∑</span></span></span><span style="top: -3.7em; margin-left: 0em;"><span class="sizing reset-size3 size1 mtight"><span class="mord mtight"><span class="mord mathdefault mtight" style="margin-right: 0.10903em;">M</span></span></span></span></span><span class="vlist-s"></span></span></span></span><span class="mord mtight"><span class="mop op-limits mtight"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height: 1.5811em;"><span style="top: -1.87368em; margin-left: 0em;"><span class="sizing reset-size3 size1 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">n</span><span class="mrel mtight">=</span><span class="mord mtight">1</span></span></span></span><span style="top: -2.75001em;"><span><span class="mop op-symbol small-op mtight">∑</span></span></span><span style="top: -3.7em; margin-left: 0em;"><span class="sizing reset-size3 size1 mtight"><span class="mord mtight"><span class="mord mathdefault mtight" style="margin-right: 0.10903em;">N</span></span></span></span></span><span class="vlist-s"></span></span></span></span><span class="mord mtight"><span class="mord mtight"><span class="mord mtight"><span class="mord mtight"><span class="mord mathdefault mtight" style="margin-right: 0.07847em;">I</span></span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height: 0.164543em;"><span style="top: -2.357em; margin-right: 0.0714286em;"><span class="sizing reset-size3 size1 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">m</span><span class="mord mathdefault mtight">n</span></span></span></span></span><span class="vlist-s"></span></span></span></span></span></span></span></span></span></span></span><span style="top: -4.13029em;"><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mop op-limits mtight"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height: 1.5811em;"><span style="top: -1.87368em; margin-left: 0em;"><span class="sizing reset-size3 size1 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">m</span><span class="mrel mtight">=</span><span class="mord mtight">1</span></span></span></span><span style="top: -2.75001em;"><span><span class="mop op-symbol small-op mtight">∑</span></span></span><span style="top: -3.7em; margin-left: 0em;"><span class="sizing reset-size3 size1 mtight"><span class="mord mtight"><span class="mord mathdefault mtight" style="margin-right: 0.10903em;">M</span></span></span></span></span><span class="vlist-s"></span></span></span></span><span class="mord mtight"><span class="mop op-limits mtight"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height: 1.5811em;"><span style="top: -1.87368em; margin-left: 0em;"><span class="sizing reset-size3 size1 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">n</span><span class="mrel mtight">=</span><span class="mord mtight">1</span></span></span></span><span style="top: -2.75001em;"><span><span class="mop op-symbol small-op mtight">∑</span></span></span><span style="top: -3.7em; margin-left: 0em;"><span class="sizing reset-size3 size1 mtight"><span class="mord mtight"><span class="mord mathdefault mtight" style="margin-right: 0.10903em;">N</span></span></span></span></span><span class="vlist-s"></span></span></span></span><span class="mord mtight"><span class="mord mtight"><span class="mord mtight"><span class="mord mtight"><span class="mord mathdefault mtight">x</span></span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height: 0.164543em;"><span style="top: -2.357em; margin-right: 0.0714286em;"><span class="sizing reset-size3 size1 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">m</span><span class="mord mathdefault mtight">n</span></span></span></span></span><span class="vlist-s"></span></span></span></span></span></span><span class="mord mtight"><span class="mord mtight"><span class="mord mtight"><span class="mord mathdefault mtight" style="margin-right: 0.07847em;">I</span></span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height: 0.164543em;"><span style="top: -2.357em; margin-right: 0.0714286em;"><span class="sizing reset-size3 size1 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">m</span><span class="mord mathdefault mtight">n</span></span></span></span></span><span class="vlist-s"></span></span></span></span></span></span></span></span></span></span></span></span><span class="vlist-s"></span></span></span></span></span></span></span><span style="top: -2.25em;"><span class="mord"><span class="mord mathdefault" style="margin-right: 0.03588em;">y</span><span class="mopen">(</span><span class="mord mathdefault">i</span><span class="mclose">)</span><span class="mrel">=</span><span class="mord"><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height: 2.13029em;"><span style="top: -2.19em;"><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mop op-limits mtight"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height: 1.5811em;"><span style="top: -1.87368em; margin-left: 0em;"><span class="sizing reset-size3 size1 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">m</span><span class="mrel mtight">=</span><span class="mord mtight">1</span></span></span></span><span style="top: -2.75001em;"><span><span class="mop op-symbol small-op mtight">∑</span></span></span><span style="top: -3.7em; margin-left: 0em;"><span class="sizing reset-size3 size1 mtight"><span class="mord mtight"><span class="mord mathdefault mtight" style="margin-right: 0.10903em;">M</span></span></span></span></span><span class="vlist-s"></span></span></span></span><span class="mord mtight"><span class="mop op-limits mtight"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height: 1.5811em;"><span style="top: -1.87368em; margin-left: 0em;"><span class="sizing reset-size3 size1 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">n</span><span class="mrel mtight">=</span><span class="mord mtight">1</span></span></span></span><span style="top: -2.75001em;"><span><span class="mop op-symbol small-op mtight">∑</span></span></span><span style="top: -3.7em; margin-left: 0em;"><span class="sizing reset-size3 size1 mtight"><span class="mord mtight"><span class="mord mathdefault mtight" style="margin-right: 0.10903em;">N</span></span></span></span></span><span class="vlist-s"></span></span></span></span><span class="mord mtight"><span class="mord mtight"><span class="mord mtight"><span class="mord mtight"><span class="mord mathdefault mtight" style="margin-right: 0.07847em;">I</span></span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height: 0.164543em;"><span style="top: -2.357em; margin-right: 0.0714286em;"><span class="sizing reset-size3 size1 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">m</span><span class="mord mathdefault mtight">n</span></span></span></span></span><span class="vlist-s"></span></span></span></span></span></span></span></span></span></span></span><span style="top: -4.13029em;"><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mop op-limits mtight"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height: 1.5811em;"><span style="top: -1.87368em; margin-left: 0em;"><span class="sizing reset-size3 size1 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">m</span><span class="mrel mtight">=</span><span class="mord mtight">1</span></span></span></span><span style="top: -2.75001em;"><span><span class="mop op-symbol small-op mtight">∑</span></span></span><span style="top: -3.7em; margin-left: 0em;"><span class="sizing reset-size3 size1 mtight"><span class="mord mtight"><span class="mord mathdefault mtight" style="margin-right: 0.10903em;">M</span></span></span></span></span><span class="vlist-s"></span></span></span></span><span class="mord mtight"><span class="mop op-limits mtight"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height: 1.5811em;"><span style="top: -1.87368em; margin-left: 0em;"><span class="sizing reset-size3 size1 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">n</span><span class="mrel mtight">=</span><span class="mord mtight">1</span></span></span></span><span style="top: -2.75001em;"><span><span class="mop op-symbol small-op mtight">∑</span></span></span><span style="top: -3.7em; margin-left: 0em;"><span class="sizing reset-size3 size1 mtight"><span class="mord mtight"><span class="mord mathdefault mtight" style="margin-right: 0.10903em;">N</span></span></span></span></span><span class="vlist-s"></span></span></span></span><span class="mord mtight"><span class="mord mtight"><span class="mord mtight"><span class="mord mtight"><span class="mord mathdefault mtight" style="margin-right: 0.03588em;">y</span></span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height: 0.164543em;"><span style="top: -2.357em; margin-right: 0.0714286em;"><span class="sizing reset-size3 size1 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">m</span><span class="mord mathdefault mtight">n</span></span></span></span></span><span class="vlist-s"></span></span></span></span></span></span><span class="mord mtight"><span class="mord mtight"><span class="mord mtight"><span class="mord mathdefault mtight" style="margin-right: 0.07847em;">I</span></span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height: 0.164543em;"><span style="top: -2.357em; margin-right: 0.0714286em;"><span class="sizing reset-size3 size1 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">m</span><span class="mord mathdefault mtight">n</span></span></span></span></span><span class="vlist-s"></span></span></span></span></span></span></span></span></span></span></span></span><span class="vlist-s"></span></span></span></span></span></span></span></span><span class="vlist-s"></span></span></span></span></span></span><span class="mclose"><span class="delimsizing mult"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height: 3.85002em;"><span style="top: -0.69999em;"><span class="delimsizinginner delim-size4"><span>⎭</span></span></span><span style="top: -0.69999em;"><span class="delimsizinginner delim-size4"><span>⎪</span></span></span><span style="top: -0.99999em;"><span class="delimsizinginner delim-size4"><span>⎪</span></span></span><span style="top: -1.29999em;"><span class="delimsizinginner delim-size4"><span>⎪</span></span></span><span style="top: -1.59999em;"><span class="delimsizinginner delim-size4"><span>⎪</span></span></span><span style="top: -1.89999em;"><span class="delimsizinginner delim-size4"><span>⎪</span></span></span><span style="top: -2.19999em;"><span class="delimsizinginner delim-size4"><span>⎪</span></span></span><span style="top: -3.15001em;"><span class="delimsizinginner delim-size4"><span>⎬</span></span></span><span style="top: -4.30001em;"><span class="delimsizinginner delim-size4"><span>⎪</span></span></span><span style="top: -4.60001em;"><span class="delimsizinginner delim-size4"><span>⎪</span></span></span><span style="top: -4.90001em;"><span class="delimsizinginner delim-size4"><span>⎪</span></span></span><span style="top: -5.20001em;"><span class="delimsizinginner delim-size4"><span>⎪</span></span></span><span style="top: -5.50001em;"><span class="delimsizinginner delim-size4"><span>⎪</span></span></span><span style="top: -5.80001em;"><span class="delimsizinginner delim-size4"><span>⎪</span></span></span><span style="top: -6.10002em;"><span class="delimsizinginner delim-size4"><span>⎫</span></span></span></span><span class="vlist-s"></span></span></span></span></span></span></span></span></span></span></span></p>
式中[x(i),y(i)]分别表示第i个子孔径在x,y方向上的质心位置,
x
m
n
{<!-- -->{x}_{mn}}
</span><span class="katex-html"><span class="base"><span class="mord"><span class="mord"><span class="mord"><span class="mord mathdefault">x</span></span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height: 0.151392em;"><span style="top: -2.55em; margin-right: 0.05em;"><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">m</span><span class="mord mathdefault mtight">n</span></span></span></span></span><span class="vlist-s"></span></span></span></span></span></span></span></span></span></span>、<span class="katex--inline"><span class="katex"><span class="katex-mathml">
y
m
n
{<!-- -->{y}_{mn}}
</span><span class="katex-html"><span class="base"><span class="mord"><span class="mord"><span class="mord"><span class="mord mathdefault" style="margin-right: 0.03588em;">y</span></span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height: 0.151392em;"><span style="top: -2.55em; margin-right: 0.05em;"><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">m</span><span class="mord mathdefault mtight">n</span></span></span></span></span><span class="vlist-s"></span></span></span></span></span></span></span></span></span></span> 分别表示点(m,n)处的像素坐标, <span class="katex--inline"><span class="katex"><span class="katex-mathml">
I
m
n
{<!-- -->{I}_{mn}}
</span><span class="katex-html"><span class="base"><span class="mord"><span class="mord"><span class="mord"><span class="mord mathdefault" style="margin-right: 0.07847em;">I</span></span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height: 0.151392em;"><span style="top: -2.55em; margin-right: 0.05em;"><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">m</span><span class="mord mathdefault mtight">n</span></span></span></span></span><span class="vlist-s"></span></span></span></span></span></span></span></span></span></span>表示的是点(m,n)处像素的强度。通过将当前质心位置与标定质心位置进行比较,即可得到待测波前的斜率:</p>
将图1所示的光斑阵列图像代入到上式中,即可求解得到XY方向上的质心数据,
X方向质心数据为72*72大小的矩阵,如下图所示:
Y方向质心数据为72*72大小的矩阵,如下图所示:
三、资源获取
上述matab程序可从如下链接处获取:
https://download.csdn.net/download/qq_36584460/82066235
资源中提供了仿真的参考质心光斑图像/偏移质心光斑图像,进而可求解波前斜率,进一步重构出待测波前。最后,提供其他技术支持,包括哈特曼波前传感仿真模拟,以及波前重构等算法。
------------恢复内容结束------------
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)