2016-07-19 1 views
2

uint8のグレースケールイメージを1つあり、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) 

ここでは、コードをコンパイル可能にするための画像生成ループを追加しました。

このコードでは、生成されたムービーは1水平線のみで構成されています。

適切な映画を取得するには、何が必要ですか?それとも、自分のイメージから映画を作る良い方法がありますか?

私はあなたのコードをよく見ると、flow81 x 20であるWindows 7の

答えて

1

にMATLAB R2015bの学術を使用しています。あなたが整形を行うと、あなたとmatSizeを計算:我々はセル配列が1 x 20あるの形状を言ったようので

matSize = size(flow8, 1) 

まあ、その値は、1です。

代わりに、それぞれの画像のサイズがであることが必要でした。その場合は、値を取得するためにセル配列にインデックスを付け、次にのサイズをとると、となります。このかかわらを行うには

matSize = size(flow8{1}); 

潜在的に別の(はるかに短い)の方法、それはとても4次元に沿って連結するcatを使用しています。次に、reshapepermute操作のすべてを避けます。

imageStack = cat(4, flow8{:}); 
+0

...パンチに私を打つのをやめる! +1。 – rayryeng

+0

私は実際にその行を 'matSize = size(flow8 {1}、1);'に変更しました。そんなにありがとう、@Suever! – Dave

関連する問題