Main Content

中心から外側へのフィルター強度の増加

この例では、中心から外側に向かって強度が増加するフィルターを作成して適用する方法を説明します。

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

I = imread('peppers.png');
I = im2double(I);
imshow(I)

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

ガウス重み付け関数を使用したイメージへのぼかしの適用

標準偏差 2 の ガウス フィルターを使用して、イメージの不鮮明なコピーを作成します。

Iblurred = imgaussfilt(I,2);
imshow(Iblurred)

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

イメージと同じサイズのガウス フィルターとして重み付きイメージを作成します。イメージの鮮明に表示される部分を増やすため、filterStrength の値を大きくします。

filterStrength = 50;
weights = fspecial('gaussian',[size(I,1) size(I,2)],filterStrength);
imshow(weights,[])

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

関数 rescale を使用して重み付きイメージを [0, 1] の範囲に正規化します。

weights = rescale(weights);

元のイメージと不鮮明なイメージの重み付き和である、重み付きの不鮮明なイメージを作成します。R、G、B のカラー チャネルごとに、MATLAB で重み行列が自動的に複製されます。

IweightedBlurred = I.*weights + Iblurred.*(1-weights);

結果を表示します。イメージの中心は鮮明ですが、中心から外に向かうにつれて不鮮明になります。イメージの鮮明に表示される部分を増やすため、次の値を大きくします。

imshow(IweightedBlurred)

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

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)

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

重み付け関数をイメージに適用し、結果を表示します。

I2 = I.*weights;
imshow(I2)

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

参考

|