【问题标题】:Error using active contour使用活动轮廓时出错
【发布时间】:2016-01-03 02:08:14
【问题描述】:

使用活动轮廓时出现错误:

???输入的未定义函数或方法“activecontour” 'single' 类型的参数。

==> Segmentasi 中的错误>threshold_Callback 在 114 final = activecontour(image2,mask, 100);

image1 = handles.citra1;
    level=0.008;
    bw = edge(image1,'Canny');
    axes(handles.axes2);
    imshow(bw,[]);

    %active contour
    image2 = bwdist(~bw);
    mask = zeros(size(image2));
    mask(25:end-25,25:end-25) = 1;
    final = activecontour(image2,mask , 100);
    axes(handles.axes5)
    imshow(final,[]);
    handles.data3 = final;
    guidata(hObject,handles);

我正在使用 dicom 文件中的图像(矢状图像)

【问题讨论】:

  • 感谢 adriaan 编辑我的问题 :)
  • activecontour 自 MATLAB R2013a 起被引入 MATLAB 的 CVST 工具箱。你有哪个版本的 MATLAB?如果您在 R2013a 之前有任何东西,那么您将没有此功能,这就是您收到此错误的原因。有关更多详细信息,请参阅文档......特别是在底部。您将看到该功能何时引入:mathworks.com/help/images/ref/activecontour.html
  • oh ic,我使用 matlab 2011a 这就是为什么我不能使用这个功能,谢谢你解决了我的问题,:)

标签: image matlab image-segmentation


【解决方案1】:

问题是bwdist函数的输出是一个矩阵,activecontour函数的输入是一个灰度图像。所以在使用之前需要将矩阵转换为灰度图像。这是使用名为mat2gray 的函数完成的。为此,在使用bwdist 后应用mat2gray 如下:

image2 = mat2gray(bwdist(~bw));

然后剩下的代码就可以工作了。检查我的简单示例:

bw = zeros(200,200);
bw(50,50) = 1;
bw(50,150) = 1;
bw(150,50) = 1;
D1 = bwdist(bw);

D2 = mat2gray(D1);
mask = zeros(size(D2));
mask(25:end-25,25:end-25) = 1;
final = activecontour(D2,mask,100);

subplot(1,3,1);imshow(bw)
subplot(1,3,2);imshow(mat2gray(D1))
subplot(1,3,3);imshow(final,[]);

【讨论】:

  • 我已经尝试过您的代码,但现在它说 “未定义的函数或方法 'activecontour' 用于 'double' 类型的输入参数。”
  • @alandsamuel 你能发张图片吗?因为正如你所看到的,这个方法应该像我展示的那样工作。
  • @NKN OP 没有activecontour 功能。如果您编写了解决方案并且可行,这是对他们问题的唯一解释。
  • 它已解决,我不能使用 activecontour 函数,因为我使用的是 2011a matlab,并且在 matlab 2013 中引入了 activecontour 函数,顺便感谢您的帮助:)
  • 如果我能提供一个小评论,接受这个答案是有问题的,因为这实际上并没有解决你的问题。这会发送不正确的消息。虽然我很欣赏 NKN 的努力,而且我当然不想影响失去的声誉,但这不是正确的答案……但它确实提供了一些关于使用该功能的好技巧。我将由您自行决定。
猜你喜欢
  • 1970-01-01
  • 2018-01-25
  • 1970-01-01
  • 1970-01-01
  • 2013-11-29
  • 1970-01-01
  • 1970-01-01
  • 2022-12-04
  • 1970-01-01
相关资源
最近更新 更多