最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

detectCheckerboardPoints

イメージ内のチェッカーボード パターンの検出

構文

[imagePoints,boardSize] = detectCheckerboardPoints(I)
[imagePoints,boardSize,imagesUsed] = detectCheckerboardPoints(imageFileNames)
[imagePoints,boardSize,imagesUsed] = detectCheckerboardPoints(images)
[imagePoints,boardSize,pairsUsed] = detectCheckerboardPoints(imageFileNames1,imageFileNames2)
[imagePoints,boardSize,pairsUsed] = detectCheckerboardPoints(images1,images2)
[imagePoints,boardSize,pairsUsed] = detectCheckerboardPoints(___,'MinCornerMetric',0.15)

説明

[imagePoints,boardSize] = detectCheckerboardPoints(I) は、2 次元トゥルーカラー イメージまたはグレースケール イメージで、4 行 4 列の正方形よりもサイズが大きい白黒のチェッカーボードを検出します。この関数は、チェッカーボードの検出点と次元を返します。

[imagePoints,boardSize,imagesUsed] = detectCheckerboardPoints(imageFileNames) は、ファイル名の配列として指定された入力イメージ セット内のチェッカーボード パターンを検出します。

[imagePoints,boardSize,imagesUsed] = detectCheckerboardPoints(images) は、グレースケール イメージまたはトゥルーカラー イメージの配列として指定された入力イメージ セット内のチェッカーボード パターンを検出します。

[imagePoints,boardSize,pairsUsed] = detectCheckerboardPoints(imageFileNames1,imageFileNames2) は、ファイル名の cell 配列として指定されたイメージのステレオ ペア内のチェッカーボード パターンを検出します。

[imagePoints,boardSize,pairsUsed] = detectCheckerboardPoints(images1,images2) は、グレースケール イメージまたはトゥルーカラー イメージの配列として指定されたイメージのステレオ ペア内のチェッカーボード パターンを検出します。

[imagePoints,boardSize,pairsUsed] = detectCheckerboardPoints(___,'MinCornerMetric',0.15) は、コーナー メトリクスしきい値を設定します。非負のスカラーとして指定します。イメージにノイズが含まていたり、テキスチャが多く使用されている場合、この値を増やして偽コーナーを削減します。

すべて折りたたむ

キャリブレーション イメージのファイル名の cell 配列を作成します。

for i = 1:5
  imageFileName = sprintf('image%d.tif', i);
  imageFileNames{i} = fullfile(matlabroot,'toolbox','vision',...
       'visiondata','calibration','webcam',imageFileName);
end

イメージ内のキャリブレーション パターンを検出します。

[imagePoints,boardSize,imagesUsed] = detectCheckerboardPoints(imageFileNames);

検出した点を表示します。

imageFileNames = imageFileNames(imagesUsed);
for i = 1:numel(imageFileNames)
  I = imread(imageFileNames{i});
  subplot(2, 2, i);
  imshow(I);
  hold on;
  plot(imagePoints(:,1,i),imagePoints(:,2,i),'ro');
end

ステレオ イメージを読み取ります。

numImages = 4;
images1 = cell(1, numImages);
images2 = cell(1, numImages);
for i = 1:numImages
    images1{i} = fullfile(matlabroot,'toolbox','vision',...
        'visiondata','calibration','stereo','left',sprintf('left%02d.png',i));
    images2{i} = fullfile(matlabroot,'toolbox','vision',...
        'visiondata','calibration','stereo','right',sprintf('right%02d.png',i));
end

イメージ内のチェッカーボードを検出します。

[imagePoints,boardSize,pairsUsed] = ...
    detectCheckerboardPoints(images1,images2);

images1 の点を表示します。

images1 = images1(pairsUsed);
figure;
for i = 1:numel(images1)
      I = imread(images1{i});
      subplot(2,2,i);
      imshow(I); 
      hold on; 
      plot(imagePoints(:,1,i,1),imagePoints(:,2,i,1),'ro');
end 
annotation('textbox',[0 0.9 1 0.1],'String','Camera 1',...
    'EdgeColor','none','HorizontalAlignment','center')

images2 の点を表示します。

images2 = images2(pairsUsed);
figure;
for i = 1:numel(images2)
      I = imread(images2{i});
      subplot(2, 2, i);
      imshow(I);
      hold on; 
      plot(imagePoints(:,1,i,2),imagePoints(:,2,i,2),'ro');
end 
annotation('textbox',[0 0.9 1 0.1],'String','Camera 2',...
    'EdgeColor','none','HorizontalAlignment','center')

入力引数

すべて折りたたむ

入力イメージ。M x N x 3 のトゥルーカラー、または M 行 N 列の 2 次元グレースケールで指定します。入力イメージは、実数で非スパースでなければなりません。関数で検出できるチェッカーボードの最小サイズは 4 行 4 列の正方形です。

データ型: single | double | int16 | uint8 | uint16 | logical

イメージ ファイル名。N 個のファイル名の N 要素 cell 配列として指定します。

カメラ 1 イメージのファイル名。N 個のファイル名の N 要素 cell 配列として指定します。この配列に含まれているイメージは、ステレオ ペアを形成する imageFileNames2 に含まれているイメージと同じ順序でなければなりません。

カメラ 2 イメージのファイル名。N 個のファイル名の N 要素 cell 配列として指定します。この配列に含まれているイメージは、ステレオ ペアを形成する imageFileNames1 に含まれているイメージと同じ順序でなければなりません。

イメージ。グレースケール イメージまたはトゥルーカラー イメージのセットを含む H x W x B x F の配列として指定します。入力の次元は次のとおりです。

H はイメージの高さを表します。
W はイメージの幅を表します。
B はカラー チャネルを表します。値 1 はグレースケール イメージ、値 3 はトゥルーカラー イメージを示します。
F はイメージ フレーム数を表します。

イメージ。グレースケール イメージまたはトゥルーカラー イメージのセットを含む H x W x B x F の配列として指定します。入力の次元は次のとおりです。

H はイメージの高さを表します。
W はイメージの幅を表します。
B はカラー チャネルを表します。値 1 はグレースケール イメージ、値 3 はトゥルーカラー イメージを示します。
F はイメージ フレーム数を表します。

イメージ。グレースケール イメージまたはトゥルーカラー イメージのセットを含む H x W x B x F の配列として指定します。入力の次元は次のとおりです。

H はイメージの高さを表します。
W はイメージの幅を表します。
B はカラー チャネルを表します。値 1 はグレースケール イメージ、値 3 はトゥルーカラー イメージを示します。
F はイメージ フレーム数を表します。

出力引数

すべて折りたたむ

検出されたチェッカーボードのコーナーの座標。1 つのイメージの場合は M 行 2 列の行列として返されます。複数のイメージの場合、点は M x 2 x number of images の配列として返され、イメージのステレオ ペアの場合、点は M x 2 x number of pairs x number of cameras の配列として返されます。

ステレオ ペアの場合、imagePoints(:,:,:,1) は最初のイメージ セットの点で、imagePoints(:,:,:,2) は 2 番目のイメージ セットの点です。出力には M 個の [x y] 座標が含まれます。各座標は、チェッカーボードで正方形のコーナーが検出された点を表します。関数によって返される点の数は、検出された正方形の数を示す boardSize の値によって決まります。関数はサブピクセルの精度で点を検出します。

関数は点の数 M を次のように計算します。

M = prod(boardSize-1).

チェッカーボードを検出できない場合は次のようになります。
imagePoints = []
boardSize = [0,0]

imageFileNames 入力を指定すると、関数は imagePoints を M x 2 x N の配列として返すことができます。この配列では、N はチェッカーボードが検出されたイメージの数を表します。

チェッカーボードの次元。2 要素ベクトル [height, width] として返されます。チェッカーボードの次元は正方形の数で表されます。

パターン検出フラグ。N 個の論理値の N 行 1 列の logical ベクトルとして返されます。関数は、入力イメージと同じ数の論理値を出力します。値 true は、パターンが対応するイメージで検出されたことを示します。値 false は、パターンが検出されなかったことを示します。

ステレオ ペアのパターン検出フラグ。N 個の論理値の N 行 1 列の logical ベクトルとして返されます。関数は、入力イメージと同じ数の論理値を出力します。値 true は、パターンが対応するステレオ イメージのペアで検出されたことを示します。値 false は、パターンが検出されなかったことを示します。

参照

[1] Geiger, A., F. Moosmann, O. Car, and B. Schuster. "Automatic Camera and Range Sensor Calibration using a Single Shot," International Conference on Robotics and Automation (ICRA), St. Paul, USA, May 2012.

拡張機能

R2014a で導入