neozhaoliang / surround-view-system-introduction

A full Python implementation for real car surround view system
MIT License
871 stars 307 forks source link

手动标定获取投影矩阵的过程,四个点的选择有什么讲究,因为任意选的话,很难完美拼接? #4

Closed dagongzhizheng closed 4 years ago

neozhaoliang commented 4 years ago

不能任意选,一般来说是选择地面上一个矩形区域的四个顶点,实在不行一个四边形的四个顶点也行。 最重要的是:假设你选择了地面上的四个点 {P1, P2, P3, P4},并且它们在投影后的鸟瞰图中的像素坐标是 {x_i, y_i, i=1,2,3,4} (这些是你自己定义的),那么你需要将这里的 dstL, dstF 手动替换为它们的坐标,并且在点击时按照一样的顺序来点击。

你可能需要了解一些关于射影变换和四点对应的知识来更好的理解这一部分。

五一过节后这个项目会有一个很大的更新,代码更整洁清楚,并会放上一个实车录制的原始数据,并且给出可以流畅运行的实车版本。

dagongzhizheng commented 4 years ago

谢谢你的回复!,我之前表述的不是太清楚,对的那几个点不是任意选的,投影变换我了解一点。如果要求出投影矩阵,必须的在投影前的图像上选取4个点,同时选择与投影前4个点相对应的透视变换的四个点;变换后的四个点在get_projection_maps.py脚本给出,即dstF,dstL。需要人工选择的其实就是投影前的四个点,这个其实就是get_projection_maps.py脚本里的 colors = [(0, 0, 255), (0, 255, 0), (255, 0, 0), (0, 255, 255)] ,而且我也注意到了这几颜色点的顺序必须与鼠标点击的顺序一致;以上步骤其实都是ok,而且是可以拼接成功的,只是随着每次标注的位置不同,拼接的结果会有很大不同,而且要完美呈现实验里的效果着实有些困难,不过最后我还是复现了比较完美的结果,我反复看了示例给出的两幅手动标定图,数着那四个点在方格上的准确位置,4辐图严格按照相同的格子位置进行的标注,最后才ok的。为了使得效果更好,同一行两个点的y坐标最好是一样的。我实验了很多次,如果不严格按照示例给出的点的位置进行标注,拼出来的图很不好看;所以我的意思是如果没有给出示例图,那这四个点是如何精准的找到的?亦或是如果那个标定版的格子数与示例里不一样,如何准确找到手动标定的四点,我其实是想表达这个意思的。

------------------ 原始邮件 ------------------ 发件人: "Zhao Liang"<notifications@github.com>; 发送时间: 2020年4月30日(星期四) 上午8:21 收件人: "neozhaoliang/surround-view-system-introduction"<surround-view-system-introduction@noreply.github.com>; 抄送: "中山靖王"<995883920@qq.com>;"Author"<author@noreply.github.com>; 主题: Re: [neozhaoliang/surround-view-system-introduction] 手动标定获取投影矩阵的过程,四个点的选择有什么讲究,因为任意选的话,很难完美拼接? (#4)

不能任意选,一般来说是选择地面上一个矩形区域的四个顶点,实在不行一个四边形的四个顶点也行。 最重要的是:假设你选择了地面上的四个点 {P1, P2, P3, P4},并且它们在投影后的鸟瞰图中的像素坐标是 {x_i, y_i, i=1,2,3,4} (这些是你自己定义的),那么你需要将这里的 dstL, dstF 手动替换为它们的坐标,并且在点击时按照一样的顺序来点击。

你可能需要了解一些关于射影变换和四点对应的知识来更好的理解这一部分。

五一过节后这个项目会有一个很大的更新,代码更整洁清楚,并会放上一个实车录制的原始数据,并且给出可以流畅运行的实车版本。

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub, or unsubscribe.

neozhaoliang commented 4 years ago

也可以选择其它点,不是唯一的。

2020-04-30 15-48-04屏幕截图

我建议选择的区域最好对称地位于镜头视野中心部分,这样获得的效果好。不规则的四边形或者是位于一个很小的范围的四边形会导致拼接效果很差。这是因为鱼眼镜头在校正的时候被展开的比例是不均匀的。