neozhaoliang / surround-view-system-introduction

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

run_get_weight_matrices.py 拼接效果差 #86

Closed FunnyWii closed 4 months ago

FunnyWii commented 4 months ago

老师您好,

得到project matrix以后运行run_get_weight_matrices.py,得到下面图片:

Screenshot from 2024-04-03 14-21-32

能看到左、右两侧明显凸出来一块,而且在左下角/右上角缺了一块。

原图和project后的图像:

Screenshot from 2024-04-03 14-34-46

Screenshot from 2024-04-03 14-35-55

也给您说一下我的参数设置, lQDPJwkk4zNe72HNA_DNAtiwZAAT5wYywssF-ktQQAcdAA_728_1008

标定布尺寸约600x460,因此将原本total_w/h修改了。 shift_w/h设置的均为200, inn shift w 60 inn shift h 120 车辆的4个corner也根据在上图中的尺寸修改了。

计算得到的project_keypoint如下:

project_keypoints = {
    "front": [(shift_w + 100, shift_h),
              (shift_w + 360, shift_h),
              (shift_w + 100, shift_h + 100),
              (shift_w + 360, shift_h + 100)],

    "back":  [(shift_w + 100, shift_h),
              (shift_w + 360, shift_h),
              (shift_w + 100, shift_h + 100),
              (shift_w + 360, shift_h + 100)],

    "left":  [(shift_h + 100, shift_w),
              (shift_h + 500, shift_w),
              (shift_h + 100, shift_w + 100),
              (shift_h + 500, shift_w + 100)],

    "right": [(shift_h + 100, shift_w),
              (shift_h + 500, shift_w),
              (shift_h + 100, shift_w + 100),
              (shift_h + 500, shift_w + 100)],
}

不太清楚目前的问题出在哪里 运行设备Jetson Orin,Ubuntu 2004,相机是4个森云GMSL接口相机 水平视场120度 1920X1080

FunnyWii commented 4 months ago

左下角和右下角的缺失,我感觉是标定布摆放位置的问题,很明显,得到的左&右BEV图像并不能看到对角线。 不过左右会多出来一块还是不太理解怎么回事

neozhaoliang commented 4 months ago

你的图中有两个相机并不能看到完整的棋盘格,也就是说,它和相邻相机的重叠区域不能覆盖这个棋盘格,当然拼起来以后棋盘格上就会缺一块。

左右凹进来是因为 Opencv 裁剪的原因,你需要按照文档里面的说法,调整 shift 和 scale。

notfarice commented 4 months ago

标定布放斜了是不是会导致重叠的地方对不齐?

FunnyWii commented 4 months ago

你的图中有两个相机并不能看到完整的棋盘格,也就是说,它和相邻相机的重叠区域不能覆盖这个棋盘格,当然拼起来以后棋盘格上就会缺一块。

左右凹进来是因为 Opencv 裁剪的原因,你需要按照文档里面的说法,调整 shift 和 scale。

好的谢谢,我会再试试调整scale和shift来解决两边凸出来的问题。

FunnyWii commented 4 months ago

标定布放斜了是不是会导致重叠的地方对不齐?

我前向相机似乎是安的有些歪,而不是标定布斜了 标定布斜了,一个直观的结果就是,得到的梯形的BEV的长边是斜的...

notfarice commented 4 months ago

标定布放斜了是不是会导致重叠的地方对不齐?

我前向相机似乎是安的有些歪,而不是标定布斜了 标定布斜了,一个直观的结果就是,得到的梯形的BEV的长边是斜的...

你这个拼的还行,就是像素不大够,感觉你前后的标定布拿近一点就行。我也刚接触这个,还不是很明白。我用打印的棋盘格在桌上摆开,最终拼接起来角上总是对不齐。大佬说选的点占画面比例太小,应该有这个原因。但是我想他这个目标点的选择默认标定布是前后平行侧方垂直的,如果放歪一点是不是角上就错开了。

FunnyWii commented 4 months ago

标定布放斜了是不是会导致重叠的地方对不齐?

我前向相机似乎是安的有些歪,而不是标定布斜了 标定布斜了,一个直观的结果就是,得到的梯形的BEV的长边是斜的...

你这个拼的还行,就是像素不大够,感觉你前后的标定布拿近一点就行。我也刚接触这个,还不是很明白。我用打印的棋盘格在桌上摆开,最终拼接起来角上总是对不齐。大佬说选的点占画面比例太小,应该有这个原因。但是我想他这个目标点的选择默认标定布是前后平行侧方垂直的,如果放歪一点是不是角上就错开了。

你有没有改对应的keypoint?

FunnyWii commented 4 months ago

你的图中有两个相机并不能看到完整的棋盘格,也就是说,它和相邻相机的重叠区域不能覆盖这个棋盘格,当然拼起来以后棋盘格上就会缺一块。

左右凹进来是因为 Opencv 裁剪的原因,你需要按照文档里面的说法,调整 shift 和 scale。

老师您好,

请问调整shiftscale有啥技巧吗,因为我看文档中的描述:

你可以尝试调整并选择合适的横向、纵向压缩比和图像中心的位置使得地面上的标志点出现在画面中舒服的位置上,以方便进行标定。

看起来这两个参数对最终结果没有影响,又看了一些issue,大家又说这个对最终结果是有影响的。

请问该怎么调整这两个参数才能保证最后拼接结果是一个矩形,而不像我这个这样,有很多凹凸呢。

neozhaoliang commented 4 months ago

看起来这两个参数对最终结果没有影响,又看了一些issue,大家又说这个对最终结果是有影响的。

影响虽然有,但是很小,你可以不用关心。

请问该怎么调整这两个参数才能保证最后拼接结果是一个矩形,而不像我这个这样,有很多凹凸呢。

你可以试试设置不同的值,看看校正后的图像的变化,然后选一个合适的。这个没有固定的规则。

notfarice commented 4 months ago

你的图中有两个相机并不能看到完整的棋盘格,也就是说,它和相邻相机的重叠区域不能覆盖这个棋盘格,当然拼起来以后棋盘格上就会缺一块。 左右凹进来是因为 Opencv 裁剪的原因,你需要按照文档里面的说法,调整 shift 和 scale。

老师您好,

请问调整shiftscale有啥技巧吗,因为我看文档中的描述:

你可以尝试调整并选择合适的横向、纵向压缩比和图像中心的位置使得地面上的标志点出现在画面中舒服的位置上,以方便进行标定。

看起来这两个参数对最终结果没有影响,又看了一些issue,大家又说这个对最终结果是有影响的。

请问该怎么调整这两个参数才能保证最后拼接结果是一个矩形,而不像我这个这样,有很多凹凸呢。

我感觉这个和看地图的时候一样的,缩放平移把我们关注的画面放在屏幕中心。你这个应该是scale太小了,加大scale的值,到你的图像中没有凹凸,这时图像肯定有剪裁,调整shift尽可能保留像素。这个过程可能要调好几次。