Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用python来识别图像中对象上不同部分的形态_Python_Image Processing_Morphological Analysis_Mathematical Morphology_Astropy - Fatal编程技术网

使用python来识别图像中对象上不同部分的形态

使用python来识别图像中对象上不同部分的形态,python,image-processing,morphological-analysis,mathematical-morphology,astropy,Python,Image Processing,Morphological Analysis,Mathematical Morphology,Astropy,我有一个图像分析/形态学问题,需要一个基于python的解决方案。我是一名天文学家,试图掩盖我的图像中的宇宙射线轨迹(从1到100像素长的条纹)。我使用带有阈值的过滤技术来挑选轨迹。除了轨迹撞到物体(恒星或星系)时,它工作得非常好。正如你在下面看到的,我的轨迹上有斑点(如左图所示)和圆环(如右图所示) 在这些图像中,你可以忽略曲线和“X”,而黑匣子是我的遮罩像素。我想做的是将轨迹(长条纹)与斑点和圆环分开(仅供参考,圆环的出现是因为过滤提高了对象边缘的重要性)。因此,我的问题是如何对面具某些

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

在这些图像中,你可以忽略曲线和“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]])
理想情况下,我希望对轨迹进行遮罩,当轨迹与对象完全相交时,如右图所示,我希望遮罩整个轨迹,穿过对象,而不遮罩对象中不受轨迹影响的部分。所以我希望最终的蒙面结果看起来像这里显示的白色轨迹:

谢谢!
-亚当

如果我正确理解了这个问题,你会希望在移除穿过物体的长链时保留斑点。我建议的最简单的测试是使用一个简单的形态开口(腐蚀然后扩张),其半径大于股线的厚度,但小于水滴的厚度。可以看到一些例子。
当然,可以在灰度中尝试开口,这将产生比仅在单个级别设置阈值上操作更好的结果。我想这很容易找到。

你试过代码了吗?@Dannnno是的。事实上,我已经能够用pymorph识别这些环了。真正有用的是一个函数,它可以告诉我一个物体所能容纳的最大(填充)圆的半径。宇宙射线轨迹总是1-2像素宽吗?@Junuxx通常是,但不总是,有时它们与其他轨迹相交,或者轨迹一分为二,等等。