我在我的代码有对象的边界。我想用这些边界计算的特点这些对象在我前面的循环。请帮助解决

33视图(30天)
=边缘(边缘imgContrast,“精明”);
se = strel (“磁盘”1);
edgesClean = imclose(边缘,se);
edgesClean = imfill (edgesClean,“黑洞”);
B = bwboundaries (edgesClean);
(X, Y) = meshgrid(1:列,1:行);
numZones areaOfEachZone = 0 (1);
profileCounts =南(1、numZones);
totalArea =南(1、numZones);
avgSize =南(1、numZones);
zoneArea =南(1、numZones);
avgCircularity =南(1、numZones);
avgFeret =南(1、numZones);
avgMinFeret =南(1、numZones);
k = 1: numZones
%为该区域创建一个二进制的面具
zoneMask = (√(X - X) ^ 2 + (Y - Y) ^ 2) > = (k)半径)& (sqrt ((X - X) ^ 2 + (Y - Y) ^ 2) <半径(k + 1));
areaOfEachZone (k) =总和(zoneMask,“所有”)* pixelSize ^ 2;
%计算连接组件在这个区
cc = bwconncomp (zoneMask);
%计算区域属性为每个连接组件在这个区
statscc = regionprops (cc、“区域”,“重心”,“偏心”,“周长”,“MajorAxisLength”,“MinorAxisLength”,“循环”);
%计算每个对象和存储区域属性的数组
% =[]领域;
areaOfEachZone = [];
feretDiams = [];
圆=南(大小(B, 1), 1);%初始化循环数组来南
j = 1:尺寸(B, 1)
边界= B {j};
objectMask = poly2mask(边界(:,2),边界(:1),大小(AI, 1),大小(AI, 2));
regionProps = regionProps (objectMask,“区域”,“周长”,“MaxFeretProperties”);
%计算循环
如果~ isempty (regionProps) & &大小(regionProps 1) = = 1 & & regionProps。区> 0%排除零面积的地区
圆= 4 *π* regionProps.Area / regionProps.Perimeter ^ 2;
如果循环> = 0 & &循环< = 1%循环应该在0和1之间
循环(j) =循环;
其他的
循环(j) =南;
结束
areaOfEachZone (j) = regionProps.Area;
feretDiams (j) = regionProps.MaxFeretDiameter;
其他的
areaOfEachZone (j) = 0;
循环(j) =南;
feretDiams (j) = 0;
结束
结束
%计算该区域的特性
numObjects = cc.NumObjects;
如果numObjects > 0
区域= [statscc.Area];
profileCounts (k) = numObjects;
totalArea (k) =(地区)和* pixelSize ^ 2;
% zoneArea (k) = areaOfEachZone (k);
%计算该区域的平均大小的线粒体
avgSize (k) =意味着(地区)* pixelSize ^ 2;
%圆= [statscc.Circularity];
avgCircularity (k) =意味着(循环(isfinite(循环)));
% ferets = [statscc.MajorAxisLength];
feretDiams (j) = regionProps.MaxFeretDiameter;
avgFeret (k) =意味着(feretsDiams) * pixelSize;
minFerets = [statscc.MinorAxisLength];
avgMinFeret (k) =意味着(minFerets) * pixelSize;
结束
结束
所以我新手matlab,一些团体中的其他人之前我正在离开、现在我必须解决我得到一些错误。我遇到了这堵墙,因为更大的循环应该是图像中特定区域但我有另一个回路,indixes边界发现,区域内成功但是没有结果,这些边界的特征,区域内正常索引。你有什么建议来纠正呢?
3评论
Chanille
Chanille 2023年4月6日
@Image分析师 我仍然有一个问题,即使读你的很酷的演示。我怎么能确保边界检测是regionprops k循环计算在我吗?谢谢你!我期待着这个论坛有一天。:)

登录置评。

接受的答案

图像分析
图像分析 2023年4月6日
你不需要内部循环的大小(B, 1)。您可以简单地把所有的值
%计算区域属性为每个连接组件在这个区
statscc = regionprops (cc、“区域”,“重心”,“偏心”,“周长”,“MajorAxisLength”,“MinorAxisLength”,“循环”);
meanArea =意味着([statscc.Area])
xyCentroids = vertcat (statscc.Centroid);%不确定你想要做什么。
meanEccentricity =意味着([statscc.Eccentricity])
meanMajorAxisLength =意味着([statscc.MajorAxisLength])
meanMinorAxisLength =意味着([statscc.MinorAxisLength])
meanCircularity =意味着([statscc.Circularity])
%等等。
52岁的评论

登录置评。

更多的答案(0)