我正在使用
现在,我想检查之前找到的斑点是否在这些区域内,并筛选出不在任何一个区域内的斑点。然后,我只想绘制那些在区域内的斑点。
我试图使用
所以,我的工作是什么。
scikit-image
来检测图像上的特定区域。我已经成功使用blob_doh
函数检测到了斑点。同时,我也使用Canny边缘检测器
和标签法找到了区域。现在,我想检查之前找到的斑点是否在这些区域内,并筛选出不在任何一个区域内的斑点。然后,我只想绘制那些在区域内的斑点。
我试图使用
numpy.all
和numpy.any
来实现这一点,但我可能对这些函数的工作方式有所误解。以下是我的代码:for region in regions:
# list of pixels' coords in a region
pixel_array = region.coords
# check if a blob is inside the region
for blob in blobs_doh:
y, x, r = blob
if np.any(pixel_array == [x, y]):
c = plt.Circle((x, y), r, color='red', linewidth=1, fill=False)
minr, minc, maxr, maxc = region.bbox
rect = mpatches.Rectangle((minc, minr), maxc - minc, maxr - minr, fill=False, edgecolor='lime', linewidth=1)
# draw blobs and regtangles
ax.add_patch(c)
ax.add_patch(rect)
break
所以,我的工作是什么。
region
是一个形状为[[a1, b1], [a2, b2], [a3, b3], ..., [an, bn]]
的数组,而 blob
是一个形状为[c, d]
的数组。我的想法是检查是否有任何子数组在region
中等于blob
。当然,我可以通过循环遍历来做到这一点,但我认为还有更有效的方法,并尝试使用numpy.all
和numpy.any
。不幸的是,我不能正确地使其工作。行np.any(pixel_array == [x, y])
仅检查blob
的第一个元素,而不是整个子数组[x, y]
。我也尝试了使用axis
参数的.any
和.all
的不同组合:np.any(pixel_array == [x, y], axis = 1).all(axis = 0)
但是我没有得到任何可接受的结果。
请帮忙完成这个任务。有什么更好的方法来执行这样的检查吗?
谢谢。