最近很多人问我有没有卡尺工具算法,反映现有的卡尺工具不能满足需求,尤其是准确性方面。我先实现卡尺中最基础的功能:边缘定位,即halcon中的gen_measure_rectangle2算子。下面是该算法需要用到的知识点:
1.创建旋转矩形及计算采样点。
2.根据周围像素对采样点进行插值。
3.平滑灰度平均值曲线,求导,拟合为抛物线取极值。
接下来我一步一步地实现:
第一步,创建一个旋转矩形,一般的直线卡尺是拉取一条直线,我也是这个做法,直线由首尾两点确定,直线的长度和方向等同于旋转矩形的长度和方向,旋转矩形的宽度需要单独设定,这里我设置为5。
第二步,确定旋转矩形内采样点,从直线起点出发,每隔一个单位长度计算两侧垂直于直线方向的采样点,直到终点,图中同一组采样点由相同颜色标记。
第三步,对所有采样点进行插值,找到距离采样点最近的四个像素,根据距离插值得到采样点灰度值,这里使用的是双线性插值(b