2013-04-21 3 views
0

Matlab 형식의 인간 얼굴이있는 데이터 세트를 받았지만 Matlab에서 데이터 세트를 가져온 후에 이미지를 표시하는 방법을 알지 못합니다.Matlab에서 RGB 이미지를 표시하는 방법, 각 채널은 별도의 매트릭스입니까?

매트릭스의 크기는 60x60x3x1000입니다. 즉, 이미지의 크기는 60x60이고, 이미지 RGB 당 채널 수는 3 개이고, 이미지는 1000 개입니다. 이러한 이미지가 1000 개 있습니다.

i- 번째 얼굴을 색상으로 표시하는 것과 같은 기본적인 작업을 수행하는 방법을 알아낼 수 없습니다.

감사합니다.

+1

(X (:, :, : 1, 2))'? – wakjah

+0

오류가 발생했습니다 : TrueColor CData에 0.0 <= value <= 1.0 범위를 벗어나는 요소가 포함되어 있습니다. – user2225930

+3

try : image (squeeze (x (:, :, :, i))). – bas

답변

0

image(1:60, 1:60, Images(:, :, :, i))을 사용해 보신 적이 있으십니까?

colormap(gray) 
image(Images(:,:,1,i)) 

또는

colormap(gray) 
image(Images(:,:,2,i)) 

또는

colormap(gray) 
image(Images(:,:,3,i)) 

당신을 위해 채널을 분리하여 개별 색상 구성 요소를 확장해야한다는까지 :

은 당신이 할 수있는 개별 채널을 얻으려면 올바른 채도 레벨. 또한

, 당신은 범위 시도에서 인에 대한 오류가 발생하는 경우 :

imagesc(1:60, 1:60, Images(:, :, :, i)) 
나를 당신의 교수를 믿고 나 동료 표준 당신에게 RGB 데이터를 제공하지 않은 것이 어렵다 말했다

[0,255] 형식 그렇다고해도 imagesc은 색상 채널을 나란히 비교할 때 쓸모가 없습니다.

각 색상 표의 값 중 일부가 어떻게 표시되는지 확인하는 것도 도움이 될 수 있습니다. 사실 그들은 부동의 일종이다

min(Images(:, :, 1, 1)) 
max(Images(:, :, 1, 1)) 

경우에, 나는 어떻게 표준 정수 RGB 표현으로 확장하는 방법을 보여줄 수 : 우리는 당신이 날의 출력을 주면 것을 볼 수 있었다.

0

데이터가 [0..255] 범위에 있지만 double 형식 인 것처럼 보입니다 (uint8 대신).

그래서, k 번째 이미지를 얻을 당신은 당신이 (당신이 필요 확실히 100 % 아니에요 점

Im_k = squeeze(Images(:,:,:,k))/255; 

더블 정밀도 부동을 사용하려는 경우,

Im_k = uint8(squeeze(Images(:,:,:,k))); 

이 필요하거나 이 경우 squeeze을 사용하십시오).

디스플레이 이미지를 어떻게`이미지에 대한

figure('Name', 'Showing k-th face'); 
imshow(Im_k); 
관련 문제