基于重心法哈特曼波前传感器光斑图像的质心计算

一、光斑图像的模拟

首先,仿真得到如下图所示的光斑阵列图像,仿真参数如下:微透镜数目为72×72,每个微透镜所占的像素数为36×36,CCD相机像素数则为2592×2592;
在这里插入图片描述

图1 仿真得到的光斑图像

二、重心法原理

在子孔径光斑质心计算方面,最为简单直接的方法是重心法,其计算公式如下:

 

 

 

式中[x(i),y(i)]分别表示第i个子孔径在x,y方向上的质心位置, 

分别表示点(m,n)处的像素坐标, I m n {{I}_{mn}} Imn表示的是点(m,n)处像素的强度。通过将当前质心位置与标定质心位置进行比较,即可得到待测波前的斜率:

将图1所示的光斑阵列图像代入到上式中,即可求解得到XY方向上的质心数据,

X方向质心数据为72*72大小的矩阵,如下图所示:

在这里插入图片描述

图2 X方向质心数据

Y方向质心数据为72*72大小的矩阵,如下图所示:

在这里插入图片描述

图3 X方向质心数据

三、资源获取

上述matab程序可从如下链接处获取:

https://download.csdn.net/download/qq_36584460/82066235

资源中提供了仿真参考质心光斑图像/偏移质心光斑图像,进而可求解波前斜率,进一步重构出待测波前。最后,提供其他技术支持,包括哈特曼波前传感仿真模拟,以及波前重构等算法。

 

------------恢复内容开始------------

一、光斑图像的模拟

首先,仿真得到如下图所示的光斑阵列图像,仿真参数如下:微透镜数目为72×72,每个微透镜所占的像素数为36×36,CCD相机像素数则为2592×2592;
在这里插入图片描述

图1 仿真得到的光斑图像

二、重心法原理

在子孔径光斑质心计算方面,最为简单直接的方法是重心法,其计算公式如下:

 

$\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">&sum;</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">&sum;</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">&sum;</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">&sum;</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">&sum;</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">&sum;</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">&sum;</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">&sum;</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大小的矩阵,如下图所示:

在这里插入图片描述

图2 X方向质心数据

Y方向质心数据为72*72大小的矩阵,如下图所示:

在这里插入图片描述

图3 X方向质心数据

三、资源获取

上述matab程序可从如下链接处获取:

https://download.csdn.net/download/qq_36584460/82066235

资源中提供了仿真参考质心光斑图像/偏移质心光斑图像,进而可求解波前斜率,进一步重构出待测波前。最后,提供其他技术支持,包括哈特曼波前传感仿真模拟,以及波前重构等算法。

 

------------恢复内容结束------------

posted @ 2022-02-23 20:15  简单光学  阅读(571)  评论(1编辑  收藏  举报