update 支架边缘改为灰度卡控

dev_lsy
liusiyang 1 week ago
parent fd03ebe0ae
commit 8701839e58

@ -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; // 该行列带内没有明显灰度阶跃,本行不参与拟合
}

Loading…
Cancel
Save