C# 基于halcon的视觉工作流-章21-点查找
C# 基于halcon的视觉工作流-章21-点查找
本章目标:
一、检测显著点;
二、Harris检测兴趣点;
三、Harris二项式检测兴趣点;
四、Sojka运算符检测角点;
五、Lepetit算子检测兴趣点;
一、检测显著点
halcon算子points_foerstner用于检测图像中的显著点(重要点),重要点是与邻域不同的点,即图像函数在二维中变化的点,这些变化一方面发生在图像边缘的交叉处(称为连接点、角点),另一方面也发生在颜色或亮度与周围邻域不同的地方(称为区域点)。
与C#联合开发时可用如下方法实现
HOperatorSet.PointsFoerstner(imageReduced, sigmaGrad1, sigmaInt1, sigmaPoints1, threshInhom1, threshShape1, smoothing1, eliminateDoublets1, out crossRow, out crossColumn, out HTuple coRRJunctions, out HTuple coRCJunctions, out HTuple coCCJunctions, out HTuple rowArea, out HTuple columnArea, out HTuple coRRArea, out HTuple coRCArea, out HTuple coCCArea);
其中,输入参数:
imageReduced为输入图像,
sigmaGrad1为梯度平滑量,
sigmaInt1为渐变平滑量,
sigmaPoints1为函数平滑量,
threshInhom1为非均区域分割阈值,
threshShape1为点区域分割的阈值,
smoothing1为平滑方法,
eliminateDoublets1为消除多重检测点,
输出参数:
crossRow为连接点的行坐标,
crossColumn为连接点的列坐标,
coRRJunctions为连接点的协方差矩阵的行部分,
coRCJunctions为连接点的协方差矩阵的混合部分,
coCCJunctions为连接点的协方差矩阵的列部分,
rowArea为区域点的行坐标,
columnArea为区域点的列坐标,
coRRArea为区域点的协方差矩阵的行部分,
coRCArea为区域点的协方差矩阵的混合部分,
coCCArea为区域点的协方差矩阵的列部分
效果如下图
二、Harris检测兴趣点
halcon算子points_harris 基于平滑矩阵从图像中提取兴趣点。
与C#联合开发时可用如下方法实现
HOperatorSet.PointsHarris(imageReduced, sigmaGrad2, sigmaSmooth2, alpha2, threshold2, out crossRow, out crossColumn);
其中,imageReduced为输入图像,
sigmaGrad2为梯度平滑量,
sigmaSmooth2为渐变平滑量,
alpha2为平方梯度矩阵的平方轨迹的权重,
threshold2为点的最小过滤器响应,
crossRow为输出点的行坐标,
crossColumn为输出点的列坐标
效果如下图
三、Harris二项式检测兴趣点
halcon算子points_harris_binomial 是 Harris 角点检测的二项式近似实现,通过优化计算方式提升运算速度,同时保持与标准 Harris 检测相似的精度。
与C#联合开发时可用如下方法实现
HOperatorSet.PointsHarrisBinomial(imageReduced, maskSizeGrad3, maskSizeSmooth3, alpha3, threshold3, subpix3, out crossRow, out crossColumn);
其中,imageReduced为输入图像,
maskSizeGrad3为二项式平滑量,
maskSizeSmooth3为渐变平滑量,
alpha3为平方梯度矩阵的平方轨迹的权重,
threshold3为点的最小过滤器响应,
subpix3为打开或关闭亚像素细化,
crossRow为输出点的行坐标,
crossColumn为输出点的列坐标
效果如下图
四、Sojka运算符检测角点
halcon算子points_sojka 专用于检测图像中的角点(两条非共线边缘的交点),通过分析局部邻域梯度方向变化实现高精度定位。
与C#联合开发时可用如下方法实现
HOperatorSet.PointsSojka(imageReduced, maskSize4, sigmaW4, sigmaD4, minGrad4, minApparentness4, minAngle4, subpix4, out crossRow, out crossColumn);
其中,imageReduced为输入图像,
maskSize4为过滤器尺寸,
sigmaW4为权重函数的西格玛根据到角候选的距离,
sigmaD4为西格玛的权重函数表示到理想灰度值边缘的距离,
minGrad4为梯度最小值,
minApparentness4为外观最小值,
minAngle4为角点方向变化的阈值(弧度),
subpix4为角点的亚像素精确计算,
crossRow为输出点的行坐标,
crossColumn为输出点的列坐标
效果如下图
五、Lepetit算子检测兴趣点
halcon算子points_lepetit 是 Halcon 中用于快速提取兴趣点(如角点、水滴状结构)的高效算子,特别适合实时性要求高的场景。
与C#联合开发时可用如下方法实现
HOperatorSet.PointsLepetit(imageReduced, radius5, checkNeighbor5, minCheckNeighborDiff5, minScore5, subpix5, out crossRow, out crossColumn);
其中,imageReduced为输入图像,
radius5为圆半径,
checkNeighbor5为圆圈上已检查的邻居数量,
minCheckNeighborDiff5为每个圆点的灰度值差阈值,
minScore5为最小比分,
subpix5为角点的亚像素精确计算,
crossRow为输出点的行坐标,
crossColumn为输出点的列坐标
效果如下图
halcon中点查找还有很多算子,本文仅描述以上几种。
上述内容需要一定的技术功底,本章至此已结束,欢迎阅读下章,谢谢!