添加分段平滑
This commit is contained in:
parent
7af730c44f
commit
e31ec0effd
@ -2383,16 +2383,16 @@ void sg_getBagPosition(
|
||||
//逐行提取特征
|
||||
for (int hLine = 0; hLine < hLineNum; hLine++)
|
||||
{
|
||||
if (hLine == 116)
|
||||
if (hLine == 14)
|
||||
int kkk = 1;
|
||||
std::vector<SVzNL3DPosition> smoothData;
|
||||
//sg_lineSegSmoothing(
|
||||
// hLines[hLine],
|
||||
// algoParam.cornerParam.minEndingGap, //分段的Y间隔。大于此间隔,为新的分段
|
||||
// algoParam.cornerParam.minEndingGap_z,//分段的Z间隔。大于此间隔,为新的分段
|
||||
// 5,
|
||||
// smoothData);
|
||||
sg_lineDataSmoothing(hLines[hLine], 5, smoothData);
|
||||
sg_lineSegSmoothing(
|
||||
hLines[hLine],
|
||||
algoParam.cornerParam.minEndingGap, //分段的Y间隔。大于此间隔,为新的分段
|
||||
algoParam.cornerParam.minEndingGap_z,//分段的Z间隔。大于此间隔,为新的分段
|
||||
5,
|
||||
smoothData);
|
||||
//sg_lineDataSmoothing(hLines[hLine], 5, smoothData);
|
||||
SSG_lineFeature a_hLine_featrues;
|
||||
a_hLine_featrues.lineIdx = hLine;
|
||||
#if BAG_ALGO_USE_CORNER_FEATURE
|
||||
|
||||
@ -94,7 +94,7 @@ void sg_lineDataSmoothing(
|
||||
return;
|
||||
}
|
||||
|
||||
//对扫描线按分段进行平滑
|
||||
//对扫描线按分段进行平滑。
|
||||
void sg_lineSegSmoothing(
|
||||
std::vector<SVzNL3DPosition>& input,
|
||||
double seg_y_deltaTh, //分段的Y间隔。大于此间隔,为新的分段
|
||||
@ -102,21 +102,25 @@ void sg_lineSegSmoothing(
|
||||
int smoothWin,
|
||||
std::vector<SVzNL3DPosition>& output)
|
||||
{
|
||||
output.resize(input.size()); // 预分配足够的空间
|
||||
std::copy(input.begin(), input.end(), output.begin());
|
||||
//output.resize(input.size()); // 预分配足够的空间
|
||||
//std::copy(input.begin(), input.end(), output.begin());
|
||||
|
||||
int dataSize = input.size();
|
||||
//计算分段
|
||||
std::vector<std::vector<SVzNL3DPosition>> segs;
|
||||
std::vector<SVzNL3DPosition> a_seg;
|
||||
int segStart = -1;
|
||||
for (int i = 0; i < dataSize; i++)
|
||||
{
|
||||
SVzNL3DPosition a_pt = input[i];
|
||||
//seg判断
|
||||
if (a_pt.pt3D.z > 1e-4)
|
||||
{
|
||||
if (a_seg.size() == 0)
|
||||
if (segStart < 0)
|
||||
{
|
||||
a_seg.push_back(a_pt);
|
||||
segStart = 1;
|
||||
}
|
||||
else //检查两点距离
|
||||
{
|
||||
SVzNL3DPosition pre_pt = a_seg.back();
|
||||
@ -128,8 +132,12 @@ void sg_lineSegSmoothing(
|
||||
a_seg.clear();
|
||||
a_seg.push_back(a_pt);
|
||||
}
|
||||
else
|
||||
a_seg.push_back(a_pt);
|
||||
}
|
||||
}
|
||||
else
|
||||
a_seg.push_back(a_pt);
|
||||
}
|
||||
//last
|
||||
if (a_seg.size() > 0)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user