2016-07-19 4 views
2

uint8 유형의 20 개의 회색 음영 이미지가 flow8이라는 1x20 셀 배열에 저장되어 있습니다. 나는 그들로부터 영화를 만들고 싶다. 현재 접근 방식은 다음과 같습니다.MATLAB : uint8 이미지의 셀 배열에서 동영상 만들기

% Generate images. 
for i = 1:20 
    flow8{i} = round(rand(100, 100)*255+1); 
end 

% Get into 4-D shape. 
n = size(flow8,2); 
matSize = size(flow8,1); 
imageStack = reshape(cell2mat(flow8),matSize,[],n); 
imageStack = permute(imageStack, [1 2 4 3]); 

% Create movie. 
mov = immovie(imageStack, gray) 
implay(mov) 

여기 코드를 컴파일 할 수 있도록 이미지 생성 루프를 추가했습니다.

이 코드에서 생성 된 동영상은 하나의 수평선으로 구성됩니다.

적절한 영화를 얻으려면 어떻게해야합니까? 또는 내 이미지에서 동영상을 만드는 더 좋은 방법이 있습니까? 당신이 당신의 코드를 자세히 보면

나는 flow81 x 20입니다, 윈도우 7

답변

1

에 MATLAB R2015b 학술를 사용하고 있습니다. 우리가 셀 어레이의 모양이 1 x 20 말했다으로하기 때문에

matSize = size(flow8, 1) 

글쎄, 그 값이 1입니다 : 당신이 당신의 재편 작업을 수행 할 때, 당신은 matSize으로 계산합니다.

각 이미지의 크기를 원했을 가능성이 큽니다. 어떤 경우에는 셀 배열에 값을 얻기 위해 인덱스를 지정하고 크기를 취합니다.. 잠재적으로 다른 (훨씬 짧은) 방법

matSize = size(flow8{1}); 

는 그렇게 4 차원을 따라 연결하는 cat를 사용하지만이 작업을 수행합니다. 그런 다음 reshapepermute 조작을 모두 피하십시오.

+0

젠체하는 ... 나를 펀치하는 것을 멈추십시오! +1. – rayryeng

+0

나는 실제로 그 줄을'matSize = size (flow8 {1}, 1); '로 바꿨고 그 트릭을했다. 정말 고마워, 수퍼! – Dave