5个坐标点构成的几何图形,如何进行特征提取与匹配?

发布于 2022-09-03 00:08:06 字数 431 浏览 26 评论 0

背景:

系统中有N个不规则的几何图形,每个图形都是由5个坐标(X1,Y1),(X2,Y2),(X3,Y3),(X4,Y4),(X5,Y5)构成的,每个图形的形状都是唯一的

clipboard.png

需求:

随意输入一组图形的5个坐标数据,如何检测这个图形是否在系统中已经存在,或者说匹配度达到系统预设的值(如99.99%匹配)?

需求挖掘

能不能对系统给定的原点进行特征提取,生成一串唯一的给geohash值,通过比较hash值之间的距离就可以得出相似度?

不管位置或大小,只要形状类似就是匹配成功

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

后知后觉 2022-09-10 00:08:06
<?php
/**
 * Created by PhpStorm.
 * User: liuchao
 * Date: 16/5/9
 * Time: 22:16
 */

$point = array(
    'x' => array(10, 20, 30, 40, 50),
    'y' => array(5, 6, 7, 8, 9)
);

$points = array(
    array(
        'x' => array(10, 20, 30, 40, 50),
        'y' => array(5, 6, 7, 8, 9)
    ),
    array(
        'x' => array(10, 30, 30, 40, 50),
        'y' => array(5, 6, 7, 8, 9)
    ),
    array(
        'x' => array(10, 50, 30, 40, 50),
        'y' => array(5, 6, 7, 8, 9)
    ),
    array(
        'x' => array(10, 60, 30, 40, 50),
        'y' => array(5, 6, 7, 8, 9)
    ),
    array(
        'x' => array(10, 70, 30, 40, 50),
        'y' => array(5, 6, 7, 8, 9)
    )
);

function Cosine($point)
{
    $cosine_arr = array();
    $size = count($point['x']);
    for ($i = 0; $i < $size; $i++) {
        $cosine_arr[$i] = $point['y'][$i] * $point['x'][$i]/sqrt($point['x'][$i]*$point['x'][$i]+$point['y'][$i]*$point['y'][$i]);
    }
    return $cosine_arr;
}

$cosine = Cosine($point);

foreach($points as $p){
    $cosine_p = Cosine($p);
    $top = $bottom_x = $bottom_y = 0.00;
    $size = count($cosine);
    for ($i = 0; $i < $size; $i++) {
        $top += $cosine[$i] * $cosine_p[$i];
        $bottom_x += $cosine[$i] * $cosine[$i];
        $bottom_y += $cosine_p[$i] * $cosine_p[$i];
    }
    echo $top / (sqrt($bottom_x) * sqrt($bottom_y));
    echo "\r\n";
}
揽月 2022-09-10 00:08:06
  • 首先相似度的定义很多,你需要先确定一下

  • 然后,你是要检测形状吗?那么不同位置上,形状一样的算一个形状吗?

所有这些都会影响到最终算法的选择

落在眉间の轻吻 2022-09-10 00:08:06

转换成树,就可以快速查找是否重复

多维空间中两个向量夹角的余弦公式
利用这个就可以求出相似度

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文