如何提取树胸径(胸径)使用helperExtractTreeMetrics函数? ?

2视图(30天)
你好
我在研究激光雷达工具箱使用激光雷达工具箱指南。
TreeId、TreeHeight等提取使用helperExtractTreeMetrics功能树中的属性提取步骤。然而,它并不提供的最重要的一个属性树中提取,直径1.2高度提取。
还有其他方法来提取胸径?
激光雷达数据类型= >厚度
这是helperExtractTreeMetrics函数
函数treeMetrics = helperExtractTreeMetrics (normalizedPoints label3D)
% 2021年版权MathWorks公司。
%考虑分属于有效的标签
validLabels = label3D ~ = 0;
filteredLabels = label3D (validLabels);
filteredPoints = normalizedPoints (validLabels:);
[filteredLabels, sortedIds] = (filteredLabels)进行排序;
filteredPoints = filteredPoints (sortedIds:);
%确定点的数量在每一个细胞
uniqueLabels =独特(filteredLabels);
idCounts = histc (filteredLabels uniqueLabels);% #好< HISTC >
%创建treeMetrics表
treeMetrics =表(“大小”,[长度(idCounts)、7],…
VariableTypes, {“uint32”、“uint32”,“双”,“双”,“双”,“双”,“双”},…
VariableNames, {‘TreeId’,‘NumPoints’,‘TreeApexLocX’,‘TreeApexLocY’,‘TreeHeight’,‘CrownDiameter’,‘CrownArea});
endIdx = 0;
%循环有效的细胞
i = 1:长度(idCounts)
gridIdx = endIdx + 1;
endIdx = endIdx + idCounts(我);
treeMetrics.TreeId (i) =我;
treeMetrics.NumPoints (i) = idCounts(我);
[~,id] = max (filteredPoints (gridIdx: endIdx, 3));
treeMetrics.TreeApexLocX (i) = filteredPoints (gridIdx +符合,1);
treeMetrics.TreeApexLocY (i) = filteredPoints (gridIdx +符合,2);
treeMetrics.TreeHeight (i) = filteredPoints (gridIdx +符合,3);
如果(idCounts(我)> = 3)
(~ treeMetrics.CrownArea (i)] = convhull(双(filteredPoints (gridIdx: endIdx 1:2)));
其他的
treeMetrics.CrownArea (i) = 0;
结束
结束
treeMetrics。CrownDiameter = 2 *√(treeMetrics。CrownArea / pi);

答案(0)

类别

找到更多的在制导、导航和控制(GNC)帮助中心文件交换

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!