从图像中提取轮廓

36视图(30天)
湍流分析
湍流分析 2021年6月1日
评论道: 明星黾 2021年6月2日
你好,
我有我需要的图像extrat外轮廓。我的图像是保存在h矩阵的名字. .(这里还.mat文件连接)
我试过如下所示,而我得到的边缘()函数执行两个配置文件即外部和内部边界如附图所示(contour.bmp)。然而,我只种乐趣是提取外边界在原始image.jpg标有黑色线条
有人能帮我如何提取只有外边界? ?
%将原料转换成二进制图像
rgb1 = imbinarize (h, 700);
显示亮度图像(rgb1);
rgb2 = ind2rgb (rgb1, jet (2));
显示亮度图像(rgb2);
grayimage = rgb2gray (rgb2);
显示亮度图像(grayimage);
边=边(grayimage);
显示亮度图像(边);

接受的答案

明星黾
明星黾 2021年6月1日
试试这个,
LD =负载(“h.mat”);
h = LD.h;
冲浪(h,“EdgeColor”,“没有”)
网格
级= 750;
[c, h] =轮廓(h,[1] *级);
网格
轴(“平等”)
:idx =找到(c(1) = =级);
k = 1:元素个数(idx)
范围= (idx (k) + 1): c (2, idx (k));
x {k} = c(范围);
y {k} = c(2、范围);
结束
持有
k = 1:1
情节(x {k}, {k})
结束
持有
网格
轴(“平等”)
幸运的是,外边界是整个第一轮廓。的 (x, y) 坐标是在 “x {1}” “y {1} ”。与水平可能会有所不同,所以可能会有更多的一个解决方案,这取决于什么是你想要的。。
也可以有其他的方式来做到这一点,但是这个工作。我检查它与原来的 轮廓 情节。我离开了分析步骤,这样你就可以看到我所做的。
6个评论
明星黾
明星黾 2021年6月2日
在外层循环,它可能是必要的 清晰的 或preallocate “x” “y” 每一次,只是后 “idx” 任务。
这将是结算:
清晰的x y
或preallocating:
x =细胞(大小(idx));
y =细胞(大小(idx));
预先配置是可取的,因为它创造更有效,更快的代码。
(我写的这种想法,只是发布数据,所以没有专门设计用于在一个循环中。预先配置都清楚现有的值 “x” “y” ,并创建一个单元阵列,可以比不preallocating更快。Preallocating通常在大约一个结果 20% 减少执行时间在接下来的循环而不是preallocating。)

登录置评。

答案(1)

湍流分析
湍流分析 2021年6月2日
实际上,这个想法是为了保留值与外边界为每个图像,预先配置擦除前一个迭代的结果,只保留最新的迭代
3评论

登录置评。

类别

找到更多的在红色的帮助中心文件交换

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!