Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.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
Algorithm 二维/三维中两条线段的平均距离_Algorithm_Opencv_Cluster Analysis_Linear Algebra_Object Detection - Fatal编程技术网

Algorithm 二维/三维中两条线段的平均距离

Algorithm 二维/三维中两条线段的平均距离,algorithm,opencv,cluster-analysis,linear-algebra,object-detection,Algorithm,Opencv,Cluster Analysis,Linear Algebra,Object Detection,简介:我正在进行一项图像处理任务,试图找到一个物体的两个边界,可以用两条直线段来描述。我正在使用hough线变换的一些变体来查找目标图像中的线段。通过hough变换可以在对象的每个边界上找到多条线(共享一个非常小的角度),并且可能会发现一些线与图像中某个位置的对象边界不对应(误报)。 由于对象的两个边界之间的空间关系(角度)大致已知,我想我应该使用某种聚类方法来排除误报,并从每个边界找到的多个线段中计算平均线段 方法:为了对线段进行聚类,需要为每个线段的位置定义一个相似性度量。我想用两条线段之间

简介:我正在进行一项图像处理任务,试图找到一个物体的两个边界,可以用两条直线段来描述。我正在使用hough线变换的一些变体来查找目标图像中的线段。通过hough变换可以在对象的每个边界上找到多条线(共享一个非常小的角度),并且可能会发现一些线与图像中某个位置的对象边界不对应(误报)。 由于对象的两个边界之间的空间关系(角度)大致已知,我想我应该使用某种聚类方法来排除误报,并从每个边界找到的多个线段中计算平均线段

方法:为了对线段进行聚类,需要为每个线段的位置定义一个相似性度量。我想用两条线段之间的角度元组和两条线段之间的某种平均距离。这也是我想知道最好的方法是什么来计算这个平均距离度量。 一种较为简单的方法是在离散位置对每个线段进行采样,并测量每个采样点到另一线段的最近距离(L2),将距离相加,然后将总和除以采样数。我相信有更聪明的方法可以做到这一点,有什么建议吗


提示:我在C++中使用了几个LGPL/BSD许可工具包(OpenCV,Boost),所以在Mathematica中有一些特殊的数学运算,比如积分,很难实现。< / P> < P>假设我正确地理解了问题,下面的解决方案是什么? 当你有线的时候,也许你可以试着确定这些线的起点和终点。计算这些值时,只需测量两个起点和两个终点的距离,然后计算距离的平均值


我假设线是像素值。起点和终点可以通过查找直线像素的x和y的最大值和最小值来计算。

不是平均距离,而是最小距离如何?有一个关于如何计算的扩展讨论。

给定一组n条线段,第i条线段从点(x0i,y0i)延伸到(x1i,y1i):

看第一条线段,看它是更接近垂直还是水平。如果abs(y00-y10)>abs(x00-x10),则设置标志并交换x和y坐标。这将防止无限坡度问题。(我想如果两条直线段是垂直的,您可能仍然会遇到问题,但如果您的直线段有那么大的不同,则平均线没有太多意义。)

使用所有2n个端点,计算直线的最小二乘拟合

y=a*x+b

对于每个端点,计算abs(a*xij+b-yij)。这将测量平行于该端点的y轴到平均线的距离。我猜,如果这大于某个数量,您可以拒绝该线段,并在没有该线段的情况下重复拟合。如果小于两个像素,则可以使用拟合坐标替换y坐标,以将线段的该端移动到拟合线


如果设置了交换标志,则交换x和y。

好点。但在我的特殊情况下,边界形成一个角。因此,两侧的线段可能在拐角处相交。此外,假阳性可能会在边界处越过发现的线。在这种情况下,线段的距离可能不是聚类的良好度量。