OpenCV 4.5.3(日本語機械翻訳)
クラス | 列挙型 | 関数 | 変数
ArUco Marker Detection

クラス

struct cv::aruco::DetectorParameters
detectMarker処理のパラメータ。[【詳解】(英語]
class cv::aruco::Board
Boardマーカーの[【詳解】(英語]
class cv::aruco::GridBoard
マーカーを格子状に配置した平面ボード より一般的なタイプのボード。すべてのマーカーは同一平面上に格子状に配置されています。この碁盤を描くにはdrawPlanarBoard()関数 ([【詳解】(英語]
class cv::aruco::CharucoBoard
ChArUcoボード ChArUcoボードの固有クラスです。ChArUcoボードは、チェスボードの白いマス目の中にマーカーを配置した平面的なボードです。ChArUcoボードの利点は、ArUcoマーカーの汎用性と、キャリブレーションやポーズ推定に重要なチェスボードのコーナー精度の両方を実現できることです。このクラスでは、ChArUcoボードを簡単に作成、描画することもできます。[【詳解】(英語]
class cv::aruco::Dictionary
マーカーの辞書/セットです。内部のコード化を含みます[【詳解】(英語]

列挙型

enum cv::aruco::CornerRefineMethod { cv::aruco::CORNER_REFINE_NONE , cv::aruco::CORNER_REFINE_SUBPIX , cv::aruco::CORNER_REFINE_CONTOUR , cv::aruco::CORNER_REFINE_APRILTAG }
enum cv::aruco::PREDEFINED_DICTIONARY_NAME {
DICT_4X4_50 = 0 , DICT_4X4_100 , DICT_4X4_250 , DICT_4X4_1000 ,
DICT_5X5_50 , DICT_5X5_100 , DICT_5X5_250 , DICT_5X5_1000 ,
DICT_6X6_50 , DICT_6X6_100 , DICT_6X6_250 , DICT_6X6_1000 ,
DICT_7X7_50 , DICT_7X7_100 , DICT_7X7_250 , DICT_7X7_1000 ,
DICT_ARUCO_ORIGINAL , cv::aruco::DICT_APRILTAG_16h5 , cv::aruco::DICT_APRILTAG_25h9 , cv::aruco::DICT_APRILTAG_36h10 ,
cv::aruco::DICT_APRILTAG_36h11
}
定義済みのマーカーの辞書/セット 各辞書はビット数と含まれるマーカーの数を示す[【詳解】(英語]

関数

CV_EXPORTS_W void cv::aruco::detectMarkers (InputArray image, const Ptr< Dictionary > &dictionary, OutputArrayOfArrays corners, OutputArray ids, const Ptr< DetectorParameters > &parameters=DetectorParameters::create(), OutputArrayOfArrays rejectedImgPoints=noArray(), InputArray cameraMatrix=noArray(), InputArray distCoeff=noArray())
基本マーカー検出[【詳解】(英語]
CV_EXPORTS_W void cv::aruco::estimatePoseSingleMarkers (InputArrayOfArrays corners, float markerLength, InputArray cameraMatrix, InputArray distCoeffs, OutputArray rvecs, OutputArray tvecs, OutputArray _objPoints=noArray())
単一のマーカーに対するポーズ推定[【詳解】(英語]
CV_EXPORTS_W int cv::aruco::estimatePoseBoard (InputArrayOfArrays corners, InputArray ids, const Ptr< Board > &board, InputArray cameraMatrix, InputArray distCoeffs, InputOutputArray rvec, InputOutputArray tvec, bool useExtrinsicGuess=false)
マーカーを配置したボードの姿勢推定[【詳解】(英語]
CV_EXPORTS_W void cv::aruco::refineDetectedMarkers (InputArray image, const Ptr< Board > &board, InputOutputArrayOfArrays detectedCorners, InputOutputArray detectedIds, InputOutputArrayOfArrays rejectedCorners, InputArray cameraMatrix=noArray(), InputArray distCoeffs=noArray(), float minRepDistance=10.f, float errorCorrectionRate=3.f, bool checkAllOrders=true, OutputArray recoveredIdxs=noArray(), const Ptr< DetectorParameters > &parameters=DetectorParameters::create())
既に検出されたマーカーとボードのレイアウトに基づいて,検出されなかったマーカーを再検出します.[【詳解】(英語]
CV_EXPORTS_W void cv::aruco::drawDetectedMarkers (InputOutputArray image, InputArrayOfArrays corners, InputArray ids=noArray(), Scalar borderColor=Scalar(0, 255, 0))
検出されたマーカを画像に描画します.[【詳解】(英語]
CV_EXPORTS_W void cv::aruco::drawAxis (InputOutputArray image, InputArray cameraMatrix, InputArray distCoeffs, InputArray rvec, InputArray tvec, float length)
ポーズ推定による座標軸の描画[【詳解】(英語]
CV_EXPORTS_W void cv::aruco::drawMarker (const Ptr< Dictionary > &dictionary, int id, int sidePixels, OutputArray img, int borderBits=1)
正準化されたマーカー画像を描画する[【詳解】(英語]
CV_EXPORTS_W void cv::aruco::drawPlanarBoard (const Ptr< Board > &board, Size outSize, OutputArray img, int marginSize=0, int borderBits=1)
平面状のボードを描画する[【詳解】(英語]
void cv::aruco::_drawPlanarBoardImpl (Board *board, Size outSize, OutputArray img, int marginSize=0, int borderBits=1)
生のポインタを受け取る drawPlanarBoard の実装.Boardポインタを受け取ります.
cv::aruco::CV_EXPORTS_AS (calibrateCameraArucoExtended) double calibrateCameraAruco(InputArrayOfArrays corners
arucoマーカを用いたカメラの較正[【詳解】(英語]
CV_EXPORTS_W double cv::aruco::calibrateCameraAruco (InputArrayOfArrays corners, InputArray ids, InputArray counter, const Ptr< Board > &board, Size imageSize, InputOutputArray cameraMatrix, InputOutputArray distCoeffs, OutputArrayOfArrays rvecs=noArray(), OutputArrayOfArrays tvecs=noArray(), int flags=0, TermCriteria criteria=TermCriteria(TermCriteria::COUNT+TermCriteria::EPS, 30, DBL_EPSILON))
これは #calibrateCameraAruco と同じ機能ですが,キャリブレーション誤差の推定は行いません.
CV_EXPORTS_W void cv::aruco::getBoardObjectAndImagePoints (const Ptr< Board > &board, InputArrayOfArrays detectedCorners, InputArray detectedIds, OutputArray objPoints, OutputArray imgPoints)
ボード構成と検出されたマーカーのセットが与えられると、solvePnPを呼び出すために、対応する画像ポイントとオブジェクトポイントを返します[【詳解】(英語]
CV_EXPORTS_W int cv::aruco::interpolateCornersCharuco (InputArrayOfArrays markerCorners, InputArray markerIds, InputArray image, const Ptr< CharucoBoard > &board, OutputArray charucoCorners, OutputArray charucoIds, InputArray cameraMatrix=noArray(), InputArray distCoeffs=noArray(), int minMarkers=2)
ChArUcoボードのコーナー位置の補間[【詳解】(英語]
CV_EXPORTS_W bool cv::aruco::estimatePoseCharucoBoard (InputArray charucoCorners, InputArray charucoIds, const Ptr< CharucoBoard > &board, InputArray cameraMatrix, InputArray distCoeffs, InputOutputArray rvec, InputOutputArray tvec, bool useExtrinsicGuess=false)
ChArUcoボードのコーナーの一部を用いたポーズ推定[【詳解】(英語]
CV_EXPORTS_W void cv::aruco::drawDetectedCornersCharuco (InputOutputArray image, InputArray charucoCorners, InputArray charucoIds=noArray(), Scalar cornerColor=Scalar(255, 0, 0))
チャルーココーナーの描画[【詳解】(英語]
cv::aruco::CV_EXPORTS_AS (calibrateCameraCharucoExtended) double calibrateCameraCharuco(InputArrayOfArrays charucoCorners
Charucoコーナーを利用したカメラのキャリブレーション[【詳解】(英語]
CV_EXPORTS_W double cv::aruco::calibrateCameraCharuco (InputArrayOfArrays charucoCorners, InputArrayOfArrays charucoIds, const Ptr< CharucoBoard > &board, Size imageSize, InputOutputArray cameraMatrix, InputOutputArray distCoeffs, OutputArrayOfArrays rvecs=noArray(), OutputArrayOfArrays tvecs=noArray(), int flags=0, TermCriteria criteria=TermCriteria(TermCriteria::COUNT+TermCriteria::EPS, 30, DBL_EPSILON))
calibrateCameraCharucoと同じ機能ですが,キャリブレーションエラーの推定を行いません.
CV_EXPORTS_W void cv::aruco::detectCharucoDiamond (InputArray image, InputArrayOfArrays markerCorners, InputArray markerIds, float squareMarkerLengthRate, OutputArrayOfArrays diamondCorners, OutputArray diamondIds, InputArray cameraMatrix=noArray(), InputArray distCoeffs=noArray())
ChArUco Diamondマーカーの検出[【詳解】(英語]
CV_EXPORTS_W void cv::aruco::drawDetectedDiamonds (InputOutputArray image, InputArrayOfArrays diamondCorners, InputArray diamondIds=noArray(), Scalar borderColor=Scalar(0, 0, 255))
検出されたChArUcoダイヤモンドマーカーのセットを描画します。[【詳解】(英語]
CV_EXPORTS void cv::aruco::drawCharucoDiamond (const Ptr< Dictionary > &dictionary, Vec4i ids, int squareLength, int markerLength, OutputArray img, int marginSize=0, int borderBits=1)
ChArUcoダイヤモンドマーカーの描画[【詳解】(英語]
CV_EXPORTS_W bool cv::aruco::testCharucoCornersCollinear (const Ptr< CharucoBoard > &_board, InputArray _charucoIds)
ChArUcoマーカーが平行であるかどうかのテスト[【詳解】(英語]
CV_EXPORTS Ptr< Dictionary > cv::aruco::getPredefinedDictionary (PREDEFINED_DICTIONARY_NAME name)
PREDEFINED_DICTIONARY_NAMEで定義されている定義済みの辞書の一つを返します。
CV_EXPORTS_W Ptr< Dictionary > cv::aruco::getPredefinedDictionary (int dict)
DICT_* で参照される定義済みの辞書のうちのひとつを返します。
cv::aruco::CV_EXPORTS_AS (custom_dictionary) Ptr< Dictionary > generateCustomDictionary(int nMarkers
cv::aruco::CV_EXPORTS_AS (custom_dictionary_from) Ptr< Dictionary > generateCustomDictionary(int nMarkers
カスタマイズ可能な新しいマーカー辞書を生成します.[【詳解】(英語]

変数

InputArray cv::aruco::ids
InputArray InputArray cv::aruco::counter
InputArray InputArray const Ptr< Board > & cv::aruco::board
InputArray InputArray const Ptr< Board > Size cv::aruco::imageSize
InputArray InputArray const Ptr< Board > Size InputOutputArray cv::aruco::cameraMatrix
InputArray InputArray const Ptr< Board > Size InputOutputArray InputOutputArray cv::aruco::distCoeffs
InputArray InputArray const Ptr< Board > Size InputOutputArray InputOutputArray OutputArrayOfArrays cv::aruco::rvecs
InputArray InputArray const Ptr< Board > Size InputOutputArray InputOutputArray OutputArrayOfArrays OutputArrayOfArrays cv::aruco::tvecs
InputArray InputArray const Ptr< Board > Size InputOutputArray InputOutputArray OutputArrayOfArrays OutputArrayOfArrays OutputArray cv::aruco::stdDeviationsIntrinsics
InputArray InputArray const Ptr< Board > Size InputOutputArray InputOutputArray OutputArrayOfArrays OutputArrayOfArrays OutputArray OutputArray cv::aruco::stdDeviationsExtrinsics
InputArray InputArray const Ptr< Board > Size InputOutputArray InputOutputArray OutputArrayOfArrays OutputArrayOfArrays OutputArray OutputArray OutputArray cv::aruco::perViewErrors
InputArray InputArray const Ptr< Board > Size InputOutputArray InputOutputArray OutputArrayOfArrays OutputArrayOfArrays OutputArray OutputArray OutputArray int cv::aruco::flags = 0
InputArray InputArray const Ptr< Board > Size InputOutputArray InputOutputArray OutputArrayOfArrays OutputArrayOfArrays OutputArray OutputArray OutputArray int TermCriteria cv::aruco::criteria = TermCriteria(TermCriteria::COUNT + TermCriteria::EPS, 30, DBL_EPSILON))
InputArrayOfArrays cv::aruco::charucoIds
int cv::aruco::markerSize
int int cv::aruco::randomSeed =0)
int const Ptr< Dictionary > & cv::aruco::baseDictionary

詳解

This module is dedicated to square fiducial markers (also known as Augmented Reality Markers) These markers are useful for easy, fast and robust camera pose estimation.ç

The main functionalities are:

The implementation is based on the ArUco Library by R. Muñoz-Salinas and S. Garrido-Jurado [Aruco2014].

Markers can also be detected based on the AprilTag 2 [wang2016iros] fiducial detection method.

参照
S. Garrido-Jurado, R. Muñoz-Salinas, F. J. Madrid-Cuevas, and M. J. Marín-Jiménez. 2014. "Automatic generation and detection of highly reliable fiducial markers under occlusion". Pattern Recogn. 47, 6 (June 2014), 2280-2292. DOI=10.1016/j.patcog.2014.01.005
http://www.uco.es/investiga/grupos/ava/node/26

This module has been originally developed by Sergio Garrido-Jurado as a project for Google Summer of Code 2015 (GSoC 15).

列挙型詳解

CornerRefineMethod

列挙値
コーナー補正なし

ArUcoの手法に基づいたタグとコーナーの検出

コーナー_リファイン_サブピクス

ArUco社のアプローチに基づき、コーナーサブピクセルの精度でコーナー位置を精密化します。

コーナー_リファイン_コンター

ArUcoのアプローチに基づき、輪郭-ポイントのラインフィッティングを用いてコーナー位置を精密化する

コーナー_リファイン_アプリルタグ

AprilTag 2のアプローチに基づいたタグとコーナーの検出[wang2016iros]の場合

PREDEFINED_DICTIONARY_NAME

定義済みのマーカーの辞書/セット 各辞書はビット数と含まれるマーカーの数を示す

  • DICT_ARUCO_ORIGINAL:標準的なArUcoライブラリのマーカ。1024個のマーカ、5x5ビット、最小距離0
列挙値
DICT_APRILTAG_16h5

4x4ビット,任意の2つのコード間の最小ハミング距離=5,30コード

DICT_APRILTAG_25h9

5x5ビット、任意の2つのコード間の最小ハミング距離=9, 35コード

DICT_APRILTAG_36h10

6x6ビット、任意の2つのコード間の最小ハミング距離=10、2320コード

DICT_APRILTAG_36h11

6x6ビット、任意の2つのコード間の最小ハミング距離=11, 587コード

関数詳解

CV_EXPORTS_AS() [1/4]

cv::aruco::CV_EXPORTS_AS ( calibrateCameraArucoExtended )

arucoマーカを用いたカメラの較正

引数
corners 全フレームで検出されたマーカーコーナーのベクトル。コーナーは detectMarkers が返すフォーマットと同じでなければなりません(#detectMarkers 参照)。
ids コーナーにある各マーカーの識別子のリスト
counter コーナーとIDが分割できるように、各フレームのマーカーの数。
board マーカーBoardレイアウト
imageSize 固有のカメラ行列を初期化するためだけに使われる画像のサイズ.
cameraMatrix 3x3浮動小数点カメラ行列の出力$A = \vecthreethree{f_x}{0}{c_x}{0}{f_y}{c_y}{0}{0}{1}$. CV_CALIB_USE_INTRINSIC_GUESS および/または CV_CALIB_FIX_ASPECT_RATIO が指定されている場合,この関数を呼び出す前に fx, fy, cx, cy の一部または全部を初期化しなければいけません.
distCoeffs 歪み係数の出力ベクトル$(k_1, k_2, p_1, p_2[, k_3[, k_4, k_5, k_6],[s_1, s_2, s_3, s_4]])$4,5,8,または12個の要素を持つ
rvecs 各ボードビューに対して推定された回転ベクトル(Rodrigues参照)の出力ベクトル(例えば,std::vector<cv::Mat>>).つまり,各 k 番目の回転ベクトルは,対応する k 番目の並進ベクトル(次の出力パラメータの説明を参照)と共に,基板パターンをモデル座標空間(オブジェクトポイントが指定されている)からワールド座標空間に,つまり,k 番目のパターンビューにおける基板パターンの実位置(k=0.M-1).
tvecs パターンビューごとに推定された並進ベクトルの出力ベクトル.
stdDeviationsIntrinsics 固有パラメータについて推定された標準偏差の出力ベクトル.偏差値の順序。$(f_x, f_y, c_x, c_y, k_1, k_2, p_1, p_2, k_3, k_4, k_5, k_6 , s_1, s_2, s_3, s_4, \tau_x, \tau_y)$パラメータの1つが推定されない場合、その偏差はゼロとなる。
stdDeviationsExtrinsics 外部パラメータのために推定された標準偏差の出力ベクトル。偏差値の順序。$(R_1, T_1, \dotsc , R_M, T_M)$ここで、M はパターンビューの数です。$R_i, T_i$は、連結された 1x3 ベクトルである。
perViewErrors 各パターンビューに対して推定された平均再投影誤差の出力ベクトル。
flags flags キャリブレーション処理に関するさまざまなフラグ(詳細はcalibrateCameraを参照してください).
criteria 反復最適化アルゴリズムの終了基準.

この関数は,Arucoを用いてカメラのキャリブレーションを行います.Board. この関数は,カメラの複数のビューから検出されたマーカーのリストを受け取ります.Board. のチェスボードキャリブレーションに似た処理を行います.calibrateCamera(). この関数は,最終的な再投影誤差を返します.

CV_EXPORTS_AS() [2/4]

cv::aruco::CV_EXPORTS_AS ( calibrateCameraCharucoExtended )

Charucoコーナーを利用したカメラのキャリブレーション

引数
charucoCorners フレームごとに検出されたcharucoコーナーのベクトル
charucoIds フレーム毎のcharucoCornersにおける各コーナーの識別子のリスト
board マーカーBoardレイアウト
imageSize 入力画像サイズ
cameraMatrix 3x3浮動小数点カメラ行列の出力$A = \vecthreethree{f_x}{0}{c_x}{0}{f_y}{c_y}{0}{0}{1}$. CV_CALIB_USE_INTRINSIC_GUESS および/または CV_CALIB_FIX_ASPECT_RATIO が指定されている場合,この関数を呼び出す前に fx, fy, cx, cy の一部または全部を初期化しなければいけません.
distCoeffs 歪み係数の出力ベクトル$(k_1, k_2, p_1, p_2[, k_3[, k_4, k_5, k_6],[s_1, s_2, s_3, s_4]])$4,5,8,または12個の要素を持つ
rvecs 各ボードビューに対して推定された回転ベクトル(Rodrigues参照)の出力ベクトル(例えば,std::vector<cv::Mat>>).つまり,各 k 番目の回転ベクトルは,対応する k 番目の並進ベクトル(次の出力パラメータの説明を参照)と共に,基板パターンをモデル座標空間(オブジェクトポイントが指定されている)からワールド座標空間に,つまり,k 番目のパターンビューにおける基板パターンの実位置(k=0.M-1).
tvecs パターンビューごとに推定された並進ベクトルの出力ベクトル.
stdDeviationsIntrinsics 固有パラメータについて推定された標準偏差の出力ベクトル.偏差値の順序。$(f_x, f_y, c_x, c_y, k_1, k_2, p_1, p_2, k_3, k_4, k_5, k_6 , s_1, s_2, s_3, s_4, \tau_x, \tau_y)$パラメータの1つが推定されない場合、その偏差はゼロとなる。
stdDeviationsExtrinsics 外部パラメータのために推定された標準偏差の出力ベクトル。偏差値の順序。$(R_1, T_1, \dotsc , R_M, T_M)$ここで、M はパターンビューの数です。$R_i, T_i$は、連結された 1x3 ベクトルである。
perViewErrors 各パターンビューに対して推定された平均再投影誤差の出力ベクトル。
flags flags キャリブレーション処理に関するさまざまなフラグ(詳細はcalibrateCameraを参照してください).
criteria 反復最適化アルゴリズムの終了基準.

この関数は,charucoのコーナーセットを用いてカメラのキャリブレーションを行います.Board. この関数は,カメラの複数のビューから検出されたコーナーのリストとその識別子を受け取ります.Board. この関数は,最終的な再投影誤差を返します.

CV_EXPORTS_AS() [3/4]

cv::aruco::CV_EXPORTS_AS ( custom_dictionary )
参照
generateCustomDictionary

CV_EXPORTS_AS() [4/4]

cv::aruco::CV_EXPORTS_AS ( custom_dictionary_from )

カスタマイズ可能な新しいマーカー辞書を生成します.

引数
nMarkers 辞書に含まれるマーカの数
markerSize 各マーカの1次元あたりのビット数
baseDictionary この辞書に含まれるマーカを,最初に含める(オプション).
randomSeed のユーザ提供の種。theRNG()

この関数は,nMarkers 個のマーカと, markerSize x markerSize 個のビットで構成される各マーカで構成される新しい辞書を作成します。baseDictionary が提供されている場合は,そのマーカーが直接含まれ,それに基づいて残りのマーカーが生成されます.baseDictionary のサイズが nMarkers より大きい場合は、baseDictionary 内の最初の nMarkers のみが使用され、新しいマーカーは追加されません。

detectCharucoDiamond()

CV_EXPORTS_W void cv::aruco::detectCharucoDiamond ( InputArray image,
InputArrayOfArrays markerCorners,
InputArray markerIds,
float squareMarkerLengthRate,
OutputArrayOfArrays diamondCorners,
OutputArray diamondIds,
InputArray cameraMatrix = noArray(),
InputArray distCoeffs = noArray()
)

ChArUco Diamondマーカーの検出

引数
image コーナーサブピクセルに必要な入力画像
markerCorners detectMarkers関数で検出されたマーカーコーナーのリスト。
markerIds markerCorners内のマーカーIDのリスト
squareMarkerLengthRate 正方形の長さとマーカーの長さの比率: squareMarkerLengthRate = squareLength/markerLength. 実際の単位は必要ありません。
diamondCorners 検出されたダイヤモンドコーナーのリストを出力します(1つのダイヤモンドにつき4つのコーナー)。順番はマーカーのコーナーと同じで、左上、右上、右下、左下です。detectMarkers が返すコーナーリスト(std::vector<std::vector<cv::Point2f> > など)と同様のフォーマットです。
diamondIds diamondCornersには,ダイヤモンドのidが格納されています.各ダイヤモンドのidは,実際にはVec4i型なので,各ダイヤモンドは4つのidを持ち,それらはそのダイヤモンドを構成するarucoマーカーのidです.
cameraMatrix 任意のカメラキャリブレーションマトリックス。
distCoeffs カメラの歪み係数(オプション)。

この関数は,以前に検出されたアルコマーカからダイヤモンドマーカを検出します。ダイヤモンドは, diamondCorners と diamondIds パラメータで返されます。カメラキャリブレーションパラメータが提供されている場合、ダイヤモンドの探索は、再投影に基づいて行われます。提供されていない場合は、ホモグラフィーに基づいてダイヤモンドを探索します。ホモグラフィーはリプロジェクションよりも高速ですが、検出率が若干低下します。

detectMarkers()

CV_EXPORTS_W void cv::aruco::detectMarkers ( InputArray image,
const Ptr< Dictionary > & dictionary,
OutputArrayOfArrays corners,
OutputArray ids,
const Ptr< DetectorParameters > & parameters = DetectorParameters::create(),
OutputArrayOfArrays rejectedImgPoints = noArray(),
InputArray cameraMatrix = noArray(),
InputArray distCoeff = noArray()
)

基本マーカー検出

引数
image 入力画像
dictionary 検索対象となるマーカーの種類を示します。
corners 検出されたマーカーのコーナーのベクトル。各マーカーには、その4つのコーナーが提供されます(例:std::vector<std::vector<cv::Point2f> > )。N個のマーカーが検出された場合、この配列の次元はNx4となります。コーナーの順番は時計回りです。
ids 検出されたマーカの識別子のベクトルです。識別子はint型です(例:std::vector<int>)。検出されたマーカーがN個の場合、idのサイズもN個になります。識別子は、imgPoints配列のマーカーと同じ順番になります。
parameters マーカー検出パラメータ
rejectedImgPoints 内側のコードが正しくないマスのimgPointsを含みます。デバッグ用に便利です。
cameraMatrix オプションの入力 3x3 浮動小数点型カメラ行列$A = \vecthreethree{f_x}{0}{c_x}{0}{f_y}{c_y}{0}{0}{1}$
distCoeff オプションで,歪み係数のベクトル$(k_1, k_2, p_1, p_2[, k_3[, k_4, k_5, k_6],[s_1, s_2, s_3, s_4]])$4,5,8,または12個の要素を持つ

入力画像中のマーカー検出を行います.特定の辞書に含まれるマーカのみが検索されます.検出された各マーカーに対して,画像中のコーナーの2次元位置と,それに対応する識別子が返されます.なお,この関数は姿勢推定を行いません.

参照
estimatePoseSingleMarkers, estimatePoseBoard

drawAxis()

CV_EXPORTS_W void cv::aruco::drawAxis ( InputOutputArray image,
InputArray cameraMatrix,
InputArray distCoeffs,
InputArray rvec,
InputArray tvec,
float length
)

ポーズ推定による座標軸の描画

引数
image 入力/出力画像.1チャンネルまたは3チャンネルである必要があります。チャンネル数は変更されない。
cameraMatrix 入力 3x3浮動小数点カメラ行列$A = \vecthreethree{f_x}{0}{c_x}{0}{f_y}{c_y}{0}{0}{1}$
distCoeffs 歪み係数のベクトル$(k_1, k_2, p_1, p_2[, k_3[, k_4, k_5, k_6],[s_1, s_2, s_3, s_4]])$4,5,8,または12個の要素を持つ
rvec 描画される座標系の回転ベクトル。(
参照
Rodrigues).
引数
tvec 描画される座標系の並進ベクトル。
length tvecと同じ単位で描かれた軸の長さ(通常はメートル単位)

マーカーやボードの姿勢推定値が与えられたときに、ワールド座標系、つまりマーカーやボードを中心とした座標系の軸を描画する関数です。デバッグ用に便利です。

非推奨:
使用cv::drawFrameAxes

drawCharucoDiamond()

CV_EXPORTS void cv::aruco::drawCharucoDiamond ( const Ptr< Dictionary > & dictionary,
Vec4i ids,
int squareLength,
int markerLength,
OutputArray img,
int marginSize = 0,
int borderBits = 1
)

ChArUcoダイヤモンドマーカーの描画

引数
dictionary マーカーの種類を示すマーカーの辞書。
ids ChArUcoマーカーの各ArUcoマーカーの4つのidのリスト。
squareLength チェスボードのマスの大きさ(単位:ピクセル
markerLength マーカーのサイズ(ピクセル)
img マーカーを使った出力画像。この画像のサイズは、3*squareLength + 2*marginSize,.
marginSize 出力画像内のマーカーの最小余白(ピクセル単位)。
borderBits マーカーの境界線の幅

この関数は、印刷可能なChArUcoマーカーの画像を返します。

drawDetectedCornersCharuco()

CV_EXPORTS_W void cv::aruco::drawDetectedCornersCharuco ( InputOutputArray image,
InputArray charucoCorners,
InputArray charucoIds = noArray(),
Scalar cornerColor = Scalar(255, 0, 0)
)

チャルーココーナーの描画

引数
image 入力/出力画像.1チャンネルまたは3チャンネルである必要があります。チャンネル数は変更されない。
charucoCorners 検出されたチャルーココーナーのベクトル
charucoIds charucoCornersの各コーナーの識別子のリスト
cornerColor 各コーナーを囲む正方形の色

この関数は、検出されたCharucoコーナーのセットを描画します。identifiers vectorが指定された場合は、各コーナーのidも描画します。

drawDetectedDiamonds()

CV_EXPORTS_W void cv::aruco::drawDetectedDiamonds ( InputOutputArray image,
InputArrayOfArrays diamondCorners,
InputArray diamondIds = noArray(),
Scalar borderColor = Scalar(0, 0, 255)
)

検出されたChArUcoダイヤモンドマーカーのセットを描画します。

引数
image 入力/出力画像.1チャンネルまたは3チャンネルである必要があります。チャンネル数は変更されない。
diamondCorners で返されるのと同じフォーマットで、ダイヤモンドコーナーの位置を示します。detectCharucoDiamond(). (例: std::vector<std::vector<cv::Point2f> > ). N個のマーカを検出した場合,この配列の次元はNx4になります.コーナーの順番は時計回りにします。
diamondIds diamondCornersに含まれるダイヤモンドの識別子のベクトルで、以下で返されるのと同じ形式です。detectCharucoDiamond()(例:std::vector<Vec4i>). オプションで、提供されない場合は、IDは描かれません。
borderColor マーカーの境界線の色を指定します。残りの色(テキストの色と最初のコーナーの色)は、この色に基づいて計算されます。

検出されたダイヤモンドの配列が与えられると,この関数はそれらを画像上に描画します.マーカーの境界線が描画され、マーカーの識別子が与えられていればそれも描画されます。デバッグ用に便利です。

drawDetectedMarkers()

CV_EXPORTS_W void cv::aruco::drawDetectedMarkers ( InputOutputArray image,
InputArrayOfArrays corners,
InputArray ids = noArray(),
Scalar borderColor = Scalar(0, 255, 0)
)

検出されたマーカを画像に描画します.

引数
image 入力/出力画像.1チャンネルまたは3チャンネルである必要があります。チャンネル数は変更されない。
corners 入力画像上のマーカーの角の位置を指定します.(例: std::vector<std::vector<cv::Point2f> > ). 検出されたマーカーが N 個の場合,この配列の次元は Nx4 となります.コーナーの順番は時計回りにします。
ids markersCorners内のマーカーの識別子のベクトルです.オプションで,提供されない場合は,IDは描かれません.
borderColor マーカーの境界線の色.残りの色 (テキストの色と最初のコーナーの色) は,視覚化を向上させるために,この色に基づいて計算されます.

検出されたマーカコーナーの配列と,それに対応する ID が与えられると,この関数は画像上にマーカを描画します.マーカーの境界が描画され,マーカーの識別子が与えられていればそれも描画されます.デバッグ用に便利です。

drawMarker()

CV_EXPORTS_W void cv::aruco::drawMarker ( const Ptr< Dictionary > & dictionary,
int id,
int sidePixels,
OutputArray img,
int borderBits = 1
)

正準化されたマーカー画像を描画する

引数
dictionary マーカの種類を示すマーカの辞書
id 返されるマーカーの識別子。指定された辞書に登録されている有効なidでなければいけません。
sidePixels 画像の大きさ(ピクセル単位
img マーカーが描かれた出力画像
borderBits マーカーの境界線の幅を指定します。

この関数は、マーカー画像を標準的な形(つまり、すぐに印刷できる状態)で返します。

drawPlanarBoard()

CV_EXPORTS_W void cv::aruco::drawPlanarBoard ( const Ptr< Board > & board,
Size outSize,
OutputArray img,
int marginSize = 0,
int borderBits = 1
)

平面状のボードを描画する

参照
_drawPlanarBoardImpl
引数
board 描画される碁盤のレイアウトを指定します。盤面は平面でなければならず,z座標は無視されます.
outSize は,出力画像のサイズをピクセル単位で表します.
img の出力画像にボードが表示されます.この画像のサイズはoutSizeとなり、碁盤のプロポーションを保ったまま中央に碁盤が配置されます。
marginSize 出力画像内のボードの最小余白(ピクセル単位
borderBits マーカーの境界線の幅

この関数は、印刷可能な状態の平面ボードのイメージを返します。これは、指定されたレイアウトが平面であることをBoard指定されたレイアウトが平面であると仮定して,オブジェクトポイントのz座標を無視します.

estimatePoseBoard()

CV_EXPORTS_W int cv::aruco::estimatePoseBoard ( InputArrayOfArrays corners,
InputArray ids,
const Ptr< Board > & board,
InputArray cameraMatrix,
InputArray distCoeffs,
InputOutputArray rvec,
InputOutputArray tvec,
bool useExtrinsicGuess = false
)

マーカーを配置したボードの姿勢推定

引数
corners 既に検出されたマーカーのコーナーのベクトル.各マーカーには、その4つのコーナーが提供されます(例:std::vector<std::vector<cv::Point2f> >)。N個のマーカーを検出した場合、この配列の次元はNx4になります。角の順番は時計回りでなければなりません。
ids コーナーにある各マーカーの識別子のリスト
board ボード上のマーカーのレイアウト。レイアウトは、マーカーの識別子と、ボードのリファレンスシステムにおける各マーカーのコーナーの位置によって構成されます。
cameraMatrix 入力 3x3浮動小数点カメラ行列$A = \vecthreethree{f_x}{0}{c_x}{0}{f_y}{c_y}{0}{0}{1}$
distCoeffs 歪み係数のベクトル$(k_1, k_2, p_1, p_2[, k_3[, k_4, k_5, k_6],[s_1, s_2, s_3, s_4]])$4,5,8,または12個の要素を持つ
rvec 出力ベクトル(例cv::Mat)は、碁盤の回転ベクトルに対応しています(参照cv::Rodrigues). 空でなければ初期推測として使用されます。
tvec 出力ベクトル(例cv::Mat)は、ボードの並進ベクトルに対応します。
useExtrinsicGuess の初期推測が空であるかどうかを定義します.rvecおよびtvecの初期推測が使われるかどうかを定義します。空でなければ初期推定値として使われます。

この関数は、検出されたマーカーを受け取り、それらのマーカーで構成されるマーカーボードのポーズを返します。ABoardのマーカーは,ボードのレイアウトによって定義される単一のワールド座標系を持ちます.返される変換は,ボードの座標系からカメラの座標系に点を変換するものです.ボードレイアウトに含まれていない入力マーカーは無視されます。この関数は,ボードの姿勢推定に採用された入力から,マーカーの数を返します.なお、0を返した場合は、ポーズが推定されていないことを意味します。

estimatePoseCharucoBoard()

CV_EXPORTS_W bool cv::aruco::estimatePoseCharucoBoard ( InputArray charucoCorners,
InputArray charucoIds,
const Ptr< CharucoBoard > & board,
InputArray cameraMatrix,
InputArray distCoeffs,
InputOutputArray rvec,
InputOutputArray tvec,
bool useExtrinsicGuess = false
)

ChArUcoボードのコーナーの一部を用いたポーズ推定

引数
charucoCorners 検出されたチャルーココーナーのベクトル
charucoIds charucoCornersの各コーナーの識別子のリスト
board ChArUcoボードのレイアウト。
cameraMatrix 入力 3x3浮動小数点カメラ行列$A = \vecthreethree{f_x}{0}{c_x}{0}{f_y}{c_y}{0}{0}{1}$
distCoeffs 歪み係数のベクトル$(k_1, k_2, p_1, p_2[, k_3[, k_4, k_5, k_6],[s_1, s_2, s_3, s_4]])$4,5,8,または12個の要素を持つ
rvec 出力ベクトル(例cv::Mat)は、碁盤の回転ベクトルに対応しています(参照cv::Rodrigues).
tvec 出力ベクトル(例cv::Mat)は、ボードの並進ベクトルに対応します。
useExtrinsicGuess の初期推測が空であるかどうかを定義します.rvecおよびtvecを使用するかどうかを決定します。

この関数は、検出されたいくつかのコーナーからCharucoボードのポーズを推定します。この関数は,入力されたコーナーが,ポーズ推定を行うのに十分かつ有効であるかどうかをチェックします.ポーズ推定が有効であればtrueを返し、そうでなければfalseを返します。

estimatePoseSingleMarkers()

CV_EXPORTS_W void cv::aruco::estimatePoseSingleMarkers ( InputArrayOfArrays corners,
float markerLength,
InputArray cameraMatrix,
InputArray distCoeffs,
OutputArray rvecs,
OutputArray tvecs,
OutputArray _objPoints = noArray()
)

単一のマーカーに対するポーズ推定

引数
corners 既に検出されたマーカーのコーナーのベクトル.各マーカーには、その4つのコーナーが提供されます(例:std::vector<std::vector<cv::Point2f> >)。N個のマーカーを検出した場合、この配列の次元はNx4になります。角の順番は時計回りでなければなりません。
参照
マーカの検出
引数
markerLength マーカーの辺の長さを指定します.戻ってくる並進ベクトルは同じ単位になります。通常,単位はメートルです。
cameraMatrix 入力 3x3浮動小数点カメラ行列$A = \vecthreethree{f_x}{0}{c_x}{0}{f_y}{c_y}{0}{0}{1}$
distCoeffs 歪み係数のベクトル$(k_1, k_2, p_1, p_2[, k_3[, k_4, k_5, k_6],[s_1, s_2, s_3, s_4]])$4,5,8,または12個の要素を持つ
rvecs 出力される回転ベクトルの配列(
参照
Rodrigues) (例:std::vector<cv::Vec3d>)を出力します。rvecs の各要素は imgPoints の特定のマーカーに対応します.
引数
tvecs 出力並進ベクトルの配列 (例: std::vector<cv::Vec3d>). tvecsの各要素は,imgPointsの特定のマーカーに対応します.
_objPoints 全てのマーカーの角のオブジェクトポイントの配列

この関数は,検出されたマーカーを受け取り,そのカメラに対する姿勢推定値を個別に返します.つまり,各マーカに対して,1つの回転ベクトルと並進ベクトルが返されます.返される変換は,各マーカの座標系からカメラの座標系に点を変換するものです.マーカー座標系は、マーカーの中央を中心とし、Z軸はマーカー平面に垂直です。マーカーの四隅の座標を独自の座標系で表すと (-markerLength/2, markerLength/2, 0)、(markerLength/2, markerLength/2, 0)、(markerLength/2, -markerLength/2, 0)、(-markerLength/2, -markerLength/2, 0)

getBoardObjectAndImagePoints()

CV_EXPORTS_W void cv::aruco::getBoardObjectAndImagePoints ( const Ptr< Board > & board,
InputArrayOfArrays detectedCorners,
InputArray detectedIds,
OutputArray objPoints,
OutputArray imgPoints
)

ボード構成と検出されたマーカーのセットが与えられると、solvePnPを呼び出すために、対応する画像ポイントとオブジェクトポイントを返します

引数
board マーカーボードのレイアウト。
detectedCorners ボードの検出されたマーカーコーナーのリスト
detectedIds 各マーカーの識別子のリスト
objPoints 碁盤座標空間における碁盤マーカー点のベクター
imgPoints 碁盤のマーカーコーナー点の投影像のベクトル

interpolateCornersCharuco()

CV_EXPORTS_W int cv::aruco::interpolateCornersCharuco ( InputArrayOfArrays markerCorners,
InputArray markerIds,
InputArray image,
const Ptr< CharucoBoard > & board,
OutputArray charucoCorners,
OutputArray charucoIds,
InputArray cameraMatrix = noArray(),
InputArray distCoeffs = noArray(),
int minMarkers = 2
)

ChArUcoボードのコーナー位置の補間

引数
markerCorners 既に検出されたマーカーのコーナーのベクトル.各マーカーには、その4つのコーナーが提供されます(例:std::vector<std::vector<cv::Point2f> >)。N個のマーカーを検出した場合、この配列の次元はNx4になります。角の順番は時計回りでなければなりません。
markerIds コーナーにある各マーカーの識別子のリスト
image コーナーの精密化に必要な入力画像。なお、マーカーは検出されませんので、 corners および ids パラメータで指定してください。
board ChArUcoボードのレイアウト。
charucoCorners 補間されたチェスボードの角
charucoIds 補間されたチェスボードのコーナーの識別子
cameraMatrix 3x3浮動小数点型カメラ行列(オプション$A = \vecthreethree{f_x}{0}{c_x}{0}{f_y}{c_y}{0}{0}{1}$
distCoeffs オプションで,歪み係数のベクトル$(k_1, k_2, p_1, p_2[, k_3[, k_4, k_5, k_6],[s_1, s_2, s_3, s_4]])$4,5,8,または12個の要素を持つ
minMarkers charucoコーナーを返すために検出されなければならない,隣接するマーカーの数

この関数は、検出されたマーカーを受け取り、検出されたArucoマーカーを使って、ChArUcoボードからチェスボードコーナーの2D位置を返します。カメラパラメータが与えられている場合は,近似的な姿勢推定に基づいて処理が行われ,そうでない場合は,局所的なホモグラフィに基づいて処理が行われます.見えているコーナーのみが返されます。また,各コーナーに対応する識別子が charucoIds で返されます.この関数は,補間されたコーナーの数を返します.

refineDetectedMarkers()

CV_EXPORTS_W void cv::aruco::refineDetectedMarkers ( InputArray image,
const Ptr< Board > & board,
InputOutputArrayOfArrays detectedCorners,
InputOutputArray detectedIds,
InputOutputArrayOfArrays rejectedCorners,
InputArray cameraMatrix = noArray(),
InputArray distCoeffs = noArray(),
float minRepDistance = 10.f,
float errorCorrectionRate = 3.f,
bool checkAllOrders = true,
OutputArray recoveredIdxs = noArray(),
const Ptr< DetectorParameters > & parameters = DetectorParameters::create()
)

既に検出されたマーカーとボードのレイアウトに基づいて,検出されなかったマーカーを再検出します.

引数
image 入力画像
board ボード内のマーカーのレイアウト。
detectedCorners 既に検出されたマーカーのコーナーのベクトル。
detectedIds 既に検出されたマーカーの識別子のベクトル
rejectedCorners マーカー検出処理中に拒否された候補のベクトル。
cameraMatrix オプションの入力 3x3 浮動小数点型カメラ行列$A = \vecthreethree{f_x}{0}{c_x}{0}{f_y}{c_y}{0}{0}{1}$
distCoeffs オプションで,歪み係数のベクトル$(k_1, k_2, p_1, p_2[, k_3[, k_4, k_5, k_6],[s_1, s_2, s_3, s_4]])$4,5,8,または12個の要素を持つ
minRepDistance 棄却された候補の角と再投影されたマーカの角の間の、対応関係とみなすための最小距離。
errorCorrectionRate 使用される辞書の誤り訂正能力に対する、許容される誤りビットの割合。-1は,誤り訂正のステップを無視している.
checkAllOrders rejectedCorners配列では,4つの可能なコーナーオーダーを考慮します.falseに設定すると、指定されたコーナーオーダーのみを考慮します(デフォルトはtrue)。
recoveredIdxs オプションの配列で,元の rejectedCorners 配列に含まれる,復元された候補のインデックスを返します.
parameters マーカー検出パラメータ

この関数は、基本的な detecMarkers 関数で検出されなかったマーカーの検出を試みます。まず,現在検出されているマーカーとボードのレイアウトに基づいて,見つからないマーカーの位置を補間します.そして,minRepDistance と errorCorrectionRate パラメータに基づいて,再投影されたマーカと不合格になった候補との間の対応関係を見つけようとします.カメラパラメータと歪み係数が提供されている場合は、projectPoint関数を用いて欠損マーカーを再投影します。提供されていない場合,欠損マーカーの投影はグローバルホモグラフィーを用いて補間され,ボード内のすべてのマーカーコーナーは同じZ座標を持つ必要があります。

testCharucoCornersCollinear()

CV_EXPORTS_W bool cv::aruco::testCharucoCornersCollinear ( const Ptr< CharucoBoard > & _board,
InputArray _charucoIds
)

ChArUcoマーカーが平行であるかどうかのテスト

引数
_board ChArUcoボードのレイアウト。
_charucoIds フレームごとの charucoCorners の各コーナーの識別子のリストです。
戻り値
bool value, 検出されたコーナーが直線を形成している場合は 1 (true), そうでない場合は 0 (false). コーナーが共線型である (true) 場合、solvePnP, calibration 関数は失敗します。

charucoIDsのidの数は,ボードに含まれるチェスボードのコーナーの数よりも少なくなければなりません.この関数は、charucoのコーナーが直線上にあるかどうかをチェックし(あればtrueを返す)、そうでなければ(false)を返します。軸の平行はもちろん、対角線やその他の直線も検出されます。退化したケース:charucoIDの数が2以下の場合、この関数はtrueを返します。