objectDetection
単一オブジェクトの検出のレポート
説明
objectDetection
オブジェクトには、単一のオブジェクトについてセンサーによって取得されたオブジェクト検出レポートが含まれます。multiObjectTracker
などのトラッカーへの入力として objectDetection
の出力を使用できます。
作成
説明
は、指定した detection
= objectDetection(time
,measurement
)measurement
の指定した time
にオブジェクト detection
を作成します。
ヒント
空の objectDetection
オブジェクトを作成するには、objectDetection.empty()
を使用します。
は、1 つ以上の detection
= objectDetection(___,Name,Value
)Name,Value
ペア引数として指定されたプロパティを使用して detection
オブジェクトを作成します。指定されていないプロパティはすべて既定値になります。Name,Value
ペアを使用して Time
プロパティと Measurement
プロパティを指定することはできません。
入力引数
time
— 検出時間
非負の実数スカラー
検出時間。非負の実数スカラーとして指定します。この引数は Time
プロパティを設定します。
measurement
— オブジェクト測定
実数値 N 要素ベクトル
オブジェクト測定。実数値 N 要素ベクトルとして指定します。ここで、N は測定ベクトルの次元です。この引数は Measurement
プロパティを設定します。
カスタムのフィルター初期化関数で objectDetection
を使用する場合、フィルター定義を満たしている限り、測定を任意の形式で定義できます。
initcvekf
などの組み込みのフィルター初期化関数で objectDetection
を使用する場合、測定の定義は次のルールに従います。
直交座標系での完全な 3 次元位置測定では、一般的な形式は [
x y z
] です。速度測定を [x y z vx vy vz
] として含める場合は、MeasurementParameters
プロパティのHasVelocity
フィールドをtrue
として指定する必要があります。メモ
initcvkf
などの一部のフィルター初期化関数では、x
の形式の 1 次元測定または [x y
] の形式の 2 次元測定を受け入れることができます。球面座標系での測定を指定するには、
MeasurementParameters
プロパティのFrame
フィールドが"Spherical"
でなければなりません。完全な 3 次元球面測定では、一般的な形式は [[azimuth elevation range rangeRate]
] です。このような 3 次元球面測定をフィルターによって解釈するには、MeasurementParameters
プロパティのHasAzimuth
、HasElevation
、HasRange
、およびHasVelocity
の各フィールドをすべてtrue
として指定します。完全な 3 次元球面測定から
azimuth
を削除するには、HasAzimuth
をfalse
に設定します。完全な 3 次元球面測定から
elevation
を削除するには、HasElevation
をfalse
に設定します。完全な 3 次元球面測定から
range
を削除するには、HasRange
をfalse
に設定します。完全な 3 次元球面測定から
rangeRate
を削除するには、HasVelocity
をfalse
に設定します。
詳細については、Convert Detections to objectDetection FormatおよびobjectDetection を使用した追跡フィルターの初期化の例を参照してください。
出力引数
detection
— 検出レポート
objectDetection
オブジェクト
単一のオブジェクトの検出レポート。objectDetection
オブジェクトとして返されます。objectDetection
オブジェクトには次のプロパティが含まれます。
プロパティ | 定義 |
---|---|
Time | 測定時間 |
Measurement | オブジェクト測定 |
MeasurementNoise | 測定ノイズ共分散行列 |
SensorIndex | センサーの一意の ID |
ObjectClassID | オブジェクト分類 |
MeasurementParameters | 非線形カルマン追跡フィルターの初期化関数で使用されるパラメーター |
ObjectAttributes | トラッカーに渡される追加情報 |
プロパティ
Time
— 検出時間
非負の実数スカラー
検出時間。非負の実数スカラーとして指定します。このプロパティを名前と値のペアとして設定することはできません。代わりに time
入力引数を使用してください。
例: 5.0
データ型: double
Measurement
— オブジェクト測定
実数値 N 要素ベクトル
オブジェクト測定。実数値 N 要素ベクトルとして指定します。このプロパティを名前と値のペアとして設定することはできません。代わりに measurement
入力引数を使用してください。
例: [1.0;-3.4]
データ型: double
| single
MeasurementNoise
— 測定ノイズ共分散
スカラー | 実数の半正定値の N 行 N 列の対称行列
測定ノイズ共分散。スカラーまたは実数の半正定値の N 行 N 列の対称行列として指定します。N は測定ベクトルの要素数です。スカラーの場合、行列は、測定と同じデータ解釈をもつ N 行 N 列の正方対角行列になります。
例: [5.0,1.0;1.0,10.0]
データ型: double
| single
SensorIndex
— センサー識別子
1
| 正の整数
センサー識別子。正の整数として指定します。センサー識別子により、各種センサーを識別できます。この識別子はセンサーに対して一意でなければなりません。
例: 5
データ型: double
ObjectClassID
— オブジェクト クラス識別子
0
(既定値) | 非負の整数
オブジェクト クラス識別子。非負の整数として指定します。このプロパティを使用して、異なる種類のオブジェクトから生成される検出値を区別します。たとえば、タイプが "car" のオブジェクトに 1、タイプが "pedestrian" のオブジェクトに 2 を使用します。値 0
は、オブジェクトの型が不明であることを示します。
このプロパティを非ゼロの整数に指定した場合、ObjectClassParameters
プロパティを使用して検出分類器の統計を指定できます。
例: 1
データ型: double
ObjectClassParameters
— 検出分類器のパラメーター
[]
(既定値) | 構造体
検出分類器のパラメーター。構造体として指定します。構造体には任意のフィールドを含めることができます。trackerGNN
(Sensor Fusion and Tracking Toolbox) System object などのマルチオブジェクト トラッカーによる分類器の融合については、ConfusionMatrix
フィールドを次のように指定できます。
フィールド名 | 説明 |
---|---|
ConfusionMatrix | 検出分類器の混同行列。N 行 N 列の実数値行列として指定します。ここで、N は可能なオブジェクト クラスの数です。行列の (i,j) 要素は、真の検出クラスがクラス i の場合に、分類器が検出値をクラス j と分類する重みまたは確率を表します。 たとえば、分類器が 2 つのクラスを出力し、その際に 95% は正しく分類される場合、この行列を |
データ型: struct
MeasurementParameters
— 測定関数パラメーター
{}
(既定値) | 構造体配列 | 構造体配列が含まれている cell | cell 配列
フィルター状態から測定に変換する測定関数パラメーター。構造体配列、構造体配列が含まれた cell、または cell 配列として指定します。
カスタムの測定関数を追跡フィルターで使用する場合、カスタムの測定関数の定義を満たしている限り、測定を任意の形式で定義できます。
cvmeas
や ctmeas
などの組み込みの測定関数を追跡フィルターで使用する場合、次のフィールドをもつ構造体を使用して、直交座標系または球面座標系での測定を定義できます。
フィールド | 説明 | 例 |
---|---|---|
Frame | 測定のレポートに使用される座標系。以下のいずれかの値として指定します。
ヒント Simulink では文字ベクトルなどの可変サイズ変数をサポートしていないため、オブジェクト検出バスを作成するときは、 | 'spherical' |
OriginPosition | 親座標系を基準とした座標系の原点の位置オフセット。[x y z] 実数値ベクトルとして指定します。 | [0 0 0] |
OriginVelocity | 親座標系を基準とした座標系の原点の速度オフセット。[vx vy vz] 実数値ベクトルとして指定します。 | [0 0 0] |
Orientation | 座標系回転行列。3 行 3 列の実数値正規直交行列として指定します。 | [1 0 0; 0 1 0; 0 0 1] |
HasAzimuth | 方位角を測定に含めるかどうかを示す logical スカラー。 このフィールドは、 | 1 |
HasElevation | 仰角情報を測定に含めるかどうかを示す logical スカラー。直交座標系でレポートされる測定では、HasElevation が false の場合、レポートされる測定では仰角が 0 度と見なされます。 | 1 |
HasRange | 範囲を測定に含めるかどうかを示す logical スカラー。 このフィールドは、 | 1 |
HasVelocity | レポートされる検出に速度測定を含めるかどうかを示す logical スカラー。直交座標系でレポートされる測定では、HasVelocity が false の場合、測定は [x y z] としてレポートされます。HasVelocity が true の場合、測定は [x y z vx vy vz] としてレポートされます。球面座標系でレポートされる測定では、HasVelocity が true の場合、測定には範囲率情報が含まれます。 | 1 |
IsParentToChild | Orientation で親座標系から子座標系への座標系の回転を実行するかどうかを示す logical スカラー。IsParentToChild が false の場合、Orientation は子座標系から親座標系への座標系の回転を実行します。 | 0 |
MeasurementParameters
の使用の詳細については、次の例を参照してください。
追跡フィルターの初期化に関するobjectDetection を使用した追跡フィルターの初期化。
objectDetection
オブジェクトの定義に関するConvert Detections to objectDetection Format。特に、測定パラメーターの構造体の配列を使用する、複数の座標変換の場合。
ObjectAttributes
— オブジェクト属性
{}
(既定値) | cell 配列 | 構造体配列
トラッカーを介して渡すオブジェクト属性。cell 配列または構造体配列として指定します。これらの属性は、multiObjectTracker
の出力に追加されますが、トラッカーでは使用されません。
例: {[10,20,50,100],'radar1'}
例: struct('myProperty',2)
例
位置測定からの検出の作成
位置測定から検出を作成します。直交座標の [100;250;10]
の位置測定から 1 秒のタイムスタンプにおいて検出を行います。
detection = objectDetection(1,[100;250;10])
detection = objectDetection with properties: Time: 1 Measurement: [3x1 double] MeasurementNoise: [3x3 double] SensorIndex: 1 ObjectClassID: 0 ObjectClassParameters: [] MeasurementParameters: {} ObjectAttributes: {}
測定ノイズを使用した検出の作成
特定の時間および位置測定から objectDetection
を作成します。[100;250;10]
のオブジェクト位置測定について 1 秒の時間において検出を行います。測定ノイズを追加し、名前と値のペアを使用してその他のプロパティを設定します。
detection = objectDetection(1,[100;250;10],'MeasurementNoise',10, ... 'SensorIndex',1,'ObjectAttributes',{'Example object',5})
detection = objectDetection with properties: Time: 1 Measurement: [3x1 double] MeasurementNoise: [3x3 double] SensorIndex: 1 ObjectClassID: 0 ObjectClassParameters: [] MeasurementParameters: {} ObjectAttributes: {'Example object' [5]}
objectDetection
を使用した追跡フィルターの初期化
objectDetection
オブジェクトを使用して追跡フィルターを初期化できます。
直行の検出による等速 trackingKF
の初期化
等速モデルをもつ trackingKF
オブジェクトを初期化するには、関数 initcvkf
を使用します。
2 次元オブジェクトの検出を作成し、この検出を使用して trackingKF
オブジェクトを初期化します。
detection = objectDetection(0,[1 2]); filter = initcvkf(detection); filter.State'
ans = 1×4
1 0 2 0
結果では、関数 initcvkf
はシステムの次元を認識し、速度の状態 vx
および vy
を 0
に設定して、状態が [x vx y vy
] の 2 次元フィルターを初期化しています。
3 次元オブジェクトの検出を使用して、3 次元 trackingKF
オブジェクトを初期化することもできます。
detection = objectDetection(0,[1 2 3]); filter = initcvkf(detection); filter.State'
ans = 1×6
1 0 2 0 3 0
結果では、関数 initcvkf
は状態が [x vx y vy z vz
] の 3 次元フィルターを初期化しています。
直行の検出による等速 trackingEKF
の初期化
等速モデルをもつ trackingEKF
オブジェクトを初期化するには、関数 initcvekf
を使用します。関数 initcvekf
では、検出が 3 次元である必要があり、常に 3 次元 trackingEKF
オブジェクトを初期化します。
3 次元オブジェクトの検出を作成し、この検出を使用して trackingEKF
オブジェクトを初期化します。
detection = objectDetection(0,[1 2 3]);
filter = initcvekf(detection);
filter.State' % [x vx y vy z vz]
ans = 1×6
1 0 2 0 3 0
結果では、関数は速度が指定されていない場合にゼロを想定しています。速度情報を検出の測定に含めることもできます。HasVelocity
フィールドを true
に設定することで、測定パラメーターを使用して関数 initcvekf
に速度状態を認識させます。
mp = struct(Frame="Rectangular", ... OriginPosition = zeros(1,3), ... OriginVelocity = zeros(1,3), ... Orientation = eye(3),... HasVelocity = true,... IsParentToChild = true); detection = objectDetection(0,[1 2 3 0.1 0.2 0.3], ... MeasurementParameters=mp); filter = initcvekf(detection); filter.State' % [x vx y vy z vz]
ans = 1×6
1.0000 0.1000 2.0000 0.2000 3.0000 0.3000
結果では、関数は速度を正常に初期化しています。
球面の検出による等速 trackingEKF
の初期化
球面の検出を使用して trackingEKF
オブジェクトを初期化することもできます。まず、45 度の方位角、60 度の仰角、および 2 メートルの範囲で、球面の検出を作成します。測定の形式を表すように、その測定パラメーターを指定します。
mp = struct(Frame="Spherical", ... OriginPosition = zeros(1,3), ... OriginVelocity = zeros(1,3), ... Orientation = eye(3),... HasAzimuth = true,... HasElevation = true,... HasRange = true,... HasVelocity = false,... IsParentToChild = true); detection = objectDetection(0,[45 60 2], ... MeasurementParameters=mp); filter = initcvekf(detection); filter.State' % [x vx y vy z vz]
ans = 1×6
0.7071 0 0.7071 0 1.7321 0
結果では、フィルターの状態は予想どおりであり、位置座標は [ ] となっています。
測定パラメーターの HasVelocity
フィールドを true
に設定することで、範囲率の測定を有効にすることもできます。その後、検出の範囲率を 0.2 メートル/秒に設定します。
mp = struct(Frame="Spherical", ... OriginPosition = zeros(1,3), ... OriginVelocity = zeros(1,3), ... Orientation = eye(3),... HasAzimuth = true,... HasElevation = true,... HasRange = true,... HasVelocity = true,... IsParentToChild = true); detection = objectDetection(0,[45 60 2 0.2], ... MeasurementParameters=mp); filter = initcvekf(detection); filter.State' % [x vx y vy z vz]
ans = 1×6
0.7071 0.0707 0.7071 0.0707 1.7321 0.1732
結果では、関数は予想された速度でフィルターを初期化しています。
拡張機能
C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。
objectDetection
オブジェクトをトラッカーに渡す場合、ObjectAttributes
プロパティはスカラー構造体またはスカラー構造体を含む cell として指定しなければなりません。
バージョン履歴
R2017a で導入R2022b: クラスの混同行列の指定
新しい ObjectClassParameters
プロパティを使用して、検出分類器の統計を混同行列の形式で指定できます。
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)