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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.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
Image processing 以特定角度计算轮廓点到轮廓的距离_Image Processing - Fatal编程技术网

Image processing 以特定角度计算轮廓点到轮廓的距离

Image processing 以特定角度计算轮廓点到轮廓的距离,image-processing,Image Processing,现在我有一组轮廓点。射线L从Pn开始,与水平轴成顺时针角度ALPHA。我想计算线的长度,它从Pn开始,到射线L与轮廓相交的点结束,在这种情况下是Pn-2和Pn-3之间的一个点。那么我如何才能高效快速地计算出这个长度呢?你可以只计算光线L,所有线段都由任何一对相邻的轮廓点组成 当然,您可能希望通过按距离排序到Pn或其他任何东西来优化此过程。根据计数(凹面形状?)可能有多个交点,因此您必须选择正确的交点(内部、外部……) 除了计算交点,您还可以绘制轮廓和光线(例如),并使用逻辑and找到交点。由于交

现在我有一组轮廓点。射线
L
Pn
开始,与水平轴成顺时针角度
ALPHA
。我想计算线的长度,它从
Pn
开始,到射线
L
与轮廓相交的点结束,在这种情况下是
Pn-2
Pn-3
之间的一个点。那么我如何才能高效快速地计算出这个长度呢?

你可以只计算光线
L
,所有线段都由任何一对相邻的轮廓点组成

当然,您可能希望通过按距离排序到
Pn
或其他任何东西来优化此过程。根据计数(凹面形状?)可能有多个交点,因此您必须选择正确的交点(内部、外部……)


除了计算交点,您还可以绘制轮廓和光线(例如),并使用逻辑and找到交点。

由于交点的数量可能是线性的,因此输出的大小也可能是线性的,因此没有任何算法可以在比线性时间更快的时间内解决此问题。我可以建议以下算法,这是非常方便和高效的实现:

  • 将点转移到坐标系x',y',其中心为Pn,且x'平行于L。(实际上,只需计算y'坐标。这需要每个点两次乘法和两次加法)
  • 现在通过搜索y'坐标改变符号的相邻索引来查找所有相交线段
  • 仅计算这些线段的交点和长度

谢谢您的建议。我尝试过@Ophir Gvirtzer方法,它很有效。您的第一个提示可能很耗时。第二个我尝试过,但发现很难实现(对于每个点,计算点到点的角度Pn并对它们进行排序,然后找到与ALPHA角度最近的一个)。最后一个似乎是快速和最优的,但我使用的是MATLAB,我不知道任何函数可以在图像中画一条线,然后保存它。此外,coutour点是8连通的,绘图线也是8连通的,因此它们之间可能没有交点。