Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 如何使用MATLAB找到两个斑点(轮廓/闭合曲线)之间的最短路径?_Algorithm_Matlab_Image Processing - Fatal编程技术网

Algorithm 如何使用MATLAB找到两个斑点(轮廓/闭合曲线)之间的最短路径?

Algorithm 如何使用MATLAB找到两个斑点(轮廓/闭合曲线)之间的最短路径?,algorithm,matlab,image-processing,Algorithm,Matlab,Image Processing,bwlabel可用于获取图像中断开连接的对象: [L Ne] = bwlabel(image); 如何计算两条断开的闭合曲线之间的最短路径 是否有实际(非理论)解决方案?建议1 尝试提取要连接的对象的周长像素的坐标,并将其用作图形中的节点。然后使用查找集合之间每对之间的最短路径。这有效地解决了使用*的所有对问题,但将其限制为感兴趣的节点(从一个对象中的节点到另一个对象中的路径) 建议2(较简单) 另一个想法(未测试)是计算每个blob质心之间的最短路径(regionprops可用于计算质

bwlabel
可用于获取图像中断开连接的对象:

[L Ne] = bwlabel(image);   
如何计算两条断开的闭合曲线之间的最短路径

是否有实际(非理论)解决方案?

建议1 尝试提取要连接的对象的周长像素的坐标,并将其用作图形中的节点。然后使用查找集合之间每对之间的最短路径。这有效地解决了使用*的所有对问题,但将其限制为感兴趣的节点(从一个对象中的节点到另一个对象中的路径)

建议2(较简单) 另一个想法(未测试)是计算每个blob质心之间的最短路径(regionprops可用于计算质心),并查看哪个周长像素与路径相交。当然,如果质心在斑点内,这可能会起作用,但非凸斑点会让事情变得一团糟。这将算法的复杂度降低到水滴的数量,而不是周长像素的数量(可能非常大)


另外,如果建议2对您有效,您可以使用它来计算图像中所有斑点之间的最短路径。

可能是我使问题复杂化了。你能贴张照片吗?我想知道你所说的“最短路径”是什么意思。你可以使用MATLAB内置图像的轮廓
coins.png
,基本上是几个断开的圆。你需要计算所有对象之间的最短路径还是两个对象之间的最短路径?@Jacob,我简化了我的问题,有实际的解决方案吗?如何通过
bwlabel
获得接触,并在不同接触之间迭代每个点?您能澄清一下吗?是要连接两个任意断开连接的对象,还是要连接所有对象以形成一个对象?如果是后者,您是否在寻找使这些连接的总路径长度最小化的连接集?如果是这样,那就是旅行推销员的问题;搜索它。这是后者,但不完全是,推销员的问题是寻找孤立点之间的最短路径,但这里是寻找轮廓/多边形之间的最短路径。你试过bwmorph吗?它有像膨胀和侵蚀这样的操作,包括一个叫做close的操作,它先膨胀,然后侵蚀。我看了一下
bwmorph
,它没有生成未连接对象的功能connected@user198729当前位置仍然是完全相同的问题。每组两个物体之间的距离是一个数字;你想找到一种连接等高线s.t.的方法,你要最小化这些数字的总和。这个数字与质心之间的距离不同,这一事实不会改变您将使用的算法。你的问题真的是如何找到两个水滴之间的距离而不是两个点粒子之间的距离吗?