2017-11-23 2 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') 

로 이미지를 분할하려고 초과 오류가 세 번째 줄에 온다. 일반적으로이 예외는 배열과 유사합니다. 왜 여기서 일어날까요? 두 번째 줄에 오류가 표시되지 않는 이유는 무엇입니까?

+0

내 답변이 문제를 해결하는 데 도움이 되었다면 동의하십시오. 감사! –

답변

1

읽는 TIFF 이미지가 회색 음영 형식이나 색인 된 색으로 인코딩되어 있기 때문일 수 있습니다. 이러한 경우 이미지 픽셀 데이터에는 그레이 스케일 형식의 회색조 그라디언트와 색인 된 색상 형식의 팔레트 색인이라는 하나의 채널 만 포함됩니다. 후자와 관련된 자세한 내용은이 질문 (Single channel png displayed with colors)을 참조하십시오.

이미지의 두 번째 채널에 액세스 할 때 오류가 발생하는 이유는 그것이 존재하지 않기 때문입니다. 이미지 배열을 열고 확인하십시오.

+0

죄송합니다. 동의하지 않았습니다. 정말 감사합니다! –