algorithm - 计算两组凸多边形的相似度?
问题描述
我用不同的算法生成了两组凸多边形。每个集合中的每个多边形都由坐标数组[n_points, xy_coords] 描述,因此正方形由数组[4,2] 描述,但圆角五边形具有[80,2],额外的75 个点为用于描述曲率。
我的目标是量化两组几何图形的相似程度。
任何人都可以推荐任何这样做的方法吗?
到目前为止,我遇到过:
- 汉明距离
- 豪斯多夫距离
我想知道 2D 多边形还有哪些其他可靠的相似性度量。理想情况下,该方法需要在凸多边形上具有鲁棒性,并给出大集合(每个 10,000+)之间的相似性度量。
解决方案
假设两个多边形都是对齐的、居中的和凸的,您可以尝试通过计算较小多边形的面积与两个多边形的凸包面积的比率来评估相似性。
比率 = 最小值(面积(A),面积(B))/面积(凸壳(A,B))
如果两个多边形相等,则该比率将为 1,如果像点和正方形一样严重不同,则该比率将为 0。
多边形的面积可以在 O(N) 时间内计算出来。请参见多边形的面积。凸包可以在 O(N log N) 中计算。请参阅凸包计算。通过合并排序两个多边形的已排序顶点并应用格雷厄姆扫描算法的第二阶段,它可以加速到 O(N) 。
推荐阅读
- firebase - 如何在firebase控制台中删除匿名授权用户?
- javascript - 点击 2 个 id 更新 .map() 数组 jquery
- r - 解决“包不可用”问题的其他方法
- visual-studio - 如何在 WIX 安装程序配置中不指定文件名的情况下从源文件夹复制所有文件
- push-notification - 如何配置或连接 ejabberd 18 xmpp 服务器到 App 服务器以进行推送通知 ( XEP-0060 XEP-0357 )?
- regex - VBA - 正则表达式
- spring - spring mvc:当控制器的返回类型为CompletableFuture时如何设置请求超时?
- r - 为什么 rbind 在 R 的函数循环中不起作用
- google-cloud-platform - 如何为非工程师成员添加 GCS 存储桶的读取权限?
- java - 当 ManyToOne 与 OneToMany 直通关系表一起使用时,持续不工作