计算两个多边形的最近距离(MATLAB)

这篇具有很好参考价值的文章主要介绍了计算两个多边形的最近距离(MATLAB)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

        本文意在介绍关于计算两组坐标点的最近距离的简单方法,可用此方法来计算两个多边形的最近距离以及距离最近的两个点。下面展示具体实例。

函数代码

function [ point1,point2,dis ] = Mindistance( F1,F2 )
%此函数为计算两组坐标点之间的最近距离并找出距离最近的一对坐标点
%输入分别为两组坐标点的二维数组,必须是n行两列
max_x1=max(F1(:,1));max_x2=max(F2(:,1));
max_y1=max(F1(:,2));max_y2=max(F2(:,2));
max_x=max(max_x1,max_x2);
max_y=max(max_y1,max_y2);
img1_1=zeros(max_x,max_y);%建立一个二值图像使两数组中的点都可以出现在该图中
img2_1=img1_1;
%让数组F1,F2中的坐标点各自显现在两个二值图像中
for i0=1:length(F1(:,1))
    img1_1(F1(i0,1),F1(i0,2))=1;
end
for i1=1:length(F2(:,1))
    img2_1(F2(i1,1),F2(i1,2))=1;
end

[img1_2,dix] = bwdist(img1_1);%dix反映img1_1每个黑点对应的最近的白点的索引下标
img2_2=img2_1.*img1_2;%img2_2中不为0的点表示img2_1中该点到img1_1中点的最近距离
dis=min(img2_2(img2_2~=0));%找到两个数组中的点的最近距离
[x1,y1]=find(img2_2==dis);%找出F2中距离F1最近的点的坐标
L=length(x1);
point1=[L,2];
point2=cat(2,x1,y1);%设置point1,point2数组,记录两组坐标点中距离最近的点的坐标

for i=1:L
  num=dix(x1(i),y1(i));
  [x,y]=ind2sub([max_x,max_y], num); %来完成下标到索引值的转换。
  point1(i,1)=x;
  point1(i,2)=y;      
end

end

        该函数可以比较快速的计算两组坐标点之间的最小距离,并返回相应的坐标。缺点是只能计算整数坐标值,且坐标值需大于0。

测试程序

clc
 img1=zeros(20,20);%首先生成一个20×20像素的二值图像
for i=8:15
    for j=8:i
        img1(i,j)=1;
    end
end
img1(16,9)=1;
img1(17,9)=1;
img1(18,9)=1;
img1(18,10)=1;%在二值图像中随意设计一个多边形区域
[x1,y1]=find(img1==1);
f1=cat(2,x1,y1);
%再生成衣服同样大小的二值图像,里面同样包含一个二值多边形区域
img2=zeros(20,20);
img2(2,1)=1;
img2(2,2)=1;
img2(3,1)=1;
img2(3,2)=1;
img2(3,3)=1;
[x2,y2]=find(img2==1);
f2=cat(2,x2,y2);
[ point1,point2,dis ] = Mindistance( f1,f2 );%调用函数计算两个多边形的最小距离
figure(1)
imshow(img1|img2)%在一幅画面中显示两个多边形
hold on
plot(point1(:,2),point1(:,1),'*')
plot(point2(:,2),point2(:,1),'*')
tip=mean(cat(1,point1,point2));
text(tip(2),tip(1),num2str(dis),'color','b','FontSize',12,'HorizontalAlignment','center');%标记距离
hold off

测试结果

matlab计算多边形距离,matlab,图像处理,几何学

 从图中可以看到两个距离最近的坐标点及两点间的距离。文章来源地址https://www.toymoban.com/news/detail-720592.html

到了这里,关于计算两个多边形的最近距离(MATLAB)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 空间分析实战指南:点到多边形的最短距离

    在我们最近的项目中,出现了一个新的需求:需要验证现场拍摄的照片的经纬度与实际地块之间的最短距离,以确保业务员在地块的一公里范围内进行拍照。 实现这个功能有两种方式,一种是在前台APP中校验,一种是在后台进行校验,接下来我会分别介绍这两种方式。 在我

    2024年02月13日
    浏览(37)
  • 计算机图形学 第4章 多边形填充

    了解扫描转换的基本概念。 熟练掌握多边形有效边表填充算法。 掌握多边形边缘填充算法。 熟练掌握区域四邻接点和八邻接点区域填充算法。 掌握区域扫描线种子填充算法。 无论使用哪种着色模式,都意味着要使用指定颜色为多边形 边界内 的每一个像素着色。 多边形的

    2024年02月02日
    浏览(54)
  • 【计算几何】判断多边形边界顺逆时针 & C++代码实现

    多边形可以由一个点集 { v 1 , v 2 , . . . , v n } {v_1,v_2,...,v_n} { v 1 ​ , v 2 ​ , ... , v n ​ } 表示,构成多边形的点集确定,多边形边界的顺序也就确定了 有关多边形边界的顺序的示意图,如下图所示: 有时候关于数据格式有规定,要求多边形边界必须为顺时针或者逆时针。 因

    2024年02月07日
    浏览(59)
  • 【计算机图形学 】扫描线多边形填充算法 | OpenGL+鼠标交互

    传送门 实现多边形扫描线填充算法,并和鼠标进行交互。 具体原理略过,会贴上完整代码,可直接运行。 环境: vs2019,OpenGL的库(可以搜索如何用vs使用OpenGL的库,可以使用vs自带的插件或者其他方法,很方便) 要点: 1.NET和AET的创建,改动 2.改变鼠标点击和鼠标拖拽的响应

    2023年04月08日
    浏览(78)
  • 【Weiler-Atherton算法】 计算机图形学多边形裁剪算法

    源代码: https://github.com/ricar0/Weiler-Atherton-Alogrithm/tree/master 通常来说就是利用多边形来裁剪多边形的一种方法,一般情况下是利用矩形来裁剪凹凸多边形 凸多边形 凹多边形 上面红色划线部分就是裁剪出的部分 OPENGL基础语法 基本上就是一些画线和画多边形的操作,难度较低

    2023年04月09日
    浏览(68)
  • 再说不会用python计算地球表面多边形面积,可不能了!(记录五种可行方法)

    由于地理投影导致导致每个像元实际地面面积不同,越靠近北极实际面积越小,越靠近赤道实际面积越大, 如果不进行面积加权就简单平均,会导致温度较实际温度偏低。 直接使用卫星地图的计算面积功能就会遇到这样的问题,多数卫星地图的计算面积功能是将地图假设为

    2024年02月01日
    浏览(44)
  • 计算机图形学实验——利用MFC对话框实现多边形绘制与填充(扫描线填充算法)附源码

    内容概括: 利用基于对话框的MFC项目 实现鼠标点击绘制多边形 实现扫描线算法填充多边形 源码见Yushan-Ji/ComputerGraphics: ECNU2023秋 计算机图形学课程实验代码 (github.com) 通过鼠标交互输入多边形 对各种多边形进行填充,包括边界自交的情况 利用 OnLButtonDown 和 OnRButtonDown 函数,

    2024年02月04日
    浏览(76)
  • 【计算几何】凸多面体重叠判断算法:GJK 算法详解 & C++代码实现二维情形的凸多边形重叠判断

    GJK 算法是由 Gilbert,Johnson,Keerthi 三位前辈发明的, 用来计算两个凸多面体之间的碰撞检测 ,以及最近距离。 GJK 算法可以在 O ( M + N ) O(M+N) O ( M + N ) 的时间复杂度内,检测出碰撞,算法在每次迭代的过程中,都会优先选择靠近原点的方向,因此收敛速度会很快。算法的证明

    2024年02月08日
    浏览(67)
  • opencv 之 外接多边形(矩形、圆、三角形、椭圆、多边形)使用详解

    本文主要讲述opencv中的外接多边形的使用: 多边形近似 外接矩形、最小外接矩形 最小外接圆 外接三角形 椭圆拟合 凸包 将重点讲述最小外接矩形的使用 给一个opencv官方的例程: 过程图像如下: 椭圆拟合一般用于轮廓提取之后: 凸包绘制 计算两个旋转矩形交集: C++版的最

    2024年02月09日
    浏览(103)
  • 基于C++ 的OpenCV绘制多边形,多边形多条边用不用的颜色绘制

    使用基于C++的OpenCV库来绘制多边形,并且为多边形的不同边使用不同的颜色,可以按照以下步骤进行操作: 首先,确保你已经安装了OpenCV库并配置好了你的开发环境。 导入必要的头文件: 创建一个空白的图像,然后绘制多边形,并为每条边选择不同的颜色: 在这个示例中,

    2024年02月13日
    浏览(58)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包