如何解决skeleton_to_csgraph 坐标错误python
我正在使用 skeleton-to-csgraph() 来分析我获得的骨架,这个函数应该给我发回一些数据,其中包括矩阵中骨架所有点的所有坐标 [(N+ 1) x 2] 其中 N 为点数。但是,在一种情况下,此函数无缘无故地为我提供了一个带有一些错误的坐标矩阵。 有人知道错误可能来自哪里吗?
关于函数和包的更多信息在这里: https://jni.github.io/skan/
带网格,一个值为 1 或 0 的 int32 [200,100] ndarray。此链接中的文件: https://drive.google.com/drive/folders/12xwZBv3RKQ4Q802jXPAhtYZXHrsMytMl?usp=sharing
// custom annotation
@Target(ElementType.PARAMETER)
@Retention(RetentionPolicy.RUNTIME)
@interface AesEncrypted {}
// class: CustomRequestBodyAdvice
@Override
public boolean supports(MethodParameter methodParameter,Type targetType,Class<? extends HttpMessageConverter<?>> converterType) {
return methodParameter.hasParameterAnnotation(AesEncrypted.class);
}
// controller
@PostMapping("one")
String getDecrypted(@AesEncrypted @RequestBody Data data) {
return data.value;
}
像图片一样,我没有得到一个坐标的整数值
解决方法
遵循以下步骤: 注意:我在 jupyter notebook 上运行了这个,所以你会看到!安装开始时
!pip install git+https://github.com/jni/skan # install latest version github
加载数据并进行处理。
import numpy as np
from skimage.morphology import medial_axis
from skan import skeleton_to_csgraph
from skan import _testdata
from skan import draw
from matplotlib import pyplot as plt
grid = np.load('grid.npy') # this is the file you shared through google drive
skeleton,distance = medial_axis(grid,return_distance=True)
graph,coordinates,degrees = skeleton_to_csgraph(skeleton)
fig,ax = plt.subplots()
draw.overlay_skeleton_networkx(graph,image=skeleton,axis=ax)
fig,ax = plt.subplots()
draw.overlay_skeleton_2d(grid,skeleton,dilate=1,axes=ax);
,
在某些特定情况下,函数 skeleton-to-csgraph()
似乎存在问题。但是为了克服这个错误,下面的代码提供了你应该得到的结果:
a = np.where(skeleton == 1 )
b = np.array([a[0],a[1]]).transpose()
coordinates = np.vstack(([0,0],b))
with skeleton,numpy 数组包含你的骨架图像和坐标,你应该用 skeleton-to-csgraph()
获得的结果,它包含所有骨架点的坐标。
您遇到的问题是因为 skan 需要将结点像素折叠到它们的质心中以生成连贯的图形。有关详细信息,请参阅 https://doi.org/10.7717/peerj.4312/supp-2。抱歉,这没有得到更好的记录。我提出了一个问题,以在未来改进这一点:
https://github.com/jni/skan/issues/121
这个问题也有关系:坐标数组包含所有节点坐标,但也包含一些垃圾坐标:
https://github.com/jni/skan/issues/108
欢迎在github上继续讨论! ?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。