Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.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/0/svn/5.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_Path_Shapes_Quantization - Fatal编程技术网

Algorithm 线段路径差异的量化算法

Algorithm 线段路径差异的量化算法,algorithm,path,shapes,quantization,Algorithm,Path,Shapes,Quantization,假设我有两条线段路径,例如下面示例的子集。我如何量化它们之间的差异 |__ \_ __ /\ \/ | _ 这两条路径可能有不同数量的段,并且每个段的长度和它们之间的角度是可变的 我想最好建立一个坐标系,并将线段定义为节点和边。这种差异可能可以通过将一个转换为另一个所需的操作来量化,类似于该算法。不幸的是,操作空间很大。有什么想法吗?谢谢 您可以将它们绘制成固定大小的图像,然后使用欧几里德距离来比较图像 或者你可以测量总长度,把角度的绝对值和符号角度的绝对值相加,作为一种测量。如果您需要的话,基

假设我有两条线段路径,例如下面示例的子集。我如何量化它们之间的差异

|__ \_ __ /\ \/ | _ 这两条路径可能有不同数量的段,并且每个段的长度和它们之间的角度是可变的


我想最好建立一个坐标系,并将线段定义为节点和边。这种差异可能可以通过将一个转换为另一个所需的操作来量化,类似于该算法。不幸的是,操作空间很大。有什么想法吗?谢谢

您可以将它们绘制成固定大小的图像,然后使用欧几里德距离来比较图像

或者你可以测量总长度,把角度的绝对值和符号角度的绝对值相加,作为一种测量。如果您需要的话,基于此的东西将具有对形状方向不变的优良特性


你如何量化它在某种程度上取决于你为什么要量化它们之间的差异。

我将比@awoodland指出的更进一步:你如何量化它完全取决于你为什么要量化差异

您是否希望得到一个至少是唯一的,可能是唯一的数字,如线段路径的哈希代码?或者你是想量化线段路径,比如说,这条路径更复杂或更长,或者比那条路径有更锐角

如果您想创建一个哈希代码,我建议创建两个32位CRC或类似的东西:一个用于段长度,一个用于角度。计算完这些CRC后,将它们放在一个64位值中,角度在高32位,长度在低32位。根据段的数量,也许可以使用单个CRC值:对于每个段,添加长度,然后添加长度与下一段之间的角度

请注意,上面可能会为每个路径提供一个唯一的编号,但不能保证


如果要量化线段路径的复杂性。。。我没有很多想法。

你可以看看这篇文章:

在本文中,我们使用kAS作为线段对的一种泛化:您可以将多个线段相互连接以进行对象检测。我们为这些段集引入一个描述符,您可以使用它来描述对

我们的描述符不是旋转不变的,因此可能不适合您。

如果您使用操作:

添加角点和线段 删除角和段 拉伸段与重量差 弯曲拐角处的重量差 您仍然可以在n^2时间内使用Levenshtein距离

按照以下方式对段进行编码[段,角]*。因此,这将是:

[length, rotation] [length, rotation]...
其中,旋转与线段指向方向相对应

计算拉伸和弯曲是非常明显的。值[i-1,j-1]+拉伸+弯曲

正在计算添加/删除。增加值[i,j-1]+增加成本,移除值[i-1,j]+移除成本