基于MATLAB的任意多边形最小外接圆计算 您所在的位置:网站首页 matlab画正三角形 基于MATLAB的任意多边形最小外接圆计算

基于MATLAB的任意多边形最小外接圆计算

2023-09-26 22:26| 来源: 网络整理| 查看: 265

        我们在进行数字图像处理时,通常需要获取目标的一些参数,例如,形状,大小,位置等信息。而获取这些信息的常用方法是计算该区域的最小外接矩形,除此之外,我还想到了另一种方法——求目标的最小外接圆。但matlab中并没有计算多边形最小外接圆的函数,所以今天我给大家分享一下关于绘制二值图像中目标区域最小外接圆的思路和方法。

        1.首先将任意多边形变成凸多边形。这样做的目的是使该多边形的最小外接圆的圆心落在多边形内部。可以利用regionprops中的convexhull函数实现将任意多边形变成凸多边形。

        2.一个多边形最少有两个顶点与外接圆的圆弧接触,而且这两个点应该是距离最远的两个点。所以下一步就是要找到凸多边形的距离最远的两个顶点。

        3.用直线连接圆上的任取两点,然后做这条线段的垂直平分线L。可以确定圆心的位置就在L上。这正是做多边形的最小外接圆的理论依据。(如下图所示,绿线为L,红点为圆心O)                     

         4.最后一步就是确定圆心。确定圆心位置的依据是:以该点为圆心,以该点到距离它最远的多边形顶点的距离为半径画圆,此圆若能刚好包围所有的多边形顶点。那么此点便是圆心,所画圆即是多边形最小外接圆。

以上就是全部思路,下面是完整的代码,以及实际测试结果 。

函数代码 function [circle_x,circle_y,R] = FindCircle( bw ) % 此函数用于计算二值区域的最小外接圆,并画在图上 % 输入为一个二值图像,输出为圆心坐标和圆的半径 stats = regionprops(bw,'ConvexImage');%将原始多边形补成一个凸多边形 %%%确定凸多边形的顶点 A=ones(3); %卷积核 vertex=conv2(stats.ConvexImage,A,'same');%用卷积的方法查找多边形顶点 image_point=vertex


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有