红外热像仪的标定关键在与从红外图像生成对应的棋盘格图像,生成棋盘格图像后即可运用张正友标定法进行标定。
具体的标定步骤如下:
1> 将图像从RGB颜色空间转换到HLS颜色空间,然后提取红色分量的范围,在红色范围的图像全部改为标准红色,其他颜色改为标准蓝色,然后转回RGB空间;
2>将生成的图像从RGB颜色空间转换到灰度空间,进行直方图均衡化和滤波处理。
3>提取图像的轮廓,去除面积过小或者线段长度过短的轮廓,并将前一个轮廓的终点与下一个轮廓的起始点连接起来,从而将提取的所有轮廓线连成一根轮廓;
4>提取轮廓线图像的凸包,并采用自适应算法将其近似成六边形。具体来讲就是通过控制
4.1: convexHull(Mat(contours_link[i]), hull[i]);提取凸包
4.2: approxPolyDP(Mat(hull[i]), poly[i], ratio * 5, true);通过控制ratio来控制控制精度使凸包近似成多边形,使之产生一个六边形;
5>查找六边形的两个短边(1-2和4-5),并根据直线找交点的办法(0-1与2-3)和(0-5与3-4)找出s1,s2,从而确立四边形的四个顶点0,s1,3,s2;
6> 利用四个顶点0,s1,3,s2和标准棋盘格(60,60)(60,420)(420,420)(420,60)进行透射变换,得到原图像的正视图;对透射图再次均衡化,并提取外轮廓;
7> 对图像从上到下,从下到上,从左到右,从右到左,计算每行或者每列小于9个像素的终止值,对这些画出行列直线;
8> 根据画出的行列计算棋盘格的中心和棋盘格大小;
9> 生成棋盘格图像,并利用透射反变换生成原红外图像对应的棋盘格图像并进行标定;