主要内容

开发一个算法Undistorting图像

这个例子使用符号数学工具箱开发数学模型™undistort图像和本地生活脚本函数的特性。

背景

任何现实点 P ( X , Y , Z ) 可以定义一些3 d世界的起源。

相对于相机镜头,这可以被定义为3 d点 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
                       
                      
                     
                    
                   
                  
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
                       
                      
                     
                    
                   
                  

径向畸变 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
                   
                  
distortionY =
                  
                   
                    
                     y
                   
                  

图包含一个坐标轴对象。坐标轴对象包含242行类型的对象,颤。

径向畸变 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

distortionY =

y 3 x 2 20. + 3 y 2 20. + 1

图包含一个坐标轴对象。坐标轴对象包含242行类型的对象,颤。

计算逆畸变模型

给定一个相机镜头畸变系数和扭曲的像素位置的一组( x 2 , y 2 ),我们希望能够计算无畸变的像素位置( x 1 , y 1 )。我们将看看具体情况所有除了失真系数是零 k 1 等于0.2。

我们首先定义畸变系数。

信谊XY积极的eq1 = X = = distortionX
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
                         
                        
                       
                      
                     
                    
                   
                  
eq2 = Y = = distortionY
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
                         
                        
                       
                      
                     
                    
                   
                  

我们定义的变形方程给出畸变系数,求出无畸变的像素位置( x 1 , y 1 )。

参数= (k_1 k_2 p_1 p_2];parameterValues = (0.2 0 0 0);eq1 =扩大(潜艇(eq1、参数parameterValues))
eq1 =

X = x 3 5 + x y 2 5 + x

eq2 =扩大(潜艇(eq2、参数parameterValues))
eq2 =

Y = x 2 y 5 + y 3 5 + y

结果=解决([eq1 eq2], (x, y),“MaxDegree”3,“真实”的,真正的)
结果=结构体字段:x: (x * (((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/2)) ^ (1/3)——(5 * Y ^ 2) / (3 * (x ^ 2 + Y ^ 2) * ((5 * Y ^ 3) / (2 * x ^ 2 + Y ^ 2 * 2) + ((25 * Y ^ 6) / (4 * (x ^ 2 + Y ^ 2) ^ 2) + (125 * Y ^ 6) / (27 * (x ^ 2 + Y ^ 2) ^ 3)) ^ (1/2)) ^ (1/3)))) / Y Y: ((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/2)) ^ (1/3)——(5 * Y ^ 2) / (3 * (x ^ 2 + Y ^ 2) * ((5 * Y ^ 3) / (2 * x ^ 2 + Y ^ 2 * 2) + ((25 * Y ^ 6) / (4 * (x ^ 2 + Y ^ 2) ^ 2) + (125 * Y ^ 6) / (27 * (x ^ 2 + Y ^ 2) ^ 3)) ^ (1/2)) ^ (1/3)

因为元素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和Y,我们可以使用它来undistort图像。

函数绘制镜头畸变

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