diff --git a/AlgorithmModule/src/ImgCheckAnalysisy.cpp b/AlgorithmModule/src/ImgCheckAnalysisy.cpp index 4974d72..3dae6e4 100644 --- a/AlgorithmModule/src/ImgCheckAnalysisy.cpp +++ b/AlgorithmModule/src/ImgCheckAnalysisy.cpp @@ -82,7 +82,7 @@ // 即使拟合到凸起外边缘也不影响方向角 #define SUPPORT_REFINE_SEGMENTS_DEFAULT 6 // 搜索列带内相邻像素(3 行灰度均值)的灰度差小于该值视为无边缘(极性无关,支架比外侧亮/暗均可) -#define SUPPORT_REFINE_MIN_CONTRAST 15.0 +#define SUPPORT_REFINE_MIN_CONTRAST 45.0 // ===== 稳健直线拟合(FitLineRobustTV)的偏离点剔除参数 ===== // FIT_LINE_MAD_SIGMA:MAD 倍数阈值。调大→保留更多采样点(噪声大时更稳,但离群点可能残留、直线被轻微拉偏); @@ -1904,21 +1904,19 @@ int ImgCheckAnalysisy::CheckRun() // 外侧 -> 内侧逐像素扫,取灰度梯度最大的位置作为该行支架边缘点 int nEdge = -1; - float fBestGrad = 0.0f; for (int x = nX0; (nStepX > 0) ? (x + nStepX <= nX1) : (x + nStepX >= nX1); x += nStepX) { if (x < 1 || x + nStepX < 1 || x >= grayRef.cols - 1 || x + nStepX >= grayRef.cols - 1) { continue; } - const float fGrad = fabs(gray3(nYDet, x + nStepX) - gray3(nYDet, x)); - if (fGrad > fBestGrad) + const float fGrad = gray3(nYDet, x); + if (fGrad > (float)SUPPORT_REFINE_MIN_CONTRAST) { - fBestGrad = fGrad; nEdge = x; } } - if (nEdge < 0 || fBestGrad < (float)SUPPORT_REFINE_MIN_CONTRAST) + if (nEdge < 0) { continue; // 该行列带内没有明显灰度阶跃,本行不参与拟合 }