python - 将图像缩减为由一组点定义的路径

标签 python opencv scipy python-imaging-library scikit-image

我目前正在尝试将如下图所示的图像表示为点定义路径。每个“痕迹”都应该是一个单独的路径。 见下图 Picture 1

我现在想做的是在 python 中使用 scikit-image 和 scipy 来填充和骨架化图像。 见下图 Picture 2

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()

然而,骨架有许多曲线,我目前不知道如何将其清理成直线和角度,以便可以使用线端点来记录路径。我尝试过从 scikit 进行概率 Hough 变换以获得线条,但这些都与 lee 骨架的弯曲性质作斗争,并且完全遗漏了几何形状。

任何帮助将不胜感激,如果您有任何完全不同的想法或一些算法名称,也非常欢迎!

最佳答案

当我尝试减少字体中字母的粗细时,我遇到了同样的问题。我建议看一下侵 eclipse 算法(数学形态学)。该算法通常应用于二值图像(图像中存在两种颜色),因此这是一个图像处理问题。 This这篇文章可能会有所帮助。

关于python - 将图像缩减为由一组点定义的路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65538726/

相关文章:

python - 将 matlab 程序转换为等效的 python 代码

python - Tkinter显示其他窗口

python - 解包 SequenceMatcher 循环结果

c++ - 使用棋盘标定的相机标定

visual-c++ - 如何使用 OpenCV 从我的磁盘播放视频文件?

python - 如何 "zoom out"matplotlib 中的绘图,保持所有大小比例相同,但以英寸为单位减小大小?

python - 无法导入 Django。您确定它已安装并在您的 PYTHONPATH 环境变量中可用吗? --> WSGI.PY 文件

javascript - Django 模板中的 moment.js 日期

c++ - 使用OpenCv使用一系列图像在相机校准中计算本征估计误差和本征误差

python - Python 中大数的高斯核密度估计 (KDE)