投影矩阵如何成为长度为 8 的向量?

How can a projective matrix be a vector with length 8?

一个普通投影矩阵的大小为 3*3,有 9 个值。 但是 tensorflow transform 需要一个维度为 8 的向量 所以我不知道如何将我的矩阵转换成这个向量。

示例 - 我有执行旋转和平移的矩阵:

    top_row = [np.cos(rot_value), - np.sin(rot_value), trans_x]
    middle_row = [np.sin(rot_value), np.cos(rot_value), trans_y]
    last_row = [0, 0, 1]
    trans_matrix = np.stack((top_row, middle_row, last_row))

如何将此矩阵转换为 8 维向量,以便我可以使用张量流变换?

由于投影矩阵具有全局尺度的模糊性,可以乘以一个常数因子。投影变换有八个自由度,而不是九个,去除这个冗余的通常惯例是取右下角为1。

对于您的情况,您应该可以使用 top_row + middle_row + [0, 0]

更一般地说:

(trans_matrix/trans_matrix[2,2]).flat[:8]