本周文件交换选择

我们最好的用户反馈

将采样多边形

汪东城他本周的选择是多边形简化通过彼得骨

继续我最近的一篇文章“平滑曲线连接点”,我发现了Peter写的这个新条目,它可以很好地与hobbysplines跟踪对象的函数。

以下是我将如何使用它。让我们从最初的变形虫图像开始。

Im = imread(“amoeba.png”);imshow (im)

我将把这个灰度图像转换为黑白,并使用一个名为bwboundaries图像处理工具箱自动描摹出边界。

Im2 = im2bw(im);边界= bwboundaries(~im2,“noholes”
边界= [1696x2 double] [30x2 double] [33x2 double] [111x2 double] [31x2 double] [34x2 double]

请注意,bwboundaries为找到的每个边界返回一个单元格数组。在这个例子中,它找到了6个边界。在这个讨论中,我只关注最大的边界,即具有最多点数的边界。我可以看到它是第一个元素。问大家一个问题:如何通过编程找到最大的边界?有多种方法可以做到这一点,从基本的MATLAB编程到高级图像处理。发表你的回复下面

最大=边界{1};持有情节(大(:,2),大(:1),“r”“线宽”, 2)

现在,假设我不关心细节(例如每根毛),只想得到变形虫的一般形状。我可以对数据进行一些过滤或平滑,或者简单地对边界点进行下采样。彼得的reduce_poly通过自动删除“最不重要”的点来减少点数。例如,我可以要求100分。

Numpts = 100;Largest2 = reduce_poly(最大',numpts)';imshow (im)情节(largest2 (:, 2), largest2 (: 1),“r”“线宽”, 2)

好多了,但对我来说还是太多了。我可以修改numpts然后重新运行代码块。,我可以增加一个值并运行该节交互。

我同意Numpts = 20在这种情况下。

Numpts = 20;Largest2 = reduce_poly(最大',numpts)';imshow (im)情节(largest2 (:, 2), largest2 (: 1),“r”“线宽”, 2)

现在,我要用hobbysplines用平滑的样条连接这些点。

将边界点转换为爱好曲线所需的格式PTS = fliplr(largest2(1:end-1,:));imshow (im) hobbysplines (num2cell(2分),...“线型”, {“线宽”2},...“颜色”“红色”);

评论

让我们知道你的想法在这里或者留下评论彼得。




发布与MATLAB®R2013b

|
  • 打印
  • 发送电子邮件

评论

如欲留言,请点击在这里登录您的MathWorks帐户或创建一个新帐户。