在OpenCV python中测量点到遮罩的距离
假设我有一个物体的面具和一个点。我想找到与该点最近的对象遮罩点 例如,在我的图形中,有一个对象,图像中的蓝色形状(假设内部也是对象遮罩的一部分)。红色的点是我想要找到离物体遮罩最近的距离的点 因此,我想找到一条粗绿线,因为它是到面具的最短距离,而不是其他的(粉色、橙色等)。我可以使用以下方法之一执行此操作:在OpenCV python中测量点到遮罩的距离,python,algorithm,opencv,image-processing,mask,Python,Algorithm,Opencv,Image Processing,Mask,假设我有一个物体的面具和一个点。我想找到与该点最近的对象遮罩点 例如,在我的图形中,有一个对象,图像中的蓝色形状(假设内部也是对象遮罩的一部分)。红色的点是我想要找到离物体遮罩最近的距离的点 因此,我想找到一条粗绿线,因为它是到面具的最短距离,而不是其他的(粉色、橙色等)。我可以使用以下方法之一执行此操作: 一种低效的方法是使用(蛮力)查找所有像素到该点的距离 另一种方法是用ε角差创建许多朝向遮罩的线,并找到该线上最近的点,这也不是很好 我可以在边上创建线,并在对象边界上找到每条线的最近点。
- 一种低效的方法是使用(蛮力)查找所有像素到该点的距离
- 另一种方法是用ε角差创建许多朝向遮罩的线,并找到该线上最近的点,这也不是很好
- 我可以在边上创建线,并在对象边界上找到每条线的最近点。(这可能不像我想的那么容易,首先我需要找到外部边界,等等)
但这些方法都不是优雅的。我想知道确定这一点的更优雅、最有效的方法是什么?您可以进行某种二进制搜索:
-
让我们称你的观点并考虑以p拾取遮罩上的任意点M,穿过M的圆将与遮罩相交
- 现在重复直到收敛,若圆与遮罩相交,则减小半径,否则增大半径(按二进制搜索类型)
仔细想想,我很喜欢这个主意。但是,如何判断圆是否与遮罩相交?有没有一个简单的方法呢?只要计算2个半圆y=f(x)的方程,然后在上面移动像素。太好了,我今天会检查这个。