Main Content

vision.BlockMatcher

イメージ間またはビデオ フレーム間の動きの推定

説明

イメージ間またはビデオ フレーム間の動きを推定します。

  1. vision.BlockMatcherオブジェクトを作成し、そのプロパティを設定します。

  2. 関数と同様に、引数を指定してオブジェクトを呼び出します。

系统对象の機能の詳細については,System object とはを参照してください。

作成

説明

blkMatcher= vision.BlockMatcherは、2 つのイメージ間または 2 つのビデオ フレーム間の動きを推定するオブジェクトblkMatcherを返します。このオブジェクトは、探索領域上でピクセルのブロックを動かし、ブロック マッチング法を使用してこの推定を実行します。

blkMatcher= vision.BlockMatcher(Name,Value)は、名前と値のペアを 1 つ以上使用してプロパティを設定します。各プロパティ名を引用符で囲みます。たとえば、blkMatcher = vision.BlockMatcher('ReferenceFrameSource','Input port')です。

プロパティ

すべて展開する

特に指定がない限り、プロパティは "調整不可能"です。つまり、オブジェクトの呼び出し後に値を変更することはできません。オブジェクトは呼び出すとロックされ、ロックを解除するには関数releaseを使用します。

プロパティが "調整可能"の場合、その値をいつでも変更できます。

プロパティ値の変更の詳細については、System object を使用した MATLAB でのシステム設計を参照してください。

基準フレームのソース。'Input port'または'Property'として指定します。ReferenceFrameSourceプロパティを'Input port'に設定した場合,基準フレームの入力はブロックマッチング オブジェクトのstepメソッドに指定しなければなりません。

基準フレームと現在のフレームの間のフレーム数。0 以上のスカラー整数として指定します。このプロパティは、ReferenceFrameSourceプロパティを'Property'に設定した場合に適用されます。

最適一致検索法。'Exhaustive'または'Three-step'として指定します。フレーム k 内のピクセルのブロックに最もよく一致するフレーム k+1 内のピクセルのブロックを特定する方法を指定します。このプロパティを'Exhaustive'に設定した場合、ブロック マッチング オブジェクトはフレーム k+1 内のピクセルのブロックの位置を選択します。これは探索領域上でブロックを 1 ピクセルずつ動かすことで行われるため、計算量が増大します。

このプロパティを'Three-step'に設定した場合、ブロック マッチング オブジェクトは徐々に減少するステップ サイズを使用して、フレーム k 内のピクセルのブロックに最もよく一致するフレーム k+1 内のピクセルのブロックを検索します。まず、最大探索範囲の半分とほぼ等しいステップ サイズから始めます。各ステップで、探索領域の中心点と領域の境界にある 8 つの探索点を比較し、中心点の値に最も近い値をもつ探索点に中心点を移動します。次に、ステップ サイズを半分に減らしてプロセスを再開します。このオプションでは計算量が少なくなりますが、最適な解を求められない場合があります。

ブロックのサイズ。ピクセル単位で 2 要素ベクトルとして指定します。

最大変位検索。2 要素ベクトルとして指定します。ピクセルのブロック内の中心ピクセルがイメージ間またはフレーム間で移動できる最大ピクセル数を指定します。ブロック マッチング オブジェクトは、このプロパティを使用して探索領域のサイズを特定します。

ブロック間の一致条件。'Mean square error (MSE)'または'Mean absolute difference (MAD')として指定します。

動きの出力形式。'Magnitude-squared'または'Horizontal and vertical components in complex form'として指定します。

入力イメージのサブ分割のオーバーラップ。2 要素のベクトルとしてピクセル単位で指定します。

固定小数点プロパティ

固定小数点演算の丸め手法。'Floor''Ceiling''Convergent''Nearest''Round''Simplest'、または'Zero'として指定します。

整数入力が範囲外の場合に実行するアクション。'Wrap'または'Saturate'として指定します。

積のデータ型。'Same as input'または'Custom'として指定します。

乗算の語長と小数部の長さ。スケーリングされたnumerictype(Fixed-Point Designer)オブジェクトとして指定します。このプロパティは、AccumulatorDataTypeプロパティを'Custom'に設定した場合にのみ適用されます。

アキュムレータのデータ型。'Same as product''Same as input'、または'Custom'として指定します。

アキュムレータの語長と小数部の長さ。スケーリングされたnumerictype(Fixed-Point Designer)オブジェクトとして指定します。このプロパティは、AccumulatorDataTypeプロパティを'Custom'に設定した場合にのみ適用されます。

使用法

説明

V= blkMatcher(I)は、あるビデオ フレームから別のビデオ フレームへの入力イメージIの動きを計算し、速度の振幅の行列としてVを返します。

C= blkMatcher(I)は、OutputValueプロパティがHorizontal and vertical components in complex formに設定されている場合に、あるビデオ フレームから別のビデオ フレームへの入力イメージIの動きを計算し、水平成分と垂直成分の複素行列としてCを返します。

Y= blkMatcher(I,iref)は、ReferenceFrameSourceプロパティがInput portに設定されている場合に、入力イメージIと参照イメージirefの間の動きを計算します。

入力引数

すべて展開する

入力データ。強度値のスカラー、ベクトル、または行列として指定します。

入力参照データ。強度値のスカラー、ベクトル、または行列として指定します。

出力引数

すべて展開する

速度の振幅。行列として返されます。

水平成分と垂直成分。複素行列として返されます。

イメージと参照イメージの間の動き。行列として返されます。

オブジェクト関数

オブジェクト関数を使用するには、System object™ を最初の入力引数として指定します。たとえば、objという名前の System object のシステム リソースを解放するには、次の構文を使用します。

release(obj)

すべて展開する

step System objectのアルゴリズムの実行
release リソースを解放し、System objectのプロパティ値と入力特性の変更を可能にします。
reset System objectの内部状態のリセット

すべて折りたたむ

RGB イメージを読み取ってグレースケールに変換します。

img1 = im2double(im2gray(imread('onion.png')));

ブロック マッチング オブジェクトとアルファ ブレンダー オブジェクトを作成します。

hbm = vision.BlockMatcher('ReferenceFrameSource',...'Input port','BlockSize',[35 35]); hbm.OutputValue ='Horizontal and vertical components in complex form'; halphablend = vision.AlphaBlender;

最初のイメージを [5 5] ピクセルだけオフセットして 2 番目のイメージを作成します。

img2 = imtranslate(img1,[5,5]);

2 つのイメージの動きを計算します。

motion = hbm(img1,img2);

2 つのイメージをブレンドします。

img12 = halphablend(img2,img1);

Quiver プロットを使用してイメージの動きの方向を示します。

[X,Y] = meshgrid(1:35:size(img1,2),1:35:size(img1,1)); imshow(img12) holdonquiver(X(:),Y(:),real(motion(:)),imag(motion(:)),0) holdoff

Figure contains an axes object. The axes object contains 2 objects of type image, quiver.

バージョン履歴

R2012a で導入