このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。
この例では符号数学工具箱を使用して,イメージの歪みを補正する数学モデルを開発し,ライブスクリプトでローカル関数の特徴を示します。
現実世界の任意の点 は,ある3次元世界の原点に対して定義できます。
カメラのレンズとの相関において,この3次元の点は の回転と平行移動によって得られる として定義できます。
=
次に3次元の点 をカメラのイメージ平面に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 =
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 =
半径方向歪み
レンズの半径方向歪み係数を と仮定して,ピクセル位置のグリッドをプロットします。歪みは、イメージの中心付近で最小、エッジ付近で最大となります。
%设置参数参数= [k_1 k_2 p_1 p_2];parameterValues = [0 0 0 0];plotLensDistortion (distortionX distortionY、参数parameterValues)
间隔= 0.2000
distortionX =
distortionY =
半径方向歪み
の変更に対する感度を調べます。
%设置参数参数= [k_1 k_2 p_1 p_2];parameterValues = [0.15 0 0 0];plotLensDistortion (distortionX distortionY、参数parameterValues)
间隔= 0.2000
distortionX =
distortionY =
カメラのレンズ歪み係数と一連の歪んだピクセル位置( , )を与えて,歪み補正後のピクセル位置( , )を計算できるようにします.0.2に等しい を除き,すべての歪み係数が0の特殊なケースを調べます。
まず,歪み係数を定義します。
信谊XY积极的eq = X == X
eq1 =
eq = Y == Y
eq2 =
与えられた歪み係数に対する歪み方程式を定義して,歪み補正後のピクセル位置( , )の解を求めます。
参数= [k_1 k_2 p_1 p_2];parameterValues = [0.2 0 0 0];扩展(subs(eq1, parameters, parameterValues))
eq1 =
eq2 = expand(subs(eq2, parameters, parameterValues))
eq2 =
解([eq1, eq2], [x,y],“MaxDegree”3,“真实”的,真正的)
结果=结构体字段:X: [1x1 sym] y: [1x1 sym]
要素1は実数解のみであるため,その式を自身の変数へ抽出します。
[结果。xResult.y]
ans =
これで,イメージの歪み補正に使用できるピクセル位置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:间隔:1为y_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))结束结束持有从网格在结束