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
C++ 匹配线段-稳健快速的方法_C++_Image Processing_Vector_Pattern Matching_Computational Geometry - Fatal编程技术网

C++ 匹配线段-稳健快速的方法

C++ 匹配线段-稳健快速的方法,c++,image-processing,vector,pattern-matching,computational-geometry,C++,Image Processing,Vector,Pattern Matching,Computational Geometry,我有从单个图像数据中提取的二维线段,希望与从其他源中提取的三维线段相匹配。为此,首先,我想使用共线方程(我知道外部方向参数)将3D线段投影到图像空间。由于两条线段都在同一坐标系中,现在我想找到与该直线最匹配的线段 我正在寻找一种快速而健壮的算法来匹配相应的线段,以便以后更新我的三维线段 如果有人对此有想法,请给出一些建议。提前感谢。您遇到的问题与类似。因此,令人惊讶的是,它的解决方案可能也很相似 简单的方法是将每个2D段与每个3D段进行比较,最佳匹配是与实际长度和位置进行比较时最接近预测长度和位

我有从单个图像数据中提取的二维线段,希望与从其他源中提取的三维线段相匹配。为此,首先,我想使用共线方程(我知道外部方向参数)将3D线段投影到图像空间。由于两条线段都在同一坐标系中,现在我想找到与该直线最匹配的线段

我正在寻找一种快速而健壮的算法来匹配相应的线段,以便以后更新我的三维线段


如果有人对此有想法,请给出一些建议。提前感谢。

您遇到的问题与类似。因此,令人惊讶的是,它的解决方案可能也很相似

简单的方法是将每个2D段与每个3D段进行比较,最佳匹配是与实际长度和位置进行比较时最接近预测长度和位置的匹配。实际为二维线段。这类似于O(AB),其中A是2D段的数量,B是3D段的数量

通过按字典顺序对2D线段进行排序,您可以在一定程度上加快该方法的速度,然后使用我在本文中提到的同一种算法来获得x值在某个范围内的所有线段,这些线段的x值在一条或两条线段端点*的预期x值之内。在最坏的情况下,您仍然可能遇到O(AB),但平均时间应该更接近O(B log A)。虽然,根据你所说的,你是否可以使用这种方法还不清楚,所以这一段应该更多地被认为是一个提纲

比O(B log A)或O(A log B)更快的速度可能要求这是一个经过充分研究的问题

  • 如果按字典顺序对2D端点进行排序,则可能不需要1个端点

您看到的问题与。因此,令人惊讶的是,它的解决方案可能也很相似

简单的方法是将每个2D段与每个3D段进行比较,最佳匹配是与实际长度和位置进行比较时最接近预测长度和位置的匹配。实际为二维线段。这类似于O(AB),其中A是2D段的数量,B是3D段的数量

通过按字典顺序对2D线段进行排序,您可以在一定程度上加快该方法的速度,然后使用我在本文中提到的同一种算法来获得x值在某个范围内的所有线段,这些线段的x值在一条或两条线段端点*的预期x值之内。在最坏的情况下,您仍然可能遇到O(AB),但平均时间应该更接近O(B log A)。虽然,根据你所说的,你是否可以使用这种方法还不清楚,所以这一段应该更多地被认为是一个提纲

比O(B log A)或O(A log B)更快的速度可能要求这是一个经过充分研究的问题

  • 如果按字典顺序对2D端点进行排序,则可能不需要1个端点

您应该有一个投影矩阵,可以将3d世界坐标转换为屏幕坐标。你能发布更多关于这方面的信息吗?@Felice Pollano:事实上,我知道内部和外部方向参数。所以,我的想法是使用col线性方程将3D坐标转换为图像坐标,反之亦然。然后我有2D或3D线段。你应该在某个地方有一个投影矩阵,可以将3D世界坐标转换成屏幕坐标。你能发布更多关于这方面的信息吗?@Felice Pollano:事实上,我知道内部和外部方向参数。所以,我的想法是使用col线性方程将3D坐标转换为图像坐标,反之亦然。然后我有2D或3D线段。@M C:谢谢您的回复。如果我说,如果我想匹配从两个数据源或两个图像中获得的二维线段,那么哪种方法最好,因为即使是两条对应的直线也可能不在相同的位置和长度,方向略有不同,等等。thanksI更多的是假设您将分别处理每个图像。所以时间变成O(A_1B+A2B)和O(B log A1+B log A2)。如果您已经组合了这些段,则应该能够通过寻找每个方向的最佳拟合,在O((A1+A2)B)和O(B log(A1+A2))中将它们分开。尽管在这种情况下,最合适的零件可能更难。在任何情况下,这两种算法都可能工作得很好,不过如果方向不正确,速度更快的算法可能更容易出错。三维线段可能比二维线段多。虽然线段范围的结果大小可能更大。虽然总的来说,如果3D点的数量显著增加,比如(A1+A2)