2017-11-04 13 views
0

im2bw(x)を使用して画像xを白黒画像に変換した後、imfilterは白黒画像のみを返します。この白黒画像を普通のマトリックスに変換するにはどうすればimfilterが実数の行列を返すことができますか?デモ:あなたが見ることができるようにBW画像をマトリックスに変換

>> k = [0.3 0.3; 0 0.3]; 
>> x = [0.9 0.3; 0.4 0.2]; 
>> y = im2bw(x) 
y = 

    1 0 
    0 0 
>> imfilter(y, k) 
ans = 

    1 0 
    0 0 
>> imfilter([1 0; 0 0], k) 
ans = 

    0.30000 0.00000 
    0.00000 0.00000 
>> 

は、imfilterラウンドの結果は、二値画像に適用します。私はこれを防ぐつもりです。値を保持したまま、バイナリイメージを通常のマトリックスに変換するにはどうすればよいですか? im2bwからの出力が論理アレイであるため、結果Bは、A

と同じサイズとクラスを有し、imfilterの出力である

imfilterのドキュメントを見ると

+1

あなたは 'ダブルyは=(y)を'を試してみましたか? – beaker

+0

@ビーカーいいえ - それは動作します。あなたがそれを答えとして加えるなら、私はこれを受け入れます。私はどれくらいの時間をグーグルで過ごしたのか、答えがどれだけ簡単なのか信じられません...ありがとう! – Ell

答えて

2

あまりにも。あなたはfloat型に閾値処理画像をキャストする必要がimfilterから浮動小数点出力を得るために:

y = double(y); % or, y = single(y); 

結果:

>> k = [0.3 0.3; 0 0.3]; 
>> x = [0.9 0.3; 0.4 0.2]; 
>> y = im2bw(x) 
y = 

    1 0 
    0 0 

>> y = double(y) 
y = 

    1 0 
    0 0 

>> imfilter(y, k) 
ans = 

    0.30000 0.00000 
    0.00000 0.00000 
関連する問題