在MATLAB中将imellipse绘制在图像上

时间:2014-05-12 14:06:41

标签: matlab user-interface image-processing plot roi

我正在尝试在图像堆栈(GUI)上创建一个感兴趣的二进制区域掩码。以下是我到目前为止的情况:

% Initalize lesion mask
LesionMask = zeros(size(handles.ImageOne));

% Create an ellipse for roi analysis

Lesion = imellipse(handles.axes1);

% Save roi to 3D binary mask
LesionMask(:,:,handles.CurrentSlice) = Lesion.createMask();

boundary = bwboundaries(LesionMask(:,:,handles.CurrentSlice))

现在我想在我的图像上覆盖边界,特别是,我希望它能够在我通过图像堆栈时保持不变。

简而言之,我想在我的图像上绘制椭圆的边缘。

谢谢!

1 个答案:

答案 0 :(得分:2)

在最后添加到您的代码中时,这可能对您有用 -

hold on
for k = 1:numel(boundary)
    plot(boundary{k}(:,2), boundary{k}(:,1), 'r', 'Linewidth', 3) %// Red border
end

灵感来自this blog

如果您希望保留图像边缘以供日后使用,请尝试此操作 -

[M,N,C] = size(handles.ImageOne)
t1 = cell2mat(boundary);
ind1 = sub2ind([M N],t1(:,1),t1(:,2));
ind2 = bsxfun(@plus,ind1,[0:C-1].*(M*N));
handles.ImageOne(ind2)=0; %// Creates a black border