主要内容

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

特徴に基づくパノラマイメージの繋ぎ合わせ

この例では,特徴ベースのイメージレジストレーションの手法を使用してパノラマを自動作成する方法を説明します。

概要

特徴の検出とマッチングは,イメージレジストレーション,追跡,オブジェクト検出といった数多くのコンピュータービジョンアプリケーションで使用される強力な手法です。この例では,特徴ベースの手法を使用して一連のイメージを自動的に繋ぎ合わせます。イメージを繋ぎ合わせる手続きは,特徴ベースのイメージレジストレーションを拡張したものです。1組のイメージ ペアのレジストレーションを行う代わりに、複数のイメージ ペアを互いに比較しながらレジストレーションを連続的に行い、パノラマを形成します。

手順1 -イメージの読み込み

この例で使用するイメージセットには建物の写真が含まれています。これらの写真は,キャリブレーションされていないスマートフォンカメラを左から右へ水平に移動させて,建物のすべての部分をカバーするように撮影したものです。

下に示すように,イメージにはレンズ歪みの影響が比較的少ないため,カメラのキャリブレーションは必要ありません。しかし,レンズ歪みがある場合は,パノラマを作成する前にカメラのキャリブレーションを行い,イメージの歪みを補正しなければなりません。必要に応じてカメラキャリブレーターアプリを使用し,カメラのキャリブレーションを行うことができます。

%加载图片。buildingDir = fullfile (toolboxdir (“愿景”),“visiondata”“建筑”);buildingScene = imageDatastore (buildingDir);显示要缝合的图像。蒙太奇(buildingScene.Files)

图中包含一个坐标轴。轴包含一个image类型的对象。

手順2 -イメージペアのレジストレーション

パノラマを作成するには,まず次の手順によって,連続したイメージペアのレジストレーションを行います。

  1. n n - 1 の間で特徴を検出し,マッチングします。

  2. n n - 1 にマッピングする幾何学的変換 T n を推定します。

  3. n をパノラマイメージに T n T n - 1 T 1 としてマッピングする変換を計算します。

%从映像集读取第一个映像。I = readimage (buildingScene, 1);初始化I(1)的特性grayImage = im2gray(我);点= detectSURFFeatures (grayImage);[features, points] = extractFeatures(grayImage,points);将所有变换初始化为单位矩阵。请注意,%投影变换在这里使用,因为建筑图像是公平的靠近相机。如果这个场景是从远处拍摄的,一个仿射变换就足够了。numImages =元素个数(buildingScene.Files);tforms (numImages) = projective2d(眼(3));%初始化变量以保存图像大小。图象尺寸= 0 (numImages, 2);%遍历剩余的图像对n = 2: numImages%存储I(n-1)的点和特性。pointsPrevious =点;featuresPrevious =功能;%读我(n)。I = readimage(buildingScene, n);将图像转换为灰度。grayImage = im2gray(我);%保存图像大小。图象尺寸大小(n:) = (grayImage);%检测并提取I(n)的SURF特征。点= detectSURFFeatures (grayImage);[features, points] = extractFeatures(grayImage, points);找出I(n)和I(n-1)之间的对应关系。indexPairs = matchFeatures(feature, featuresPrevious,“独特的”,真正的);matchedPoints = points(indexPairs(:,1),:);matchedPointsPrev = pointprevious (indexPairs(:,2),:); / /索引%估计I(n)和I(n-1)之间的变换。tforms(n) = estimateGeometricTransform2D(matchedPoints, matchedPointsPrev,...“射影”“信心”, 99.9,“MaxNumTrials”, 2000);%计算T(n) * T(n-1) *…* T (1)tforms (n)。T= tforms(n).T * tforms(n-1).T;结束

この時点では,tformsのすべての変換が最初のイメージを基準として行われます。これは,すべてのイメージを順次処理できるので,イメージレジストレーションの手続きをコード化するには便利な方法です。ただし,最初のイメージをパノラマの始点として使用すると,パノラマを構成するイメージの大部分で歪みが生じる傾向があるため,最高に美しいパノラマは生成されません。シーンの中央で歪みが一番少なくなるよう変換を修正することで,見栄えの良いパノラマを作成することができます。これを行うには,中央のイメージの変換を反転させて,その変換をそれ以外のすべてのイメージに適用します。

まずprojective2doutputLimitsメソッドを使用して各変換の出力範囲を求めます。その後,この出力範囲を使ってシーンのほぼ中央にあるイメージを自動的に見つけます。

%计算每个转换的输出限制。i = 1:元素个数(tforms) [xlim(我,:),ylim(我,:)]= outputLimits (tforms(我),(1)图象尺寸(我,2)]、[1图象尺寸(我,1)));结束

次に,各変換についてXの範囲の平均を求め,中央にあるイメージを見つけます。ここではシーンが横長であることがわかっているので,Xの範囲のみを使用します。他のイメージセットを使用する場合は,必要に応じてXとYの両方の範囲を使用して,中央にあるイメージを見つけます。

avgXLim = mean(xlim, 2);[~, idx] = (avgXLim)进行排序;地板centerIdx =((元素个数(tforms) + 1) / 2);centerImageIdx = idx (centerIdx);

最後に,中央にあるイメージの逆変換を,他のすべてのイメージに適用します。

Tinv =反转(tforms (centerImageIdx));I = 1:numel(tforms) tforms(I)。T = tforms(我)。T * Tinv.T;结束

手順3 -パノラマの初期化

次に,すべてのイメージをマッピングする対象となる,初期の空白のパノラマを作成します。

outputLimitsメソッドを使用して,すべての変換にわたる出力範囲の最小値と最大値を計算します。これらの値は,パノラマのサイズを自動計算するために使用されます。

i = 1:元素个数(tforms) [xlim(我,:),ylim(我,:)]= outputLimits (tforms(我),(1)图象尺寸(我,2)]、[1图象尺寸(我,1)));结束maxImageSize = max(图象尺寸);找出最小和最大输出限制。xMin = min ([1;xlim (:)));xMax = max ([maxImageSize (2);xlim (:)));yMin = min ([1;ylim (:)));yMax = max ([maxImageSize (1);ylim (:)));%全景图的宽度和高度。宽度=圆形(xMax - xMin);height = round(yMax - yMin);%初始化“空”全景图。全景图= 0([高宽3],“喜欢”,我);

手順4 -パノラマの作成

imwarpを使用してイメージをパノラマにマッピングし,愿景。alphablendを使用してイメージを重ね合わせます。

搅拌机=愿景。alphablend (“操作”“二元掩模”...“MaskSource”输入端口的);%创建一个2-D空间参考对象,定义全景图的大小。xLimits = [xMin xMax];yLimits = [yMin yMax];全景视图= imref2d([height width], xLimits, yLimits);创建全景图。i = 1:numImages i = readimage(buildingScene, i);%把我变成全景。= imwarp(I, tforms(I)),“OutputView”, panoramaView);%生成二进制掩码。mask = imwarp(true(size(I,1),size(I,2)), tforms(I),“OutputView”, panoramaView);在全景图上覆盖变形的图像。全景=步骤(搅拌机,全景,warpedImage, mask);结束图imshow(全景)

图中包含一个坐标轴。轴包含一个image类型的对象。

まとめ

この例では,特徴ベースのイメージレジストレーションの手法を使用してパノラマを自動作成する方法を説明しました。この例に追加の手法を取り入れて,パノラマイメージのブレンドと配置を改善することもできます[1]。

参考文献

马修·布朗和大卫·g·洛,2007。使用不变特征的自动全景图像拼接。j .第一版。Vision 74,1(2007年8月),59-73。