主要内容

このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

イメージの歪み補正アルゴリズムの開発

この例では符号数学工具箱を使用して,イメージの歪みを補正する数学モデルを開発し,ライブスクリプトでローカル関数の特徴を示します。

問題の背景

現実世界の任意の点 P X Y Z は,ある3次元世界の原点に対して定義できます。

カメラのレンズとの相関において,この3次元の点は P の回転と平行移動によって得られる p 0 として定義できます。

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

次に3次元の点 p 0 をカメラのイメージ平面に2次元の点( 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 2 y 2 )と特定のレンズの歪み係数を与えて,歪み補正後のピクセル位置( x 1 y 1 )を決定することが目標です。

特に複雑な部分はないにしても,レンズ歪みの非線形特性によって難易度の高い問題となっています。

歪みモデルの定義

歪みモデルの定義から開始

%的参数信谊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
                  
                 

图中包含一个坐标轴。轴包含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 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)

图中包含一个坐标轴。轴包含242个类型线、颤振对象。

逆歪みモデルの計算

カメラのレンズ歪み係数と一連の歪んだピクセル位置( x 2 y 2 )を与えて,歪み補正後のピクセル位置( x 1 y 1 )を計算できるようにします.0.2に等しい k 1 を除き,すべての歪み係数が0の特殊なケースを調べます。

まず,歪み係数を定義します。

信谊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))结束结束持有网格结束