怎么用matlab编程计算一个不规则图形的面积

2024-05-11 01:26

1. 怎么用matlab编程计算一个不规则图形的面积

最简单的思路:先转成灰度图,然后转成二值图像,然后利用黑色/总像素的比值乘以图像的总面积,得到图形的面积。

如果想做的细,其中的任何一个步骤都会很精致,尤其是二值化,算法有很多种,需要结合实际情况选择合用的算法,或者编写程序根据图像特征自动选择算法。再麻烦一点的话,彩色图像的色彩分割本身就是一个硕士课题了。

以上。
专业路过的老狼

怎么用matlab编程计算一个不规则图形的面积

2. 如何用matlab计算不规则图形面积

如何用matlab计算不规则图形面积
用梯形积分法求其面积。
首先,从图形中取点xi,yi,列出x向量和y向量,即
x=[。。。];    
y=[。。。];
然后,用trapz( ) 函数求出面积
z=trapz(x,y)   %面积

3. 在方格中计算不规则图形面积怎样通过方格来计算面积

假定每个小方格为一个单位一长,S为图形面积,L为边界上的格点数,N为内部格点数,则有S=2/L N-1。
可以用皮克公式计算,
面积S和内部格点数目a、边上格点数目b的关系:
S=a+ b/2 - 1。
(其中a表示多边形内部的点数,b表示多边形边界上的点数,S表示多边形的面积)
S=12+8/2-1=15

扩展资料:
可以通过将固定尺寸的形状与正方形进行比较来测量形状的面积。在国际单位制(SI)中,标准单位面积为平方米(平方米),面积为一米长的正方形面积,面积为三平方米的形状将与三个这样的广场相同。在数学中,单位正方形被定义为具有区域1,任何其他形状或表面的面积都是无量纲实数。
对三角形面积进行平分的线条无穷无尽。 其中三个是三角形的中位数(将两边的中点连接到相反的顶点),并且它们在三角形的重心处并发; 事实上,是唯一通过重心的面积平分线。 通过三角形将三角形面积和周边分成两半的任何线条都可以穿过三角形的入口(其圆周的中心)。 对于任何给定的三角形,它们中有一个,两个或三个。
参考资料来源:百度百科-面积

在方格中计算不规则图形面积怎样通过方格来计算面积

4. 求matlab代码 运用链码计算不规则图形的周长以及面积

function CIR = C_CIR(Img)
%% 函数功能:计算输入的灰度图像的(或二值图像)的周长
%   函数输入:二值图像
%   函数输入:周长
%%  测试链码求周长CIR
I = im2bw(Img);
[m, n] = size(I); 
figure(1); imshow(I); title('原图');
R = 1;    % 二值图像的背景像素
I0 = zeros(m+2, n+2) + R; % 原图像+边框,避免边界查找出错
I0(2:(m+1), 2:(n+1)) = I;
x0 = 0;
y0 = 0;
fsp = 0; % 是否找到起始点
%%%%%%%%%%%%%%%%%%%% 寻找目标边界的一个边界点 %%%%%%%%%%%%%%%%
for i = 1:m
for j = 1:n
if (I0(i,j) ~= R)
x0 = i; % 记录起始点的纵坐标
y0 = j; % 记录起始点的横坐标
fsp = 1;
break;
end
end
if fsp == 1
break;
end
end
row = x0;
col = y0;
%%%%%%%%%%%%%%%%%% 按某一方向查找边界并且记录 %%%%%%%%%%%%%%%%%%%%%%%%
A = [];         % 存储边界点坐标的矩阵
B = zeros(m,n); % 边界跟踪的图像矩阵
ended = 0;
direction = 4;  % 从起始点的左边开始查找
while (ended == 0)
found_next = 0;
b = [row-1, col-1]; % 消除边框,与原图保持一致
A = [A;b];
B(row-1, col-1) = 255;
while (found_next == 0)
switch mod(direction,8)
case 0
if (I0(row, col + 1)~= R)
row  = row; % 记录当前坐标
col = col + 1;
direction = 5;  % 下一点从方向5开始查找
found_next = 1; % 找到边界点,准备跳出循环
end;
case 1
if (I0(row - 1, col + 1) ~= R)
row = row - 1;
col = col + 1;
direction = 6;
found_next = 1;
end;
case 2
if (I0(row - 1, col) ~= R)
row = row - 1;
col = col;
direction = 7;
found_next = 1;
end
case 3
if (I0(row - 1, col - 1) ~= R)
row = row - 1;
col = col - 1;
direction = 0;
found_next = 1;
end
case 4
if (I0(row, col - 1) ~= R)
row = row;
col = col - 1;
direction = 1;
found_next = 1;
end
case 5
if (I0(row + 1, col - 1) ~= R)
row = row + 1;
col = col - 1;
direction = 2;
found_next = 1;
end
case 6
if (I0(row + 1, col) ~= R)
row = row + 1;
col = col;
direction = 3;
found_next = 1;
end
case 7
if (I0(row + 1, col + 1) ~= R)
row = row + 1;
col = col + 1;
direction = 4;
found_next = 1;
end
end
if (found_next == 0)
direction = direction + 1;
end
end
if (and((x0 == row), (y0 == col)))
ended = 1;
end
end
A1 = [A; [x0-1,y0-1]];
figure(2); imshow(B); % 输出跟踪结果
hold on
%%%%%%%%%%%%%%%%%%%%%%%%%%% 求8方向链码 %%%%%%%%%%%%%%%%%%%%%%
C = [];
for i = 1:length(A1) - 1
if (A1(i+1, 1) - A1(i, 1) == 0) &&  ( A1(i+1, 2) - A1(i, 2) == 1)
code = 0;
C = [C, code];
end
if (A1(i+1, 1) - A1(i, 1) == -1) && ( A1(i+1, 2) - A1(i, 2) == 1)
code = 1;
C = [C, code];
end
if (A1(i+1, 1) - A1(i, 1) == -1) &&  (A1(i+1, 2) - A1(i,2) == 0)
code = 2;
C = [C, code];
end
if (A1(i+1, 1) - A1(i, 1) == -1) && (A1(i+1, 2) - A1(i, 2) == -1)
code = 3;
C = [C, code];
end
if (A1(i+1, 1) - A1(i,1) == 0) &&  (A1(i+1, 2) - A1(i,2) == -1)
code = 4;
C = [C, code];
end
if (A1(i+1, 1) - A1(i, 1) == 1) && (A1(i+1, 2) - A1(i, 2) == -1)
code = 5;
C = [C, code];
end
if (A1(i+1, 1) - A1(i, 1) == 1) &&  (A1(i+1, 2) - A1(i, 2) == 0)
code = 6;
C = [C, code];
end
if (A1(i+1, 1) - A1(i, 1) == 1) && (A1(i+1, 2) - A1(i, 2) == 1)
code = 7;
C = [C, code];
end
end
%%%%%%%%%%%%%%%%%%%%%% 计算周长CIR %%%%%%%%%%%%%%%%%%%%%%%%%%%
sum1 = 0;
sum2 = 0;
for i = 1:length(C)
if mod(C(1,i), 2) == 0
sum1 = sum1 + 1;
end
if mod(C(1,i), 2) == 1
sum2 = sum2 + 1;
end 
end
CIR = sum1 + sum2 * sqrt(2); % 计算边界周长
end

5. matlab中怎样计算图形的面积(曲线与x轴围成的面积为不规则图形,且表达式未知)

最简单的思路:先转成灰度图,然后转成二值图像,然后利用黑色/总像素的比值乘以图像的总面积,得到图形的面积。如果想做的细,其中的任何一个步骤都会很精致,尤其是二值化,算法有很多种,需要结合实际情况选择合用的算法,或者编写程序根据图像特征自动选择算法。再麻烦一点的话,彩色图像的色彩分割本身就是一个硕士课题了。

matlab中怎样计算图形的面积(曲线与x轴围成的面积为不规则图形,且表达式未知)

6. 如何在matlab 上计算图形面积并在figure上显示

面积计算没有直接的公式,需要编程求解。
在网上看到求解不规则图形面积的方法:
将所需要求面积的图形  先转成灰度图,然后转成二值图像,然后利用黑色/总像素的比值乘以图像的总面积,得到图形的面积。
将面积显示在图上的代码。
title(['Sierpinski垫圈的面积是' num2str(area) ],'fontsize' ,12);

7. 怎样用CorelDRAW计算选中的不规则区域的面积?

先下载一个GetArea13,矩形啥的都要转化成曲线才能计算;GMS目录下面:\.gms,工具-宏-运行宏;Draw\。记住一定要曲线哦,点击你要计算的曲线面积.gms插件,就出来了;Corel\Program Files\,选择GetArea13,放到C。开启CorelDRAW,即你的CorelDRAW系统安装目录最后的GMS里面;CorelDRAW Graphics Suite X4\我说一下CorelDRAW X4计算选中的不规则区域的面积的方法吧
CorelDRAW没有这个功能,CAD、sketchup等可以 用CorelDRAW描边,单独导出AI或者DWG!

CD无法计算。请用CAD

怎样用CorelDRAW计算选中的不规则区域的面积?

8. 求教:如何用matlab把矩形区域划分成不规则的网格图并把各小网格中心作为节点

以0.5为间隔,怎么会有21份呢?应该是100吧

x=3;
dx=0.5;
xnum=round(x/dx+1);
y=3;
dy=0.5;
ynum=round(y/dy+1);
for i=1:xnum
    for j=1:ynum
        x=(j-1)*dx;
        y=(i-1)*dy;
        data((i-1)*ynum+j,1)=x;
        data((i-1)*ynum+j,2)=y;
    end
end
最新文章
热门文章
推荐阅读