每一个白色像素(像素值!=0),我想计算从这个像素到一组点的最小距离。点集是外部轮廓上的点,它将被存储为一个numpy数组[x\u val y\u val]。我在考虑这样做:
...
def calcMinDist(dilPoints):
...
#returns 2d array (same shape as image)
def allMinDistDil(dilMask):
dilPoints = getPoints(dilMask)
...
return arrayOfMinValues
#more code here
blkImg = np.zeros(maskImage.shape,dtype=np.uint8)
blkImg.fill(0)
img_out = np.where(differenceM,allMinDistDil(dilatedMask),blkImg)
....
但问题是,为了计算从一个像素点到一组点的最小距离(从getPoints函数获得),我需要传入像素点(index?)也。但是(如果我的理解是正确的,)对于这个where函数,它只检查第一个参数中的真值和假值……所以我编写np.哪里()函数不起作用。在
我考虑过使用嵌套的for循环来解决这个问题,但是我尽量避免使用for循环,因为我有很多图像要处理。在
我可以征求一下解决这个问题的建议吗?任何帮助将不胜感激!在
而不是使用np.哪里()函数要查找不为零的特定像素,我应用了:
获取值不是零的点。对于这个点数组,我迭代了这个数组中的每个点,并将它与掩码的边界点数组进行了比较,并使用了:
^{pr2}$求点与边界点集之间的最小距离。在
(没有足够的代表来评论)至于你可能想要的距离scipy.spatial.distance.cdist( X, Y )。您可以使用以下方法计算最小距离:
至于np.哪里你能提供更多关于你的数据结构的信息吗?大多数时候,一个简单的布尔掩码就可以完成这项工作。。。在
相关问题 更多 >
编程相关推荐