2024-05-23 13:56:41 发布
网友
有没有用python实现的函数或库来使用切角距离变换来计算图像骨架(骨架化)?在
以下链接是倒角距离变换的示例: http://www.inf.u-szeged.hu/~palagyi/skel/chamfer34.gif
谢谢你
你的问题措辞不清楚。切角距离是两条曲线或两幅二值图像之间的距离
假设你有两条曲线。在
计算切角变换的最简单方法是将曲线A转换为图像中的Distance Transform。然后使用距离计算曲线A中每个点与曲线B点之间的最近距离
换句话说,两条曲线或二值图像之间最近点距离的总和。在
import numpy as np import cv2 # for Chamfer Distance between two curves p_a - n x 2 numpy array p_b - n x 2 numpy array image_shape - (h, w) tuple def chamfer(p_a, p_b, image_shape): mask = np.ones(image_shape[:2], dtype=np.uint8) * 255 mask[p_a[:, 1].astype(int), p_a[:, 0].astype(int)] = 0 dist = cv2.distanceTransform(mask, cv2.DIST_L2, 3, dstType=cv2.CV_32F) return dist[p_b[:, 1].astype(int), p_b[:, 0].astype(int)].sum() chamfer_dist = 0.5 * (chamfer(p_a, p_b, image_shape) + chamfer(p_b, p_a, image_shape)
另一个选择是使用Hausdorff Distance,这在某些方面被认为是更好的
不确定这是否是您想要的,但是我有一个有效的TEASAR骨架化算法的实现,它使用精确的欧几里德距离变换:https://github.com/seung-lab/kimimaro
你的问题措辞不清楚。切角距离是两条曲线或两幅二值图像之间的距离
假设你有两条曲线。在
计算切角变换的最简单方法是将曲线A转换为图像中的Distance Transform。然后使用距离计算曲线A中每个点与曲线B点之间的最近距离
换句话说,两条曲线或二值图像之间最近点距离的总和。在
示例代码
另一个选择是使用Hausdorff Distance,这在某些方面被认为是更好的
不确定这是否是您想要的,但是我有一个有效的TEASAR骨架化算法的实现,它使用精确的欧几里德距离变换:https://github.com/seung-lab/kimimaro
相关问题 更多 >
编程相关推荐