Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在MATLAB中识别多个相交多边形?

如何在MATLAB中识别多个相交多边形?
EN

Stack Overflow用户
提问于 2018-06-20 10:52:21
回答 1查看 1.4K关注 0票数 2

我想找出重叠/交叉的多边形。我发现的技术一次只能比较两个多边形。我在一个数据集中有数以万计的细胞,在每一个数据集中有2-20个多边形,每个多边形用x-y坐标来描述。我想在每个细胞中找到重叠的多边形。每对交叉路口之间的循环都很慢,所以我想问.

有没有办法同时比较所有多边形,并提取重叠多边形的ID?

下面是数据集中单个条目的一个简单示例:

代码语言:javascript
运行
AI代码解释
复制
shapes = cell(4,2);
shapes{1,1} = 'poly1';
shapes{2,1} = 'poly2';
shapes{3,1} = 'poly3';
shapes{4,1} = 'poly4';
shapes{1,2} = [1, 3, 3; 1, 1, 3]';
shapes{2,2} = [2, 4, 2; 2, 2, 5]';
shapes{3,2} = [4, 5, 5, 4; 3, 3, 5, 5]';
shapes{4,2} = [1, 3, 3, 1; 4, 4, 6, 6]';

此示例包含以下4个多边形:

这个图是用单独的“多边形”对象制作的,但这并不意味着我需要在解决方案中使用这种对象。

我想要的输出是每对重叠对的记录:

代码语言:javascript
运行
AI代码解释
复制
result =
  2×2 cell array
    {'poly1'}    {'poly2'}
    {'poly2'}    {'poly4'}

我目前的方法是遍历每一对,并在每对多边形上使用poly2mask函数。然后使用&运算符将二进制掩码添加到一起。这产生了一个逻辑数组1,其中有任何重叠。

我所看到的实际多边形都是环形扇形,因此它们并不都是凸的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-21 07:56:56

这是一种利用“多边形”向量的解决方案,避免在额外的循环中进行所有的两两比较(虽然我不知道“重叠”函数是如何工作的)。

代码语言:javascript
运行
AI代码解释
复制
% Set up empty vector to hold the different shapes
polyvec = [];

% Loop all shapes and combine into polyshape vector
for ii = 1 : size(shapes, 1)

    poly = polyshape(shapes{ii,2}(:,1), shapes{ii,2}(:,2));

    % When you combine polyshape objects together the you get 
    % a vector that is of the polyshape object type
    polyvec = [polyvec, poly];

end

% Use the overlap function to compute a symmetric binary matrix 
% of which polygons in the polygon vector overlap. 
interMatSym = overlaps(polyvec);

% I only need the upper triangle of the symmetric interaction 
% matrix and all polygons overlap with themselves so use 'triu'
interMat = triu(overlaps(polyvec), 1);

% Find the coordinates of the overlap in the interaction matrix
[x, y] = find(interMat);

% Save the result
result = [shapes(x,1), shapes(y,1)];

result =
  2×2 cell array
    {'poly1'}    {'poly2'}
    {'poly2'}    {'poly4'}

如果有一种方法可以更有效地创建一个多边形向量,那么我很想知道!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50955173

复制
相关文章
如何使用CGAL轻松检索两条相交多边形的相交线
如何使用CGAL轻松检索两条相交多边形的相交线(从第一个交点到最后一个交点)。看到图像的澄清,绿线是我想要的。使用CGAL获取多边形相交线
用户3519280
2023/07/06
4260
CGAL 计算两个凸多边形相交的面积
我正在使用 CGAL 计算两个凸多边形相交的面积。在对 this 的接受答案中发布了执行此操作的简短演示代码。问题。但是,当我修改该代码以使用我感兴趣的多边形时,CGAL 从 CGAL::intersection() 例程的深处抛出运行时异常。
用户3519280
2023/07/06
4490
如何在MATLAB中实现各种特殊上标?
本文只针对特殊上标情况,上下角标可由符号“^”或者“_”实现,故不在本文讨论范围之内,特殊上标的示例如下图所示。
巴山学长
2021/07/30
4.6K0
如何在 wxPython 中创建多个工具栏
作为C++库wxWidgets的包装器,wxPython允许Python开发人员利用这个成熟且经过实战测试的框架的强大功能。它具有各种平台的本机外观和感觉,包括Windows,macOS和Linux。使用 wxPython,您可以使用各种小部件(例如按钮、文本控件,当然还有工具栏)设计具有视觉吸引力且响应迅速的桌面应用程序。
很酷的站长
2023/08/11
5080
如何在 wxPython 中创建多个工具栏
如何在Ansible中复制多个文件和目录
Ansible 通过 copy 和 fetch 模块提供了基本的复制文件和目录的功能.
东风微鸣
2022/04/21
17.6K2
如何在Ansible中复制多个文件和目录
MATLAB实现人脸识别
本篇博文基于MATLAB实现人脸识别,基于几何特征的算法,对人脸从图像采集、预处理、到特征点定位提取,校验通过;主要利用YCbCr肤色模型,通过连通分量提取算法定位人脸;对RGB图像通过形态学图像处理算法选定区域,再进行细化算法,找到其人脸坐标并提取出来;然后利用PCA与特征脸算法计算特征值完成识别。
不脱发的程序猿
2023/05/26
7370
MATLAB实现人脸识别
MATLAB实现车牌识别
本项目通过对拍摄的车牌图像进行灰度变换、边缘检测、腐蚀及平滑等过程来进行车牌图像预处理,并由此得到一种基于车牌颜色纹理特征的车牌定位方法,最终实现了车牌区域定位。车牌字符分割是为了方便后续对车牌字符进行匹配,从而对车牌进行识别。
不脱发的程序猿
2023/05/02
1.5K0
MATLAB实现车牌识别
如何在matlab中实现可编辑下拉菜单?
小编经过权衡后,选择了第三种方式来实现,并相关操作集成到一个名为popUpMenu的函数当中,如果需要使用直接调用即可,下面就一起来看看这个函数吧。
巴山学长
2020/06/03
2.4K0
matlab计算多重复杂多边形重叠面积
最近在学习中遇到了求多边形图像重叠面积问题,经查阅资料发现polyshape函数可以解决此问题,下面总结一下本次学习的心得:
巴山学长
2021/07/30
2.5K0
如何在matlab编程中逢山开路、遇水搭桥?
相信小伙伴们在matlab编程中肯定最不愿意遇见的就是“Error”了吧,前几天帮忙一位小伙伴写代码,其中需要使用到一个圆形区域去逐行扫描矩阵,以确定每个矩阵元周围元素的分布情况。
巴山学长
2020/02/17
1K0
如何在matlab编程中逢山开路、遇水搭桥?
30多个实用matlab编程技巧
感谢关注matlab爱好者公众号!如果公众号文章对您有帮助,别忘了点击分享和“在看”哦!若您对公众号有什么意见或建议,请在公众号中回复或在任意文章底部留言!
巴山学长
2021/11/12
2K0
30多个实用matlab编程技巧
MATLAB实现物体颜色识别
机器视觉利用光电成像系统和图像处理模块对物体进行尺寸、形状、颜色等的识别。这样就把计算机的快速性、可重复性与人眼视觉的高度智能化和抽象能力相结合,用机器代替人眼来作各种测量和判断,大大提高了生产的柔性和自动化程度。
不脱发的程序猿
2023/05/26
7240
MATLAB实现物体颜色识别
用turf.js求多个点的外包多边形
最近有个需求就是求多个点的外包多边形,看了下turf.js可以实现,在此记录分享一下。
牛老师讲GIS
2022/09/26
2K0
用turf.js求多个点的外包多边形
ACM竞赛学习指南(算法工程师成长计划)
算法工程师成长计划 近年来,算法行业异常火爆,算法工程师年薪一般20万~100 万。越来越多的人学习算法,甚至很多非专业的人也参加培训或者自学,想转到算法行业。尽管如此,算法工程师仍然面临100万的人才缺口。缺人、急需,算法工程师成为众多企业猎头争抢的对象。 计算机的终极是人工智能,而人工智能的核心是算法,算法已经渗透到了包括互联网、商业、金融业、航空、军事等各个社会领域。可以说,算法正在改变着这个世界。 下面说说如何成为一个算法工程师,万丈高楼平地起,尽管招聘启事的算法工程师都要求会机器学习,或数据挖
rainchxy
2018/09/13
4K0
如何在小程序中实现人脸识别功能
本文将介绍在小程序端,使用腾讯云云智AI应用服务来进行人脸识别检测分析,实现人脸识别等功能。
123456a134
2018/11/13
21.6K4
如何在小程序中实现人脸识别功能
如何在matlab矩阵中随机生成圆【含源代码】
言归正传,巴山在浏览知乎时邀请我回答上图所示的问题,所幸就点进去看了一眼,并给了解题思路。
巴山学长
2021/03/30
2.1K0
如何在matlab矩阵中随机生成圆【含源代码】
如何在 Matlab 中绘制带箭头的坐标系
方法二:使用 Matlab 自带的一个图窗标注函数 annotation,具体用法请点击查看文档,简而言之,该函数可以在图窗指定位置绘制图形(箭头,矩形,椭圆等)或文字。其中绘制箭头的调用格式为
iam002
2021/08/18
8.5K0
如何在 Matlab 中绘制带箭头的坐标系
点击加载更多

相似问题

如何使多个多边形相交?

31

将多个点与多个多边形相交

33

使用geopandas识别单个GeoJSON文件中的相交多边形

20

用多个多边形相交可变点数

11

如何在具有相交的多个多边形中搜索所有点?

14
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档