Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

幾何学的変換の出力に対する塗りつぶしの値の指定

この例では、幾何学的変換を実行する際に 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)

参考

| | |

関連するトピック