【ABCNet】训练自己的模型-贝塞尔曲线拉平

【ABCNet训练自己的模型(一)】
【ABCNet训练自己的模型(二)】
【ABCNet训练自己的模型(三)】

贝塞尔曲线拉平

贝塞尔曲线最终是通过插值的方法得到我们想要的图像,这个已经在之前的文章中介绍过;这里只介绍采样的方法:
在这里插入图片描述
这个函数实现的就是贝塞尔采样,拉平理解可以参考圆环拉平,只不过这里没有用连续点去做插值,而是直接将采样结果送给插值算法;

def _bezier_to_poly(self, bezier):
        # bezier to polygon, 20表示一条直线上采样点的个数,这个可以根据实际需求去设置,
        #直接影响是数值越大,代表你生成的拉平后图像分辨率越高,数值越小生成的图像分辨率会越小
        # 如果使用小分辨率的图像去插值变大,这个学图像的大家都知道会怎样,就不详细说了。
        u = np.linspace(0, 1, 20)
        bezier = bezier.reshape(2, 4, 2).transpose(0, 2, 1).reshape(4, 4)
        points = np.outer((1 - u) ** 3, bezier[:, 0]) \
            + np.outer(3 * u * ((1 - u) ** 2), bezier[:, 1]) \
            + np.outer(3 * (u ** 2) * (1 - u), bezier[:, 2]) \
            + np.outer(u ** 3, bezier[:, 3])
        points = np.concatenate((points[:, :2], points[:, 2:]), axis=0)

        return points

猜你喜欢

转载自blog.csdn.net/m0_37661841/article/details/109593249
今日推荐