我正在尝试在图像堆栈(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))
现在我想在我的图像上覆盖边界,特别是,我想让它在我穿过图像堆栈时保持不变。
简而言之,我想在我的图像上绘制椭圆的边缘。
谢谢!
如果将它添加到您的代码末尾,可能会对您有用-
hold on
for k = 1:numel(boundary)
plot(boundary{k}(:,2), boundary{k}(:,1), 'r', 'Linewidth', 3) %// Red border
end
灵感来自这个博客
如果您想保存图像的边缘以供以后使用,请尝试-
[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