2016-04-22 10 views
0

私はフィルムからフレームをインポートし、グレースケールに変換し、関心領域をフリーハンドで描画するためのコードを作成しました。 Chan-Vese領域の塗りつぶしを使用して、関心のある領域を取得し、これに基づいてマスクを作成します。私は最終的に私がコードでBW3と呼ばれる探しているバイナリイメージを得ることができます。今、これは愚かな部分です。コードを実行し(フレーム1〜58をロードする)、フレーム1のグレースケールイメージを表示して、関心領域を描画して最終的なバイナリイメージBW3を作成して保存できるように、ループを作成するにはどうすればよいですか?あなたはただ、これを達成するためにforループを使用することができ(すなわち58まで)フレームの数が限られていると仮定すると よろしく、 JフリーROIを作成するためのループを作成

% Select Initial Image 
for n = 5:87 
frame = read(obj,n); 


%Isolate the Blade 
imggray = rgb2gray(frame); 
h_im=imshow(imggray); 

%Region of interest 
% r = imrect(gca,[646,188,18,-648]); 
% BW2 = createMask(r,h_im); 

hROI = imfreehand(gca); 
Position = getPosition(hROI); 
BW2 = createMask(hROI); 

%Get blade Binary 

BW3 = activecontour(imggray, BW2, 1000, 'Chan-Vese'); 

% Fill Holes 
BW3 = imfill(BW3, 'holes'); 

% Form masked image from input image and segmented image. 
maskedImage = h_im; 
maskedImage(~BW3) = 0; 

%Save binary frame 
filename = sprintf('C:..........\\binaryimage%d.png', n); 
imwrite(BW3,filename,'png'); 
end 

答えて

0

。あなたのコードでは、最初のイメージコードをループで反復するように変更する必要があります。

for counter=1:58 
    frame=read(obj,counter); 
    imwrite(frame,strcat('frame',num2str(counter),'.png')) 
    .....% the remainder of your code likely remains unchanged. 
end 

あなたの結果を書くとき、あなたはおそらく、あなたが各ループ内のファイルへのあなたの結果を書き込む場合を除きをループができるように、ある種の構造体にドロップする必要があります。

+0

こんにちは、私はそれを自分でやりました。修正されたコードを参照してください。何らかの理由で私はちょっと自分を失ってしまい、それを理解できませんでした。再度、感謝します – jer

関連する問題