主要内容

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

キャリブレションされていないステレオメジの平行化

この例では,カメラの内部パラメ,タ,が不明な場合に,関数estimateFundamentalMatrixestimateUncalibratedRectificationおよびdetectSURFFeaturesを使用して2のキャリブレションされていないメジの平行化を計算する方法を説明します。

ステレオイメージの平行化では,各イメージの対応する点が同じ行座標をもつような方法で,イメージが共通のイメージ平面に投影されます。この処理は2次元ステレオ対応点探索問題が1次元の問題に縮小されるため,ステレオビジョンの処理に役立ちます。たとえば,ステレオ視差計算やアナグリフ▪▪メ▪▪ジ作成の前処理手順としてよく使用されます。

手順1:ステレオ@ @メ@ @ @ジのペアの読み取り

。続いて,メジをグレスケルに変換します。マッチングプロセスに色は不要です。

I1 = imread(“yellowstone_left.png”);I2 = imread(“yellowstone_right.png”);%转换为灰度。I1gray = rgb2gray(I1);I2gray = rgb2gray(I2);

両方の▪▪メ▪▪ジを並べて表示します。その後,。

图;imshowpair (I1、I2“蒙太奇”);标题(I1(左);I2(右));图;imshow (stereoAnaglyph (I1、I2));标题(合成图像(红色-左图像,青色-右图像));

メ,ジ間には明らかに向きと位置のオフセットが見られます。平行化の目的は,両方のイメージ内で対応する点が同じ行に表示されるようにイメージの位置を合わせることです。

手順2:各e . e . e . e . e . e . e

平行化のプロセスには2のメジ間における一連の点の対応関係が必要です。こうした対応関係を生成するには,両方のイメージから関心点を集め,両者間でマッチする可能性のあるものを選択します。detectSURFFeaturesを使用して,両方の。

blobs1 = detectsurffatures (I1gray,“MetricThreshold”, 2000);blobs2 = detectsurfeatures (I2gray,“MetricThreshold”, 2000);

I1およびI2で最も強い30個の冲浪特徴量について,位置とスケールを可視化します。検出された特徴をすべてはマッチングできない点に注意してください。これは,両方のイメージでは検出されない特徴や,カメラの動きが原因で片方のイメージには表示されない特徴があるためです。

图;imshow (I1);持有;情节(selectStrongest (blobs1、30));标题(I1中30个最强SURF特征);图;imshow (I2);持有;情节(selectStrongest (blobs2、30));标题(I2中30个最强SURF特征);

手順3:点の推定的対応関係の検出

関数extractFeaturesおよびmatchFeaturesを使用して,点の推定的対応関係を見けます。各ブロブにいて特徴量ベクトル(記述子)を計算します。

[featres1, validBlobs1] = extractFeatures(I1gray, blobs1);[featres2, validBlobs2] = extractFeatures(I2gray, blobs2);

差の絶対値の和(悲伤)をメトリクスとして使い,マッチする特徴のaapl .ンデックスを求めます。

indexPairs = matchFeatures(featres1, featres2,“指标”“伤心”...“MatchThreshold”5);

各▪▪メ▪▪ジに▪▪いてマッチする点の位置を取得します。

matchedPoints1 = validBlobs1(indexPairs(:,1),:);matchedPoints2 = validBlobs2(indexPairs(:,2),:);

ステレオメジを組み合わせた合成メジ上に,マッチする点を表示します。マッチの大部分は正いものですが,外れ値もいくかあります。

图;showMatchedFeatures(I1, I2, matchedPoints1, matchedPoints2);传奇(I1中假定匹配的点I2中假定匹配的点);

手順4:エピポ,ラ制約を使用した外れ値の削除

正しくマッチしている点は,エピポ,ラ制約を満たしていなければなりません。これは,各点が,その対応する点によって決定されるエピポ,ラ線上になければならないということです。関数estimateFundamentalMatrixを使用して基礎行列を計算し,エピポラ制約を満たすンラアを見けます。

[fMatrix, epipolarInliers, status] = estimatfundamental matrix (...matchedPoints1 matchedPoints2,“方法”“RANSAC”...“NumTrials”, 10000,“DistanceThreshold”, 0.1,“信心”, 99.99);如果isepepoleinimage (fMatrix, size(I1))...|| isEpipoleInImage(fMatrix', size(I2)) error([要么没有找到足够的匹配点,要么...“偶极在图像内。你可能需要。”...“检查并改善被检测特征的质量”...“和/或提高你的图像质量。”]);结束inlierPoints1 = matchedPoints1(epipolarInliers,:);inlierPoints2 = matchedPoints2(epipolarInliers,:);图;showMatchedFeatures(I1, I2, inlierPoints1, inlierPoints2);传奇(I1中的Inlier点I2中的Inlier点);

手順5:@ @メ,@ @ジの平行化

関数estimateUncalibratedRectificationを使用して平行化変換を計算します。これを使用すると,対応する各点が同じ行に表示されるように。

[t1, t2] = estimateuncalibratedrectifier (fMatrix,...inlierPoints1。位置,inlierPoints2。位置、大小(I2));Tform1 = projve2d (t1);Tform2 = projve2d (t2);

ステレオ。赤とシアンの立体眼鏡を使用して,3次元効果を確認することができます。

[I1Rect, I2Rect] = rectifyStereoImages(I1, I2, tform1, tform2);图;imshow (stereoAnaglyph (I1Rect I2Rect));标题(矫正立体图像(红色-左图像,青色-右图像));

手順6:平行化プロセスの一般化

上記の手順で使用したパラメタは,2の特定のステレオメジに合わせて設定されています。他の▪▪メ▪▪ジを処理するには関数cvexRectifyStereoImagesを使用できます。この関数には平行化パラメ,タ,を自動調整する追加のロジックが含まれています。下記のメジは,この関数を使ってメジのペアを処理した結果を示したものです。

cvexRectifyImages (“parkinglot_left.png”“parkinglot_right.png”);

参考文献

[1] Trucco, E;维利,A。3-D计算机视觉入门技术普伦蒂斯·霍尔,1998年。

[2]哈特利R;Zisserman,。计算机视觉中的多视图几何。剑桥大学出版社,2003年。

哈特利,R。《为八点算法辩护》IEEE模式分析与机器智能汇刊,1997年6月,第19期。

[4]费施勒,MA;葛,RC。随机样本共识:模型拟合与图像分析和自动制图应用的范例美国计算机学会通讯1981年6月24日。