Main Content

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

randomAffine2d

ランダムな 2 次元アフィン変換の作成

説明

tform = randomAffine2d は、恒等変換と一致する既定のプロパティ値を使用して、affine2d オブジェクトを作成します。

tform = randomAffine2d(Name,Value) は、名前と値のペアの引数を使用して、アフィン変換のタイプを指定します。

すべて折りたたむ

イメージを読み取って表示します。

I = imread('kobi.png');
imshow(I)

イメージを回転する affine2d 変換オブジェクトを作成します。関数 randomAffine2d は、区間 [35, 55] 度内の連続一様分布から回転角度をランダムに選択します。

tform1 = randomAffine2d('Rotation',[35 55]);

イメージを回転して、結果を表示します。

J = imwarp(I,tform1);
imshow(J)

変換オブジェクト tform1 は、すべてのイメージを同じ量だけ回転します。ランダムに選択された異なる量だけイメージを回転するには、新しい affine2d 変換オブジェクトを作成します。

tform2 = randomAffine2d('Rotation',[-10 10]);
J2 = imwarp(I,tform2);
imshow(J2)

イメージを読み取って表示します。

I = imread('sherlock.jpg');
imshow(I)

イメージを回転する affine2d 変換オブジェクトを作成します。カスタム範囲から回転角度を選択するには、関数ハンドルとして名前と値のペアの引数 'Rotation' を指定します。この例では、2 つの重なっていない区間から角度を選択する myrange という名前の関数 (この例の終わりで定義) を指定します。

tform = randomAffine2d('Rotation',@myrange);

イメージを回転して、結果を表示します。

J = imwarp(I,tform);
imshow(J)

サポート対象の関数

この例では、2 つの区間 (-10, 10) と (170, 190) のいずれかを同じ確率で最初にランダムに選択する関数 myrange を定義します。この関数は、選択した区間内で一様分布から単一のランダムな数を返します。

function angle = myrange()
    if randi([0 1],1)
        a = -10;
        b = 10;
    else
        a = 170;
        b = 190;
    end
    angle = a + (b-a).*rand(1);
end

入力引数

すべて折りたたむ

名前と値のペアの引数

オプションの引数 Name,Value のコンマ区切りペアを指定します。Name は引数名で、Value は対応する値です。Name は引用符で囲まなければなりません。Name1,Value1,...,NameN,ValueN のように、複数の名前と値のペアの引数を、任意の順番で指定できます。

例: tform = randomAffine2d('XReflection',true)

水平方向のランダムな反転。'XReflection'false または true から構成されるコンマ区切りのペアとして指定します。XReflectiontrue (1) の場合、変換 tform は 50% の確率でイメージを水平方向に反転します。既定では、この変換はイメージを水平方向に反転しません。

垂直方向のランダムな反転。'YReflection'false または true から構成されるコンマ区切りのペアとして指定します。YReflectiontrue (1) の場合、変換 tform は 50% の確率でイメージを垂直方向に反転します。既定では、この変換はイメージを垂直方向に反転しません。

入力イメージに適用される回転の範囲 (度単位)。'Rotation' と次のいずれかから構成されるコンマ区切りのペアとして指定します。

  • 2 要素の数値ベクトル。2 番目の要素は最初の要素以上でなければなりません。回転角度は、指定区間内の連続一様分布からランダムに選択されます。

  • 関数ハンドル。関数は入力引数を受け入れず、回転角度を数値スカラーとして返さなければなりません。関数ハンドルを使用して、重なっていない区間から、または一様ではない確率分布を使用して回転角度を選択します。関数ハンドルの詳細については、関数ハンドルの作成を参照してください。

既定では、変換 tform はイメージを回転しません。

例: [-45 45]

入力イメージに適用される一様 (等方性) スケーリングの範囲。'Scale' と次のいずれかから構成されるコンマ区切りのペアとして指定します。

  • 2 要素の数値ベクトル。2 番目の要素は最初の要素以上でなければなりません。スケール係数は、指定区間内の連続一様分布からランダムに選択されます。

  • 関数ハンドル。関数は入力引数を受け入れず、スケール係数を数値スカラーとして返さなければなりません。関数ハンドルを使用して、重なっていない区間から、または一様ではない確率分布を使用してスケール係数を選択します。関数ハンドルの詳細については、関数ハンドルの作成を参照してください。

既定では、変換 tform はイメージをスケーリングしません。

例: [0.5 4]

入力イメージに適用される水平方向のせん断の範囲。'XShear' と次のいずれかから構成されるコンマ区切りのペアとして指定します。せん断は角度として度単位で測定され、範囲は (–90, 90) になります。

  • 2 要素の数値ベクトル。2 番目の要素は最初の要素以上でなければなりません。水平方向のせん断角度は、指定区間内の連続一様分布からランダムに選択されます。

  • 関数ハンドル。関数は入力引数を受け入れず、水平方向のせん断角度を数値スカラーとして返さなければなりません。関数ハンドルを使用して、重なっていない区間から、または一様ではない確率分布を使用して水平方向のせん断角度を選択します。関数ハンドルの詳細については、関数ハンドルの作成を参照してください。

既定では、変換 tform はイメージを水平方向にせん断しません。

例: [0 45]

入力イメージに適用される垂直方向のせん断の範囲。'YShear' と次のいずれかから構成されるコンマ区切りのペアとして指定します。せん断は角度として度単位で測定され、範囲は (–90, 90) になります。

  • 2 要素の数値ベクトル。2 番目の要素は最初の要素以上でなければなりません。垂直方向のせん断角度は、指定区間内の連続一様分布からランダムに選択されます。

  • 関数ハンドル。関数は入力引数を受け入れず、垂直方向のせん断角度を数値スカラーとして返さなければなりません。関数ハンドルを使用して、重なっていない区間から、または一様ではない確率分布を使用して垂直方向のせん断角度を選択します。関数ハンドルの詳細については、関数ハンドルの作成を参照してください。

既定では、変換 tform はイメージを垂直方向にせん断しません。

例: [0 45]

入力イメージに適用される水平方向の平行移動の範囲。'XTranslation' と次のいずれかから構成されるコンマ区切りのペアとして指定します。平行移動距離はピクセル単位で測定します。

  • 2 要素の数値ベクトル。2 番目の要素は最初の要素以上でなければなりません。水平方向の平行移動距離は、指定区間内の連続一様分布からランダムに選択されます。

  • 関数ハンドル。関数は入力引数を受け入れず、水平方向の平行移動距離を数値スカラーとして返さなければなりません。関数ハンドルを使用して、重なっていない区間から、または一様ではない確率分布を使用して水平方向の平行移動距離を選択します。関数ハンドルの詳細については、関数ハンドルの作成を参照してください。

既定では、変換 tform はイメージを水平方向に平行移動しません。

例: [-5 5]

入力イメージに適用される垂直方向の平行移動の範囲。'YTranslation' と次のいずれかから構成されるコンマ区切りのペアとして指定します。平行移動距離はピクセル単位で測定します。

  • 2 要素の数値ベクトル。2 番目の要素は最初の要素以上でなければなりません。垂直方向の平行移動距離は、指定区間内の連続一様分布からランダムに選択されます。

  • 関数ハンドル。関数は入力引数を受け入れず、垂直方向の平行移動距離を数値スカラーとして返さなければなりません。関数ハンドルを使用して、重なっていない区間から、または一様ではない確率分布を使用して垂直方向の平行移動距離を選択します。関数ハンドルの詳細については、関数ハンドルの作成を参照してください。

既定では、変換 tform はイメージを垂直方向に平行移動しません。

例: [-5 5]

出力引数

すべて折りたたむ

アフィン変換。affine2d オブジェクトとして指定します。

R2019b で導入