我目前正在尝试将一个像下面这样的图像表示为一个点定义的路径。每个“轨迹”都应该是一个单独的路径。* 见下图 * x1c 0d1x
我现在要做的是在python中使用scikit-image和scipy来填充和 backbone 化图像。* 见下图 *
import os
from skimage import io, img_as_bool
from scipy import ndimage
from skimage.morphology import skeletonize
from skimage.util import invert
from matplotlib import pyplot as plt
filename = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'traces.png')
traces = io.imread(filename, True)
inverted = invert(traces)
boolimage = img_as_bool(inverted)
image = ndimage.binary_fill_holes(boolimage)
skeleton = skeletonize(image, method='lee')
plt.imshow(skeleton, cmap=plt.cm.gray)
plt.axis('off')
plt.show()
然而, backbone 有许多弯曲的线,我目前不知道如何将其清理为直线和Angular ,以便线的端点可以用于记录路径。我尝试了从scikit中进行概率Hough变换来获得线,但这些都与lee backbone 的弯曲性质作了斗争,完全忽略了几何形状。
如有任何帮助,我们将不胜感激,如果您有任何完全不同的想法或一些算法名称,我们也非常欢迎!
1条答案
按热度按时间wkftcu5l1#
当我试图减少字体中字母的粗细时,我也遇到了同样的问题。我建议你看看erosion算法(数学形态学)。该算法通常应用于二值图像(一个图像中存在两种颜色),因此这是一个图像处理问题。This文章可能会有所帮助。