这一节是此方案设计的最核心部分,指针能否准确的定位出来是最关键的问题,在学习过程中,初步采用几种方案来尽可能的提高指针定位的精度:
1.指针定位的方案: Hough直线检测 环向模板匹配法 径向灰度求和法
2.指针细化的方法(算法将放在文章最后提供测试与使用)
对于指针定位,初步的设计思路是采用Hough直线检测的方法,而后通过直线上的点与圆的关系来将错误检测的直线进行过滤,此方案的难点在于Hough直线检测的方法经常与Canny边缘检测算子进行联合使用,而Canny算子的阈值选择以及Hough直线的长度选择都是比较动态的过程,在调节过程非常困难,本文采用可以连续调节Canny算子和Hough检测阈值的方法,来选择适合于方案的值,初步测试有较好的效果。
函数使用如下:
// HoughLine
midd_line_img = HoughLine(midd_img, midd_line_img);
OpenCV中的函数封装为:
// CannyDetect
Canny(gray_img, midd_line_img, 23, 55, 3);
// HoughLine
HoughLinesP(midd_line_img, mylines, 1, CV_PI / 180, g_nthreshold + 1, 20, 5);
采用的可以调节的Canny算子的程序及效果图如下:
#include <opencv2/opencv.hpp>
#include <opencv2/h