使用Python来挑选图像中物体上不同部分的形态

问题描述 投票:0回答:1

我有一个图像分析/形态学问题,我需要一个基于 python 的解决方案。我是一名天文学家,试图从我的图像中掩盖宇宙射线轨迹(条纹长度从 1 到 100 像素不等)。我使用带有阈值的过滤技术来挑选曲目。它工作得很好,除非轨道遇到一个物体(恒星或星系)。正如你在下面看到的,我最终在我的轨道上出现了斑点(如左图中的那个)和环(如右图中的那个)。

streak beside star streak through galaxy

在这些图像中,您可以忽略波浪线和“X”,黑框是我的蒙版像素。我想做的是将轨道(长条纹)与斑点和环分开(仅供参考,环出现是因为过滤提高了对象边缘的重要性)。所以我的问题是如何对掩模某些部分的形态进行分类并将斑点/环与轨道分开。

如果这样可以更轻松地回答问题,这里是左侧图像的掩码:

spots=array([[False,False,False,False,False,False,False,False,False,False,False],
   [False,False,False,False,False,False,False,False,False,False,False],
   [False,False,False,False,True ,False,False,False,False,False,True ],
   [False,False,True ,True ,True ,True ,False,False,False,True ,False],
   [False,False,True ,True ,True ,True ,False,False,True ,True ,False],
   [False,False,True ,True ,True ,True ,False,True ,True ,False,False],
   [False,False,False,True ,True ,True ,True ,True ,False,False,False],
   [False,False,False,False,False,True ,True ,True ,False,False,False],
   [False,False,False,False,False,True ,True ,False,False,False,False],
   [False,False,False,False,True ,True ,False,False,False,False,False],
   [False,False,False,False,True ,False,False,False,False,False,False],
   [False,False,False,True ,False,False,False,False,False,False,False]])

理想情况下,我希望对轨迹进行屏蔽,当它们与某个对象完全相交时(如右图所示),我想通过对象屏蔽整个轨迹,而不屏蔽对象的部分不受轨道影响。所以我希望最终的蒙版结果看起来像这里显示的白色轨迹:

wanted star mask wanted galaxy mask

谢谢! -亚当

python image-processing astropy mathematical-morphology
1个回答
0
投票

如果我正确理解了问题,您会希望保留斑点,同时去除绕过或穿过物体的长链。我建议的最简单的测试是使用一个简单的形态开口(侵蚀然后膨胀),其半径大于线的厚度但小于斑点的半径。示例可以参见here。 当然,可以在灰度中尝试开口,这比仅在单个水平集阈值上操作会产生更好的结果。我想这可以很容易地在 Scikit 中找到。

© www.soinside.com 2019 - 2024. All rights reserved.