2017-11-23 13 views
0

が、私は3つのチャンネル Matlabの - インデックスは、マトリックス寸法誤差

img = imread('canoe.tif'); % Read image 
red = img(:,:,1); % Red channel 
green = img(:,:,2); % Green channel 
blue = img(:,:,3); % Blue channel 
a = zeros(size(img, 1), size(img, 2)); 
just_red = cat(3, red, a, a); 
just_green = cat(3, a, green, a); 
just_blue = cat(3, a, a, blue); 
back_to_original_img = cat(3, red, green, blue); 
figure, imshow(img), title('Original image') 
figure, imshow(just_red), title('Red channel') 
figure, imshow(just_green), title('Green channel') 
figure, imshow(just_blue), title('Blue channel') 
figure, imshow(back_to_original_img), title('Back to original image') 

に画像を分割しようとしています超えるとエラーは、第三行で来ます。 通常、この例外は配列のようなものになります。それはなぜここで起こるのだろうか? なぜ2行目でエラーが表示されないのですか?

+0

私の回答があなたの問題解決に役立った場合は、それを受け入れてください。ありがとう! –

答えて

1

これは、読んでいるTIFF画像がグレースケール形式またはインデックス付きの色でエンコードされているためです。このような場合、イメージピクセルデータには、グレースケール形式のグレースケールグラデーションとインデックス付きカラー形式のパレットインデックスという1つのチャネルのみが含まれます。後者に関する詳細については、Single channel png displayed with colorsというこの問題をお読みください。

これはイメージの2番目のチャネルにアクセスしようとしたときにエラーが発生する理由です。存在しないためです。イメージ配列を開き、それを確認します。

+0

申し訳ありませんが、私はそれを受け入れることを忘れました。心から感謝する! –

関連する問題