怎么用MATLAB测圆形区域的面积周长 100
展开全部
下面这个函数主要是求感兴趣区域的物理特征:周长、面积、宽、高等。还是用的比较多的,贴出来分享下。
传入的图像必须是二值的哦
function [L,A,H,W]=canshu(I)
% 注意必须保证二值图像中,细胞区域为白色区域或者像素点值为“1”
[x,y]=size(I);
BW = bwperim(I,8); % 检测区域的边缘跟踪,用于计算周长
%检测垂直方向连读的周长像素点%
P1=0;
P2=0;
Ny=0; % 记录垂直方向连续周长像素点的个数
for i=1:x
for j=1:y
if (BW(i,j)>0)
P2=j;
if ((P2-P1)==1) % 判断是否为垂直方向连续的周长像素点
Ny=Ny+1;
end
P1=P2;
end
end
end
%检测水平方向连读的周长像素点%
P1=0;
P2=0;
Nx=0; % 记录水平方向连续周长像素点的个数
for j=1:y
for i=1:x
if (BW(i,j)>0)
P2=i;
if ((P2-P1)==1) % 判断是否为水平方向连续的周长像素点
Nx=Nx+1;
end
P1=P2;
end
end
end
SN=sum(sum(BW)); % 计算周长像素点的总数
Nd=SN-Nx-Ny; % 计算奇数码的链码数目
H=max(sum(I)); % 计算细胞的高度
W=max(sum(I')); % 图象I经矩阵转置后,计算宽度
L=sqrt(2)*Nd+Nx+Ny; % 计算周长
A=bwarea(I); % 计算面积
传入的图像必须是二值的哦
function [L,A,H,W]=canshu(I)
% 注意必须保证二值图像中,细胞区域为白色区域或者像素点值为“1”
[x,y]=size(I);
BW = bwperim(I,8); % 检测区域的边缘跟踪,用于计算周长
%检测垂直方向连读的周长像素点%
P1=0;
P2=0;
Ny=0; % 记录垂直方向连续周长像素点的个数
for i=1:x
for j=1:y
if (BW(i,j)>0)
P2=j;
if ((P2-P1)==1) % 判断是否为垂直方向连续的周长像素点
Ny=Ny+1;
end
P1=P2;
end
end
end
%检测水平方向连读的周长像素点%
P1=0;
P2=0;
Nx=0; % 记录水平方向连续周长像素点的个数
for j=1:y
for i=1:x
if (BW(i,j)>0)
P2=i;
if ((P2-P1)==1) % 判断是否为水平方向连续的周长像素点
Nx=Nx+1;
end
P1=P2;
end
end
end
SN=sum(sum(BW)); % 计算周长像素点的总数
Nd=SN-Nx-Ny; % 计算奇数码的链码数目
H=max(sum(I)); % 计算细胞的高度
W=max(sum(I')); % 图象I经矩阵转置后,计算宽度
L=sqrt(2)*Nd+Nx+Ny; % 计算周长
A=bwarea(I); % 计算面积
追问
这个函数我知道。关键我的图片里那个圆环和中间那部分二值化之后颜色不一样。不能测出整个圆的面积啊
追答
那你试试个算个,再加起来 或者该为一个颜色 再计算试试,,,
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询