【发布时间】:2021-01-12 15:52:42
【问题描述】:
我正在尝试使用 MATLAB activecontour 代码来分割区域。该示例在我使用二进制图像时使用了灰度图像。当我通过调用二进制图像运行代码时,结果是好的。但是,当我合并代码时,什么也没有发生。它跳过迭代部分,并生成 sama 二进制图像。供您参考,下面是我的代码。
%% snake
figure
x = imread('1.jpg');
threshold = 160;
I = rgb2gray(x);
I = Igray>threshold;
imshow (I);
I = imresize(I,.5);
imshow(I)
title('Original Image')
mask = zeros(size(I));
mask(25:end-25,25:end-25) = 1;
imshow(mask)
title('Initial Contour Location')
bw = activecontour(I,mask,1300);
imshow(bw)
title('Segmented Image, 300 Iterations')
从蛇的代码开始不会发生任何过程。它最终只生成二进制图像。我希望有人可以尝试运行它并帮助我找到我的错误。提前谢谢你
【问题讨论】:
-
为什么要在二进制图像上运行蛇?为什么要丢掉灰度图像中的信息,让它的工作变得更加困难?
-
起初我尝试了基于活动区域的技术。我尝试使用灰度图像,但是分割效果不是很好,所以我决定尝试使用二值图像技术。得到的二值图像将与 RGB 图像融合在一起作为最终图像。我改成二值的原因是为了得到想要的区域,因为灰度有一些不必要的东西,它不能分割我想要的区域。实际上,我使用蛇与基于活动区域的比较。为了公平起见,我将其更改为二进制图像。不幸的是,当我合并代码时它不起作用。
-
查看您正在使用的功能的文档,您似乎正在使用 Chan-Vese 活动轮廓。这是水平集方法,而不是蛇。这是一个完全不同的算法。
-
请发布您的输入图像,以便我们重现您的结果。如果我们看不到发生了什么,就无法知道问题出在哪里。
-
mathworks.com/help/images/ref/activecontour.html- 我从这个网站复制了代码。这就是蛇。或者实际上我在这里误解了?
标签: matlab image-processing computer-vision image-segmentation contour