このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
中心から外側へのフィルター強度の変更
この例では、イメージの中心からの距離に比例してピクセルをぼかし、暗くするフィルターを作成する方法を説明します。
イメージを読み取って表示します。
I = imread("peppers.png");
I = im2double(I);
imshow(I)
ガウス重み付け関数を使用したイメージへのぼかしの適用
標準偏差 2 の ガウス フィルターを使用して、イメージの不鮮明なコピーを作成します。
Iblurred = imgaussfilt(I,2); imshow(Iblurred)
イメージと同じサイズのガウス フィルターとして重み付きイメージを作成します。イメージの鮮明に表示される部分を増やすため、filterStrength
の値を大きくします。
filterStrength = 50; weights = fspecial("gaussian",[size(I,1) size(I,2)],filterStrength); imshow(weights,[])
関数 rescale
を使用して重み付きイメージを [0, 1] の範囲に正規化します。
weights = rescale(weights);
元のイメージと不鮮明なイメージの重み付き和である、重み付きの不鮮明なイメージを作成します。R、G、B のカラー チャネルごとに、MATLAB で重み行列が自動的に複製されます。
IweightedBlurred = I.*weights + Iblurred.*(1-weights);
結果を表示します。イメージの中心は鮮明ですが、中心から外に向かうにつれて不鮮明になります。
imshow(IweightedBlurred)
1/R^2 重み付け関数を使用したイメージへのビネットの適用
イメージのサイズを取得します。
sizex = size(I,2); sizey = size(I,1);
ビネットの中心を指定します。
xcenter = size(I,2)/2; ycenter = size(I,1)/2;
表面の x 座標と y 座標を定義します。
[X,Y] = meshgrid((1:sizex)-xcenter,(1:sizey)-ycenter);
(x, y) の各座標の中心から半径を定義します。
R2 = X.^2 + Y.^2;
R の逆数として重み付け関数を定義し、[0, 1] の範囲にスケールします。
R2 = rescale(R2); weights = (1-R2); imshow(weights)
重み付け関数をイメージに適用し、結果を表示します。
I2 = I.*weights; imshow(I2)