【发布时间】:2016-08-16 04:41:48
【问题描述】:
我完成了以下代码,我从电影中导入一帧,转换为灰度并徒手绘制感兴趣的区域。然后我使用 Chan-Vese 区域填充来获取我感兴趣的区域并基于此创建蒙版。我终于可以得到我正在寻找的二进制图像,在代码中称为 BW3。现在这是愚蠢的部分。如何创建一个循环以使代码运行(加载第 1 到 58 帧),向我展示第 1 帧的灰度图像,让我绘制感兴趣的区域,然后创建并保存最终的二进制图像 BW3? 问候, J
% 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
【问题讨论】: