一、原理




二、代码实现
- 窗口提取与边界处理。
- 计算窗口内灰度的一阶、二阶、三阶矩(原点矩),并计算方差、标准差、三阶中心矩和偏度。
- 根据偏度计算边缘比例参数p。
- 通过牛顿迭代求解归一化距离ρ。
- 计算边缘法线方向(使用灰度重心偏移)。
- 计算亚像素偏移和最终坐标。
cpp
/**
* @brief 经典灰度矩法亚像素边缘定位(基于Tabatabai-Mitchell模型)
* @param center 像素级边缘点坐标
* @param src_img 输入灰度图像(CV_8U)
* @param window_size 窗口大小,必须为奇数(如5、7、9),默认7
* @param sigma_threshold 判断是否为边缘的标准差阈值,默认15.0(需根据图像灰度范围调整)
* @return 亚像素坐标(浮点型)
*/
cv::Point2f subpixelEdgeGrayMomentClassic(
const cv::Point& center,
const cv::Mat& src_img,
int window_size = 7,
double sigma_threshold = 15.0
三、效果

获取源码请私信,可指导配置技术交流