Main Content

randomAffine2d

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

説明

tform = randomAffine2d は、恒等変換を実行する affinetform2d オブジェクトを作成します。

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

すべて折りたたむ

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

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

Figure contains an axes object. The axes object contains an object of type image.

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

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

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

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

Figure contains an axes object. The axes object contains an object of type image.

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

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

Figure contains an axes object. The axes object contains an object of type image.

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

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

Figure contains an axes object. The axes object contains an object of type image.

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

tform = randomAffine2d(Rotation=@myrange);

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

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

Figure contains an axes object. The axes object contains an object of type image.

サポート関数

この例では、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

入力引数

すべて折りたたむ

名前と値の引数

オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。ここで、Name は引数名で、Value は対応する値です。名前と値の引数は他の引数の後に指定しなければなりませんが、ペアの順序は重要ではありません。

例: tform = randomAffine2d(XReflection=true)

R2021a より前では、コンマを使用して名前と値の各ペアを区切り、Name を引用符で囲みます。

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

水平方向のランダムな反転。false または true として指定します。XReflectiontrue (1) の場合、変換 tform は 50% の確率でイメージを水平方向に反転します。既定では、この変換はイメージを水平方向に反転しません。

垂直方向のランダムな反転。false または true として指定します。YReflectiontrue (1) の場合、変換 tform は 50% の確率でイメージを垂直方向に反転します。既定では、この変換はイメージを垂直方向に反転しません。

入力イメージに適用される回転の範囲 (度単位)。次のいずれかに指定します。

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

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

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

例: [-45 45]

入力イメージに適用される一様 (等方性) スケーリングの範囲。次のいずれかに指定します。

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

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

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

例: [0.5 4]

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

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

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

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

例: [0 45]

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

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

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

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

例: [0 45]

入力イメージに適用される水平方向の平行移動の範囲。次のいずれかに指定します。平行移動距離はピクセル単位で測定します。

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

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

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

例: [-5 5]

入力イメージに適用される垂直方向の平行移動の範囲。次のいずれかに指定します。平行移動距離はピクセル単位で測定します。

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

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

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

例: [-5 5]

出力引数

すべて折りたたむ

アフィン変換。affinetform2d オブジェクトとして返されます。

バージョン履歴

R2019b で導入

すべて展開する