scipy 如何使用Python测量 backbone 的长度

ivqmmu1c  于 5个月前  发布在  Python
关注(0)|答案(2)|浏览(66)

skeletonization应用于图像()后,

我想用python来测量最长的分支,或者说 backbone 的 Backbone.js 。ImageJ有几个工具可以完成这项工作,一个是Measure_Skeleton_length,另一个是AnalyzeSkeleton。有什么python工具或建议吗?

hec6srdp

hec6srdp1#

这是对最初问题的一个很晚的回复,但以防万一仍然需要的人可能最终会阅读这篇文章。有一个很棒的Python包用于分析骨骼,称为FilFinderpip install fil_finder),它优雅地解决了这个问题。下面是从他们的教程中采用的代码

import numpy as np
import cv2
import matplotlib.pyplot as plt
from fil_finder import FilFinder2D
import astropy.units as u

skeleton = ... #in numpy array format

fil = FilFinder2D(skeleton, distance=250 * u.pc, mask=skeleton)
fil.preprocess_image(flatten_percent=85)
fil.create_mask(border_masking=True, verbose=False,
use_existing_mask=True)
fil.medskel(verbose=False)
fil.analyze_skeletons(branch_thresh=40* u.pix, skel_thresh=10 * u.pix, prune_criteria='length')

plt.imshow(fil.skeleton, cmap='gray')
plt.contour(fil.skeleton_longpath, colors='r')
plt.axis('off')
plt.show()

字符串
其输出


的数据

dsekswqp

dsekswqp2#

我不知道python工具,但从算法的Angular 来看,这是一种方法:
1.检测所有极端像素(分支上的最后一个像素,因此只有一个相邻像素)
1.对于这些像素中的每一个,计算测地距离图。
然后你在Map计算过程中找到的最大距离将是你想要的距离。第1点是基本的编码,所以你可以在Python中完成,但你必须为第2点找到一个库。

相关问题