如何从Canny边缘检测结果中提取曲线? 最好在python中

问题描述

我使用skimage对图像进行Canny边缘检测,并获得了以下结果。

Canny edge detection result

我注意到结果只是一个布尔数组,并且形状被很好地定义为曲线。我想知道以下事情是否可行,以及是否有可用的工具。

  1. 我想从该图像中提取“曲线”。通过曲线,我的意思是一系列元组(x,y)代表图像上图像为True的点,并连接到相邻点(具有任意(1或2)像素公差)。在此图像中,我认为对1像素宽容过程的期望是list,其中包含2条开放曲线和1条奇点(从左上角开始),还有一条闭合曲线(从右下角开始)。如果将公差提高到2,将是2条开放曲线和1条闭合曲线。您可能会认为结果的格式与contour中的matplotlib相似。

  2. 我想平滑从上方获得的曲线,因为它会被像素化。我假设对具有周期性边界条件(对于闭合曲线)或恒定边界条件(对于开放曲线)的每条曲线中的xy数组应用盒车平滑将达到目的。 / p>

  3. 我的示例在曲线中没有任何“分叉”或“分叉”点,但是我想知道在Canny边缘检测算法中是否可能存在。如果他们这样做,那么我想要一种将其子曲线打包为list方法,以便结果具有一定的层次结构。

  4. 此外,尽管我提到我的图片没有任何分叉的特征,但如果您仔细观察左上角的下部开放曲线,曲线上会伸出一个点(以表示该点的曲率)边缘,我认为)。我会将其视为一条连续曲线,而不是一条从较大曲线的中间分支出来的线。 (尽管,老实说,我不确定哪种行为在逻辑上最有意义。)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)