neozhaoliang / surround-view-system-introduction

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

实车摄像头一般安装在后视镜下方,左右摄像头看到的参考点较前后摄像头看到的参考点较远,导致拼接效果差? #7

Closed winterhorse closed 4 years ago

winterhorse commented 4 years ago

通常需要汽车周围四个摄像头分别看到参考点,保证有较大的重叠区域,但是汽车左右的摄像头看到的参考点距离图像中心较远,会导致俯视变换后效果不理想(如波浪线),针对这个问题,有好的解决办法吗?

neozhaoliang commented 4 years ago

其实左右摄像头只需要关注正对摄像头的部分,车头车尾的部分使用的主要是前后摄像头的画面。你注意一下这里权重矩阵的计算: https://github.com/neozhaoliang/surround-view-system-introduction/blob/master/surround_view/birdview.py#L299 前后的画面一律在前。这保证了在融合时重合区域的部分尽量使用前后的画面。

如果你使用这个项目提供的参数和图像进行标定的话就会发现,它也会出现你说的问题,但是拼接后的效果还可以。

winterhorse commented 4 years ago

我大概明白你的意思:融合时尽量使用前后摄像头的数据来改善拼接的效果。但是我有时候实验发现左右摄像头可能由于内参误差较大导致单个摄像头俯视变换时效果很不好,容易出现波浪或者不平整。

neozhaoliang commented 4 years ago

内参误差的话属于标定的问题,如果摄像头本身质量不过关,与鱼眼镜头模型偏差较大的话,那就没办法了。 还有一种办法是多选几个点 > 4 个,使用 findHomography 来估计一个更好的投影矩阵。

winterhorse commented 4 years ago

我用的就是findHomography,参考点是8个。把车的尺寸缩小效果好一些。

neozhaoliang commented 4 years ago

看情况,如果后续开发车位检测和显示的话,缩小车尺寸就会得不到正确的距离。