找到一个多边形面积的部分图像可生成代码(代码)
4视图(30天)
显示旧的评论
答案(1)
卡里姆
2022年12月23日
对于这样一个形状,你可以确定通过一组三角形的面积。插入一个新的临时点中心的形状。利用这一点来找到一组三角形连续(每次取2分)。然后你可以vind magnitue一半的面积的积的三角形。
见下图演示和功能:一个例子
img = imread ((1). png图像”);
[h, w ~] =大小(img);
%的大约位置点
点= [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)”)
%现在剩下要做的唯一的事就是三角形的面积的总和
%我们可以用三角形的两边的叉积,
%三角形的面积大小的一半
%第一网格扩展到包括中心点,我们还将添加一个3 d
%维积进行向量化
网格=[点;cent_Point];
网格(:,3)= 0;
=网格(三角形(:,2):)——网格(三角形(:1):);
B =网格(三角形(:,3):)——网格(三角形(:1):);
C =交叉(A, B, 2);
面积= 1/2 *总和(√(C。^ 2,2)))
所以总而言之,你可以使用以下功能:
函数面积= 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)));
结束