自学内容网 自学内容网

自动驾驶AVM环视算法--相机的联合标定算法实现和exe测试demo

更新:测试的exe程序,无需解压码就可以体验算法测试效果

链接:https://pan.baidu.com/s/1OfuslVNcTXAZWvwiqflWsA 提取码:zoef 

1、压缩包解压后显示如下所示

测试文件包括:可执行的exe文件、测试的图片等。

2.双击exe就可以运行测试程序,测试程序界面显示如下所示:

3、开始标定按钮如下所示

右上角的就是标定出来的角度,红色的框就是检测出来的标定布黑色框。

运行结果如下所示

联合标定算法的具体实现如下所示

int R = 8;

g_num = 0;
//二值化  第一次 获取白色和黑色的二值区分
js_Binarization(data, w, h, 210, 0);

//获取联通区域
int MaxCANum = js_getConnectedArea(data, w, h, 0);

//二值化  第二次 获取白色最大的区域的二值图像,相当于提取标定板
js_Binarization(data, w, h, MaxCANum, 1);

//填补空洞
js_setwhite(data, w, h);


//数据复制  目的是保存原始数据,一下需要对图像进行修改
memcpy(g_imgDataGray, data, sizeof(char) * w * h);


//角点检测
js_CornerDetection(data, R, w, h, 200);//thre=210

二值化   第三次 获取到检测到的角点的二值图像
memset(data, 0x00, sizeof(char) * w * h);
for (int i = 0; i < g_num; i++)
{
data[g_pointy[i] * w + g_pointx[i]] = 255;
}


//联通区域查找
int NumA = js_getConnectedArea(data, w, h, 1);
memcpy(g_imgDataGray1, data, sizeof(char) * w * h);

int result_num = 0;
float result_x[500];
float result_y[500];
int result_flag[500];
//计算平均点坐标
//result_num = js_CalculateAveragePointCoordinates(data, result_x, result_y, result_flag, w, h, NumA);
result_num = js_getSanplePoint(data, result_x, result_y, result_flag, w, h, NumA);

for (int i = 0; i < result_num; i++)
{
printf("(%f %f)\n", result_x[i], result_y[i]);
}
if (result_num >= 8)
{
//查找四边形
int ResultPointNum = js_QuadrangleDetection(g_imgDataGray, result_x, result_y, result_flag, g_ResultPoint, w, h, result_num);

if (ResultPointNum != 2)
{
printf("Faile!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n");
return -1;
}
else
{
//坐标点排序
js_CoordinatePointSort(g_ResultPoint, w, ResultPointNum);

for (int i = 0; i < ResultPointNum; i++)
{
printf("(%f %f)(%f %f)(%f %f)(%f %f)\n", g_ResultPoint[8 * i + 0], g_ResultPoint[8 * i + 1], g_ResultPoint[8 * i + 2], g_ResultPoint[8 * i + 3], g_ResultPoint[8 * i + 4], g_ResultPoint[8 * i + 5], g_ResultPoint[8 * i + 6], g_ResultPoint[8 * i + 7]);
}

//坐标点微调
//js_CoordinatePointFineTun(g_imgDataGray, ResultPoint, w, h, ResultPointNum);


//标定
js_getcalresult(g_ResultPoint, a, f,c, w, h, Rx, Ry, Rz);
return 0;
}
}
else
{
return -1;
}


原文地址:https://blog.csdn.net/jinshushijie/article/details/140138382

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!