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

2024-05-11 05:02

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

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

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

2. 怎样计算不规则图形的面积?

以CAD软件为例,其中的具体步骤如下:
1、直接打开相关窗口,通过需要计算面积的不规则图形执行BO命令。

2、这个时候打开新的界面,确定将对象类型设置为多段线。

3、下一步如果没问题,就继续执行LS命令。

4、这样一来等出现图示的结果以后,即可达到目的了。

3. 求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

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

4. 如何用MATLAB计算不规则图形面积 急需

一般用积分方法

5. matlab中怎样算不规则图形的面积,急用,谢谢!!!

导入CAD中,查询--面积

matlab中怎样算不规则图形的面积,急用,谢谢!!!

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

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

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

A = polyarea(X,Y);

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

8. matlab 通过网格法计算不规则图形面积

你先把图像转化为2值的 im2bw 有坦克的地方值为0,没有的地方值为255
假设是N*N的图像,分成K格
然后看就有k*k个小矩阵,用sum来求这些小矩阵的和,可以知道多少点值为255,然后就可以看是不是有超过一半的点包含坦克
最新文章
热门文章
推荐阅读