1

Matlab で 5x5 ガウス カーネルを作成しましたfspecial()。カーネルを という変数に割り当てましたh。を通じて画像を読み込み、imread()その画像を という変数に割り当てましたIm

画像にはランダムなノイズが含まれています。私の意図は、ノイズを除去する方法を確認することです。Imここで、画像をカーネルで畳み込みたいと思いますh。私はこの方法で関数を使用しようとしましたconv2():conv2(Im, h);

しかし、実行すると空の白い画像が表示されることがわかりましたimshow()Imカーネルで畳み込みを行った後、結果はぼやけたバージョンの画像になると予想していましたh

これは私がしたことです:

>> Im = imread('image.jpg');
>> h = fspecial('gaussian', 5, 1.0);
>> C1 = conv2(Im, h);

他の写真でも同じプロセスを試しましたが、同じようにすると空の白い写真が表示されimshow()ます。私は何を間違えましたか?

4

2 に答える 2

4

uint8タイプ画像に取り組んでいるようです。この場合、フィルタリングによってピクセルの値が飽和し、アーティファクトが発生する可能性があります。試す:

Im = im2double( imread( 'image.jpg' ) );
h = fspecial( 'gaussian', 5, 1.0 );
C1 = imfilter( Im, h );
figure; imshow( C1, [] ); title( 'filtered image' );

PSよくわかりませんが、値が [0..255] の範囲に
あると読んだときにIm、値がほぼ同じ範囲にあると思います。ただし、ピクセル (画像の場合) は 1 (255 ではない) で飽和します。これが、表示される完全に白い画像の理由です。uint8conv2doubleimagedouble

于 2013-03-12T14:54:05.310 に答える