找到一个多边形面积的部分图像可生成代码(代码)

4视图(30天)
我要计算的面积二进制映像的一部分,如例子所示。
我知道,有不同的不同的选项在MATLAB, roipoly, poly2mask, drawpolygon, regionfill .....
但我的问题是,既然我在仿真软件工作,我应该添加代码可生成代码。万博1manbetx
可以用逻辑有人请帮我找到这个多边形的面积部分,可生成代码。

答案(1)

卡里姆
卡里姆 2022年12月23日
对于这样一个形状,你可以确定通过一组三角形的面积。插入一个新的临时点中心的形状。利用这一点来找到一组三角形连续(每次取2分)。然后你可以vind magnitue一半的面积的积的三角形。
见下图演示和功能:一个例子
img = imread ((1). png图像”);
[h, w ~] =大小(img);
h = 182
w = 325
%的大约位置点
点= [0.235412585196718,0.4210111787843795
0.413220458790229,0.3425540277443474
0.548851196334065,0.5019042628065483
0.540891377802694,0.8655011562683762
0.382395775888072,0.8977730789035103
0.258763417435734、0.7566641581177962);
%点位置转换成像素坐标
点(:1)=圆(点(:1)* w);
点(:2)=圆((1个点(:,2))* h);
%画出图,看看我们有正确的点
持有
imshow (img)
散射(点(:1),点(:,2),“y”,“填充”)
标题(“黄色情节大约分”)
%首先找到中心点
cent_Point =意味着(点,1);
%绘制点和中心点
持有
散射(点(:1),点(:,2),“y”,“填充”,“MarkerEdgeColor”,“k”)
文本(点(:1),点(:,2),”“+ num2str((1:尺寸(点,1))))
散射(cent_Point (: 1) cent_Point (:, 2),“r”,“填充”)
持有
网格
%并不是说你可以看到类似的一组三角形图:
%每次取中间点和连接这两个点
%三角形的创建一个列表,每一行代表的顶点
%的三角形
numPoints =大小(点,1);
三角形= [repmat (numPoints-1 numPoints + 1, 1) (1: (numPoints-1)) (2: numPoints)”)
三角形= 5×3
7 1 2 7 2 3 4 5 7 5 6 7 3 4 7
%现在剩下要做的唯一的事就是三角形的面积的总和
%我们可以用三角形的两边的叉积,
%三角形的面积大小的一半
%第一网格扩展到包括中心点,我们还将添加一个3 d
%维积进行向量化
网格=[点;cent_Point];
网格(:,3)= 0;
=网格(三角形(:,2):)——网格(三角形(:1):);
B =网格(三角形(:,3):)——网格(三角形(:1):);
C =交叉(A, B, 2);
面积= 1/2 *总和(√(C。^ 2,2)))
面积= 6.5915 e + 03
所以总而言之,你可以使用以下功能:
函数面积= GetPolyArea(分)
numPoints =大小(点,1);
%首先找到中心点
cent_Point =意味着(点,1);
%创建顶点的三角形列表
三角形= [repmat (numPoints-1 numPoints + 1, 1) (1: (numPoints-1)) (2: numPoints)”)
%设置网格点
网格=[点;cent_Point];
网格(:,3)= 0;
%计算积
=网格(三角形(:,2):)——网格(三角形(:1):);
B =网格(三角形(:,3):)——网格(三角形(:1):);
C =交叉(A, B, 2);
%获得该地区
面积= 1/2 *总和(√(C。^ 2,2)));
结束

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!

翻译的