首先说结论:对含有Bounding Box和Mask的目标进行旋转时,以Mask旋转为准,对Mask进行旋转之后计算外接矩形,而直接旋转Bounding Box再求外接矩形会产生偏差。
原因其实很容易理解,对于一些倾斜的目标,本身Bounding Box就有一定的偏差,旋转之后导致原先框中空白的区域不断扩大,就会导致边框变宽。
下面举例说明一下:
如果原图中的Bounding Box和Mask是水平竖直的,比如这种:
那么进行旋转也没有异常,这种情况下不管是用Bounding Box还是Mask算出来的旋转角都是一样的:
但是,如果图像本身如果存在倾斜,比如原图是这样的:
如果直接旋转Bounding Box再求min(x) min(y) max(x) max(y)外接矩形,得到的是这样的:
可以看出这个框左右都多出来一块,这就是产生了误差。
如果对Mask进行旋转,得到的正常结果是这样的:
手画了一下错误原因:
原图(黑色为目标,蓝色为正常坐标系与Bounding Box)
旋转图(黑色为目标,红色为正常坐标系与重新计算的Bounding Box)