主要内容

开发一种图像复原算法

这个例子使用符号数学工具箱开发了一个数学模型来恢复图像的失真,并在活动脚本中提供了一个局部函数。

背景

任何实世界点 P X Y Z ) 可以根据某个三维世界原点来定义。

相对于相机镜头,这个三维点可以定义为 p 0 ,通过旋转和平移得到 P

p 0 x 0 y 0 z 0 ) R P + t

三维点 p 0 作为一个二维点投影到相机的图像平面上,( x 1 y 1 ).

x 1 x 0 z 0 y 1 y 0 z 0

当相机捕捉图像时,它并不是精确地捕捉到真实的点,而是真实点的一个稍微扭曲的版本,可以表示为( x 2 y 2 ).被扭曲的点可以用以下函数来描述:

x 2 x 1 1 + k 1 r 2 + k 2 r 4 ) + 2 p 1 x 1 y 1 + p 2 r 2 + 2 x 1 2 )

y 2 y 1 1 + k 1 r 2 + k 2 r 4 ) + 2 p 2 x 1 y 1 + p 1 r 2 + 2 y 1 2 )

地点:

k 1 k 2 =透镜的径向畸变系数

p 1 p 2 =透镜的切向失真系数

r x 1 2 + y 1 2

失真

透镜畸变的一个例子如下所示;原始扭曲图像(左)和未扭曲图像(右)。

请注意第一张图像中线条边缘的曲率。对于像图像重建和跟踪这样的应用,知道点的真实位置是很重要的。当我们有一个扭曲的图像时,我们知道扭曲的像素位置( x 2 y 2 ).我们的目标是确定未失真的像素位置( x 1 y 1 )给( x 2 y 2 )和特定镜头的失真系数。

虽然其他方面都很简单,但透镜失真的非线性本质使这个问题具有挑战性。

定义变形模型

我们首先定义我们的扭曲模型:

%的参数信谊k_1k_2p_1p_2真正的信谊rxydistortionX =潜艇(x * (1 + k_1 * r ^ 2 + k_2 * r ^ 4) + 2 * p_1 * x * y + p_2 * (r ^ 2 + 2 * x ^ 2), r, sqrt (x ^ 2 + y ^ 2))
distortionX =
                 
                  
                   
                    
                     
                      
                       
                        
                         
                          p
                        
                        
                         
                          2
                        
                       
                       
                       
                       
                        
                         
                          
                           
                            
                             
                              3.
                             
                             
                             
                              
                               
                                x
                              
                              
                               
                                2
                              
                             
                            
                           
                           
                            +
                           
                            
                             
                              y
                            
                            
                             
                              2
                            
                           
                          
                         
                        
                       
                      
                     
                     
                      +
                     
                      
                       
                        x
                       
                       
                       
                        
                         
                          
                           
                            
                             
                              
                               
                                k
                              
                              
                               
                                2
                              
                             
                             
                             
                             
                              
                               
                                
                                 
                                  
                                   
                                    
                                     
                                      
                                       x
                                     
                                     
                                      
                                       2
                                     
                                    
                                    
                                     +
                                    
                                     
                                      
                                       y
                                     
                                     
                                      
                                       2
                                     
                                    
                                   
                                  
                                 
                                
                               
                              
                              
                               
                                2
                              
                             
                            
                           
                           
                            +
                           
                            
                             
                              
                               
                                k
                              
                              
                               
                                1
                              
                             
                             
                             
                             
                              
                               
                                
                                 
                                  
                                   
                                    x
                                  
                                  
                                   
                                    2
                                  
                                 
                                 
                                  +
                                 
                                  
                                   
                                    y
                                  
                                  
                                   
                                    2
                                  
                                 
                                
                               
                              
                             
                            
                           
                           
                            +
                           
                            1
                          
                         
                        
                       
                      
                     
                     
                      +
                     
                      
                       
                        2
                       
                       
                       
                        
                         
                          p
                        
                        
                         
                          1
                        
                       
                       
                       
                       
                        x
                       
                       
                       
                        y
                      
                     
                    
                   
                   
                    p_2 * (3 * x ^ 2 + y ^ 2) + x * (k_2 * (x ^ 2 + y ^ 2) ^ 2 + k_1 * (x ^ 2 + y ^ 2) + 1) + 2 * p_1 * x * y
                  
                 
distortionY =潜艇(y) * (1 + k_1 * r ^ 2 + k_2 * r ^ 4) + 2 * p_2 * x * y + p_1 * (r ^ 2 + 2 * y ^ 2), r, sqrt (x ^ 2 + y ^ 2))
distortionY =
                 
                  
                   
                    
                     
                      
                       
                        
                         
                          p
                        
                        
                         
                          1
                        
                       
                       
                       
                       
                        
                         
                          
                           
                            
                             
                              x
                            
                            
                             
                              2
                            
                           
                           
                            +
                           
                            
                             
                              3.
                             
                             
                             
                              
                               
                                y
                              
                              
                               
                                2
                              
                             
                            
                           
                          
                         
                        
                       
                      
                     
                     
                      +
                     
                      
                       
                        y
                       
                       
                       
                        
                         
                          
                           
                            
                             
                              
                               
                                k
                              
                              
                               
                                2
                              
                             
                             
                             
                             
                              
                               
                                
                                 
                                  
                                   
                                    
                                     
                                      
                                       x
                                     
                                     
                                      
                                       2
                                     
                                    
                                    
                                     +
                                    
                                     
                                      
                                       y
                                     
                                     
                                      
                                       2
                                     
                                    
                                   
                                  
                                 
                                
                               
                              
                              
                               
                                2
                              
                             
                            
                           
                           
                            +
                           
                            
                             
                              
                               
                                k
                              
                              
                               
                                1
                              
                             
                             
                             
                             
                              
                               
                                
                                 
                                  
                                   
                                    x
                                  
                                  
                                   
                                    2
                                  
                                 
                                 
                                  +
                                 
                                  
                                   
                                    y
                                  
                                  
                                   
                                    2
                                  
                                 
                                
                               
                              
                             
                            
                           
                           
                            +
                           
                            1
                          
                         
                        
                       
                      
                     
                     
                      +
                     
                      
                       
                        2
                       
                       
                       
                        
                         
                          p
                        
                        
                         
                          2
                        
                       
                       
                       
                       
                        x
                       
                       
                       
                        y
                      
                     
                    
                   
                   
                    p_1 * (x ^ 2 + 3 * y ^ 2) + y * (k_2 * (x ^ 2 + y ^ 2) ^ 2 + k_1 * (x ^ 2 + y ^ 2) + 1) + 2 * p_2 * x * y
                  
                 

径向畸变 k 1 0

我们绘制一个像素位置网格,假设我们的镜头有一个径向畸变系数 k 1 0 .注意,靠近图像中心的畸变最小,靠近边缘的畸变最大。

%设置参数参数= [k_1 k_2 p_1 p_2];parameterValues = [0 0 0 0];plotLensDistortion (distortionX distortionY、参数parameterValues)
间隔= 0.2000
distortionX =
                 
                  
                   
                    
                     x
                   
                   
                    x
                  
                 
distortionY =
                 
                  
                   
                    
                     y
                   
                   
                    y
                  
                 

径向畸变 k 1 0 15

探索变化的敏感性 k 1

%设置参数参数= [k_1 k_2 p_1 p_2];parameterValues = [0.15 0 0 0];plotLensDistortion (distortionX distortionY、参数parameterValues)
间隔= 0.2000
distortionX =

x 3. x 2 20. + 3. y 2 20. + 1 X *(3* X ^2)/20 + (3*y^2)/20 + 1)

distortionY =

y 3. x 2 20. + 3. y 2 20. + 1 Y *(3*x^2)/20 + (3* Y ^2)/20 + 1)

计算逆失真模型

给定相机的镜头畸变系数和一组畸变像素位置( x 2 y 2 ),我们希望能够计算未失真的像素位置( x 1 y 1 ).我们将看一下所有失真系数为零的特殊情况,除了 k 1 等于0.2。

我们从定义失真系数开始

信谊XY积极的eq = X == X
eq1 =
                 
                  
                   
                    
                     
                      X
                     
                     
                      
                       
                        
                         
                          
                           
                            p
                          
                          
                           
                            2
                          
                         
                         
                         
                         
                          
                           
                            
                             
                              
                               
                                3.
                               
                               
                               
                                
                                 
                                  x
                                
                                
                                 
                                  2
                                
                               
                              
                             
                             
                              +
                             
                              
                               
                                y
                              
                              
                               
                                2
                              
                             
                            
                           
                          
                         
                        
                       
                       
                        +
                       
                        
                         
                          x
                         
                         
                         
                          
                           
                            
                             
                              
                               
                                
                                 
                                  k
                                
                                
                                 
                                  2
                                
                               
                               
                               
                               
                                
                                 
                                  
                                   
                                    
                                     
                                      
                                       
                                        
                                         x
                                       
                                       
                                        
                                         2
                                       
                                      
                                      
                                       +
                                      
                                       
                                        
                                         y
                                       
                                       
                                        
                                         2
                                       
                                      
                                     
                                    
                                   
                                  
                                 
                                
                                
                                 
                                  2
                                
                               
                              
                             
                             
                              +
                             
                              
                               
                                
                                 
                                  k
                                
                                
                                 
                                  1
                                
                               
                               
                               
                               
                                
                                 
                                  
                                   
                                    
                                     
                                      x
                                    
                                    
                                     
                                      2
                                    
                                   
                                   
                                    +
                                   
                                    
                                     
                                      y
                                    
                                    
                                     
                                      2
                                    
                                   
                                  
                                 
                                
                               
                              
                             
                             
                              +
                             
                              1
                            
                           
                          
                         
                        
                       
                       
                        +
                       
                        
                         
                          2
                         
                         
                         
                          
                           
                            p
                          
                          
                           
                            1
                          
                         
                         
                         
                         
                          x
                         
                         
                         
                          y
                        
                       
                      
                     
                    
                   
                   
                    X = = p_2 * (3 * X ^ 2 + y ^ 2) + X * (k_2 * (X ^ 2 + y ^ 2) ^ 2 + k_1 * (X ^ 2 + y ^ 2) + 1) + 2 * p_1 * X * y
                  
                 
eq = Y == Y
eq2 =
                 
                  
                   
                    
                     
                      Y
                     
                     
                      
                       
                        
                         
                          
                           
                            p
                          
                          
                           
                            1
                          
                         
                         
                         
                         
                          
                           
                            
                             
                              
                               
                                x
                              
                              
                               
                                2
                              
                             
                             
                              +
                             
                              
                               
                                3.
                               
                               
                               
                                
                                 
                                  y
                                
                                
                                 
                                  2
                                
                               
                              
                             
                            
                           
                          
                         
                        
                       
                       
                        +
                       
                        
                         
                          y
                         
                         
                         
                          
                           
                            
                             
                              
                               
                                
                                 
                                  k
                                
                                
                                 
                                  2
                                
                               
                               
                               
                               
                                
                                 
                                  
                                   
                                    
                                     
                                      
                                       
                                        
                                         x
                                       
                                       
                                        
                                         2
                                       
                                      
                                      
                                       +
                                      
                                       
                                        
                                         y
                                       
                                       
                                        
                                         2
                                       
                                      
                                     
                                    
                                   
                                  
                                 
                                
                                
                                 
                                  2
                                
                               
                              
                             
                             
                              +
                             
                              
                               
                                
                                 
                                  k
                                
                                
                                 
                                  1
                                
                               
                               
                               
                               
                                
                                 
                                  
                                   
                                    
                                     
                                      x
                                    
                                    
                                     
                                      2
                                    
                                   
                                   
                                    +
                                   
                                    
                                     
                                      y
                                    
                                    
                                     
                                      2
                                    
                                   
                                  
                                 
                                
                               
                              
                             
                             
                              +
                             
                              1
                            
                           
                          
                         
                        
                       
                       
                        +
                       
                        
                         
                          2
                         
                         
                         
                          
                           
                            p
                          
                          
                           
                            2
                          
                         
                         
                         
                         
                          x
                         
                         
                         
                          y
                        
                       
                      
                     
                    
                   
                   
                    Y = = p_1 * (x ^ 2 + 3 * Y ^ 2) + Y * (k_2 * (x ^ 2 + Y ^ 2) ^ 2 + k_1 * (x ^ 2 + Y ^ 2) + 1) + 2 * p_2 * x * Y
                  
                 

定义给定畸变系数的畸变方程,求解未畸变的像素位置( x 1 y 1 ).

参数= [k_1 k_2 p_1 p_2];parameterValues = [0.2 0 0 0];扩展(subs(eq1, parameters, parameterValues))
eq1 =

X x 3. 5 + x y 2 5 + x X = X ^3/5 + (X *y^2)/5 + X

eq2 = expand(subs(eq2, parameters, parameterValues))
eq2 =

Y x 2 y 5 + y 3. 5 + y Y = (x^2* Y)/5 + Y ^3/5 + Y

解([eq1, eq2], [x,y],“MaxDegree”3,“真实”的,真正的)
结果=结构体字段:X: [1x1 sym] y: [1x1 sym]

由于元素1是唯一的实际解,我们将把这个表达式提取到它自己的变量中。

[结果。xResult.y]
ans =

X σ 1 Y σ 1 ) 在哪里 σ 1 σ 2 - 5 Y 2 3. X 2 + Y 2 σ 2 σ 2 5 Y 3. 2 X 2 + Y 2 + 25 Y 6 4 X 2 + Y 2 2 + 125 Y 6 27 X 2 + Y 2 3. 1 / 3. [(X * (((5 * Y ^ 3) / (2 * (X ^ 2 + Y ^ 2)) + sqrt ((25 * Y ^ 6) / (4 * (X ^ 2 + Y ^ 2) ^ 2) + (125 * Y ^ 6) / (27 * (X ^ 2 + Y ^ 2) ^ 3))) ^符号(1/3)——(5 * Y ^ 2) / (3 * (X ^ 2 + Y ^ 2) * ((5 * Y ^ 3) / (2 * (X ^ 2 + Y ^ 2)) + sqrt ((25 * Y ^ 6) / (4 * (X ^ 2 + Y ^ 2) ^ 2) + (125 * Y ^ 6) / (27 * (X ^ 2 + Y ^ 2) ^ 3))) ^符号(1/3))))/ Y,(((5 * Y ^ 3) / (2 * (X ^ 2 + Y ^ 2)) + sqrt ((25 * Y ^ 6) / (4 * (X ^ 2 + Y ^ 2) ^ 2) + (125 * Y ^ 6) / (27 * (X ^ 2 + Y ^ 2) ^ 3))) ^符号(1/3)——(5 * Y ^ 2) / (3 * (X ^ 2 + Y ^ 2) * ((5 * Y ^ 3) / (2 * (X ^ 2 + Y ^ 2)) + sqrt ((25 * Y ^ 6) / (4 * (X ^ 2 + Y ^ 2) ^ 2) + (125 * Y ^ 6) / (27 * (X ^ 2 + Y ^ 2) ^ 3))) ^符号(1/3))))

现在我们有了像素位置X和Y的解析表达式,我们可以使用它来消除图像的失真。

功能,绘制镜头失真

函数plotLensDistortion (distortionX distortionY、参数parameterValues)% distortionX是描述扭曲的x坐标的表达式% distortionY是描述扭曲的y坐标的表达式% k1和k2为径向畸变系数% p1和p2为切向畸变系数信谊xy%这是图像上的网格间距间隔= 0.2%检查并参数化代入k_1 k_2 p_1 p_2的值convert = subs(convert,parameters,parameterValues)%在网格上循环x_i = 1:间隔:1y_j = 1:间隔:1%计算扭曲的位置xout = subs(哈哈图x, {x,y}, {x_i,y_j});yout = subs(distortionY, {x,y}, {x_i,y_j});画出原始点情节(x_i y_j,“o”“颜色”,[1.0, 0.0, 0.0])保持用Quiver绘制扭曲方向p1 = [x_i, y_j];%第一点p2 = (xout,你);%的第二点dp = p2-p1;%的差异箭袋(p1 (1) p1 (2), dp (1), dp (2),自动定量的“关闭”“MaxHeadSize”,1,“颜色”(0 0 1))结束结束持有网格结束