2016-12-27 66 views
0

フィルタとして「ones」関数を使用し、両方の行列の畳み込みを計算するために「conv2」を使用する単純なローパスフィルタを実装しようとしています。フィルタ)は、取得したいフィルタリングされた画像ですが、imshow(filteredImage)の結果は、フィルタ処理された画像の代わりに空の白い画像にすぎません。MATLAB:ローパスフィルタを画像に適用する

フィルタリングされた画像のマットを確認しましたが、256x256の倍数ですが、正しく表示されない理由はわかりません。

I = imread('cameraman.tif'); 

filteredImage = conv2(double(I), double(ones(3,3)), 'same'); 

figure; subplot(1,2,1); imshow(filteredImage);title('filtered'); 
    subplot(1,2,2); imshow(I); title('original'); 

EDIT: 私もそれが1を超えたとして畳み込みを計算する前に最初に倍増すると変換しようとしたが、それはローパスフィルタ効果を与えなかったが、画像のコントラストが代わりに増加しました。

I = imread('cameraman.tif'); 
I1 = im2double(I); 
filteredImage = conv2(I1, ones(2,2), 'same'); 

figure; subplot(1,2,1); imshow(filteredImage);title('filtered'); 
    subplot(1,2,2); imshow(I1); title('original'); 
+0

「double」タイプの画像は、「0」から「1」の範囲の値を有することが期待される。あなたの 'filteredImage'はおそらくそれを超えています。 – beaker

+0

@beakerはい、それを上回っていましたが、最初に "im2double"を使用して2倍に変換しましたが、ぼやけずに白すぎます。 –

+0

これでもう2番目の問題に遭遇しました。 'filteredImage'の値の範囲は何ですか?あなたの編集したコードでは、私は彼らが '0'と' 4'の間にいると確信しています。 – beaker

答えて

0

以下溶液範囲の問題を修正した、与えられた他のソリューションは、平均化filteあるローパスフィルタの具体的な種類についてであった:

Img1 = imread('cameraman.tif'); 
Im=im2double(Img1); 
filteredImage = conv2(Im, ones(3,3)); 
figure; subplot(1,2,1); imshow(filteredImage, []);title('filtered'); 
subplot(1,2,2); imshow(Im); title('original'); 

の代わりに割ますカーネル、私は使用しましたimshow(filteredImage、[])

関連する問題