このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
幾何学的変換の出力に対する塗りつぶしの値の指定
この例では、幾何学的変換を実行する際に imwarp
で使用される塗りつぶしの値の指定方法を説明します。
変換を実行すると、出力イメージに元の入力イメージにはないピクセルが見つかる場合があります。これらのピクセルには "塗りつぶしの値" と呼ばれる値を代入しなければなりません。既定の設定では、これらのピクセルは imwarp
によって 0 に設定され、黒で表示されます。名前と値の引数 FillValues
を使用して別の値を指定できます。変換するイメージがグレースケール イメージの場合は、グレーの階調を指定するスカラー値を指定します。変換するイメージが RGB イメージの場合は、スカラー値か 1 行 3 列のベクトルを使用できます。スカラーを指定した場合、imwarp
は RGB イメージの各面にそのグレー階調を使用します。1 行 3 列のベクトルを指定した場合、imwarp
は値を RGB カラーの値と解釈します。
カラー イメージをワークスペースに読み取ります。
rgb = imread("onion.png");
平行移動の量を指定し、平行移動変換を表す幾何学的変換オブジェクトを作成します。
translation = [15 40]; tform = transltform2d(translation);
2 次元空間参照オブジェクトを作成します。このオブジェクトで出力空間の座標系の面を指定することにより、塗りつぶしの値を必要とする領域が表示されます。既定の設定では、出力座標空間全体ではなく、変換したイメージ全体がちょうど含まれる大きさに imwarp
が出力イメージのサイズを調整します。
Rout = imref2d(size(rgb)); Rout.XWorldLimits(2) = Rout.XWorldLimits(2)+translation(1); Rout.YWorldLimits(2) = Rout.YWorldLimits(2)+translation(2); Rout.ImageSize = Rout.ImageSize+translation;
関数 imwarp
を使用して変換を実行します。
cb_rgb = imwarp(rgb,tform,"OutputView",Rout);
imshow(cb_rgb)
次に、今度は塗りつぶしの値を指定して変換をもう一度実行します。
fillValue = [187 192 57]; cb_fill = imwarp(rgb,tform,"OutputView",Rout,"FillValues",fillValue); imshow(cb_fill)
参考
imwarp
| imref2d
| transltform2d
| affinetform2d