我正在尝试在图像堆栈(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))
现在我想在我的图像上覆盖边界,特别是,我希望它能够在我通过图像堆栈时保持不变。
简而言之,我想在我的图像上绘制椭圆的边缘。
谢谢!
答案 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