From 70636427825e85d96d2ae901a0ad08da53035c8f Mon Sep 17 00:00:00 2001 From: jerryzeng Date: Tue, 19 May 2026 17:19:31 +0800 Subject: [PATCH] =?UTF-8?q?wheelArchHeigthMeasure=20version=201.4.2=20:=20?= =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=A0=87=E5=AE=9A=E5=9D=97=E5=87=B9=E6=A7=BD?= =?UTF-8?q?=E9=95=BF=E5=BA=A6=E8=AE=A1=E7=AE=97=E6=96=B9=E6=B3=95=EF=BC=8C?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=BA=86=E5=99=AA=E7=82=B9=E6=BB=A4=E9=99=A4?= =?UTF-8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sourceCode/wheelArchHeigthMeasure.cpp | 27 ++++++++++++++++--- .../wheelArchHeigthMeasure_test.cpp | 8 +++--- 2 files changed, 27 insertions(+), 8 deletions(-) diff --git a/sourceCode/wheelArchHeigthMeasure.cpp b/sourceCode/wheelArchHeigthMeasure.cpp index 8c85a08..f15c5f1 100644 --- a/sourceCode/wheelArchHeigthMeasure.cpp +++ b/sourceCode/wheelArchHeigthMeasure.cpp @@ -17,7 +17,8 @@ //version 1.3.6 : 轮眉到轮心高度计算方法进行了修正,重新从由两点距离修改为Y高度差。 //version 1.4.0 : 添加了标定块凹槽长度计算API。 //version 1.4.1 : 优化了标定块凹槽长度计算方法,使用前部1/4和后部1/4点计算,跳开中间波动比较大的点。 -std::string m_strVersion = "1.4.1"; +//version 1.4.2 : 优化标定块凹槽长度计算方法,添加了噪点滤除。 +std::string m_strVersion = "1.4.2"; const char* wd_wheelArchHeigthMeasureVersion(void) { return m_strVersion.c_str(); @@ -1200,20 +1201,38 @@ double wd_getCalibrationBlockLength( //计算长度 std::vector> validLines; + for (int line = 0; line < lineNum; line++) { std::vector< SVzNL3DPosition> lineData; + std::vector< int> ptIdxCheck; for (int j = 0; j < linePtNum; j++) { if (objMask[line][j] >= 0) { int clusterPtIdx = objMask[line][j]; - if(objClusters[objIdx][clusterPtIdx].pt3D.z > 1e-4) + if (objClusters[objIdx][clusterPtIdx].pt3D.z > 1e-4) + { lineData.push_back(objClusters[objIdx][clusterPtIdx]); + ptIdxCheck.push_back(j); + } } } - if(lineData.size() > 10) - validLines.push_back(lineData); + if (lineData.size() > 10) + { + bool validLine = true; + for (int j = 1; j < (int)lineData.size(); j++) + { + if (ptIdxCheck[j] - ptIdxCheck[j - 1] > 3) + { + validLine = false; + break; + } + + } + if(true == validLine) + validLines.push_back(lineData); + } } std::vector gaugeLen; diff --git a/wheelArchHeigthMeasure_test/wheelArchHeigthMeasure_test.cpp b/wheelArchHeigthMeasure_test/wheelArchHeigthMeasure_test.cpp index e4eaa38..e747483 100644 --- a/wheelArchHeigthMeasure_test/wheelArchHeigthMeasure_test.cpp +++ b/wheelArchHeigthMeasure_test/wheelArchHeigthMeasure_test.cpp @@ -2960,7 +2960,7 @@ int main() }; SVzNLRange fileIdx[4] = { - {1,20}, {1,20}, {1,20}, {1,21} + {1,20}, {1,20}, {21,21}, {22,22} }; const char* ver = wd_wheelArchHeigthMeasureVersion(); @@ -2996,9 +2996,9 @@ int main() SSG_treeGrowParam growParam; growParam.maxLineSkipNum = 5; - growParam.yDeviation_max = 5.0; - growParam.maxSkipDistance = 5.0; - growParam.zDeviation_max = 5.0;// + growParam.yDeviation_max = 1.5; + growParam.maxSkipDistance = 1.5; + growParam.zDeviation_max = 1.5;// growParam.minLTypeTreeLen = 100; //mm growParam.minVTypeTreeLen = 100; //mm SVzNLRangeD calibratiionBlockYRange = { -1000, 500 };