【发布时间】:2018-01-18 13:39:51
【问题描述】:
我有一个 numpy 数组,描绘了 一个像素宽、离散、连接的曲线。该曲线是通过图像处理的骨架化操作得到的。我试图在任意点找到上述曲线的曲率,以检测 bends/kinks(曲率值较高)。
我尝试使用general formula for curvature 实现上述功能。但是,由于这是一条像素化的离散曲线,其生成函数未知,因此我尝试使用 numpy gradient 代替。
我在上面看到的问题是,由于曲线是一个像素宽,所以在任何一点上,斜率只能是 0、1 或 无穷大中的一个。结果,我得到的曲率值大多没有意义或无用。
我正在寻找一些关于从哪里开始以获得平滑曲线的建议,以便我可以以更有意义的方式计算曲率。有人可以建议我可以应用的任何数学运算或卷积来实现相同的目标吗?下面是我拥有的具有代表性的二进制图像。
P.S.我对图像处理非常非常陌生,因此参考标准算法(在数学书籍中)或库实现会很有帮助。
【问题讨论】:
-
要求澄清一下:当你说你“有一个 numpy 数组描绘一个像素宽......曲线”时,你指的是包含骨架化图像的二维数组,即你发布的图片?或者你的意思是你有一个一维数组,其中包含你已经从二维图像中的骨架像素中提取的片段?
-
@LWixson:numpy 数组是我发布的图像。
-
您可以尝试circle hough transform,其最大半径等于您的截止曲率半径,然后寻找峰值。
-
我在this document 中找到了一些可能的算法,并打算尝试一下。
标签: python numpy image-processing computer-vision curve-fitting