是OpenVX warpa仿射接受转置矩阵,它是如何定义为行主要?



我是OpenVX的新手,从文档中了解到OpenVX使用行为主存储。下面的矩阵访问示例说明了这一点,就像我们在普通C代码中使用的普通行为主访问模式一样。

然后进入vx_matrix和vxCreateMatrix文档页面。前者有这样的语句:

VX_MATRIX_ROWS -矩阵的M维[REQ-1131]。只读(要求- 1132)。使用vx_size参数

VX_MATRIX_COLUMNS -矩阵的N维[REQ-1133]。只读(要求- 1134)。使用vx_size参数

而后者说:

vx_matrix vxCreateMatrix(
vx_context                                  c,
vx_enum                                     data_type,
vx_size                                     columns,
vx_size                                     rows);

所以根据我的理解,在OpenVX的世界里,当我说一个MxN矩阵时,M指的是行大小,N指的是列大小。vxCreateMatrix声明遵循行主存储器的规定,先参数column,再参数row

然而,当我到达翘曲仿射页时,它真的让我感到困惑,它说:

这个核用像素坐标平移[REQ-0498]的方法对2x3矩阵M执行仿射变换:

和C声明:

// x0 = a x + b y + c;
// y0 = d x + e y + f;
vx_float32 mat[3][2] = {
{a, d}, // 'x' coefficients
{b, e}, // 'y' coefficients
{c, f}, // 'offsets'
};
vx_matrix matrix = vxCreateMatrix(context, VX_TYPE_FLOAT32, 2, 3);
vxCopyMatrix(matrix, mat, VX_WRITE_ONLY, VX_MEMORY_TYPE_HOST);

如果M是一个2x3矩阵,根据上一节,它应该有2行3列。那么为什么要声明为mat[3][2]createMatrix而接受column=2row=3作为参数呢?我的理解完全错了吗?

这将是一个良好的开端,并有助于您的实现

https://software.intel.com/content/www/us/en/develop/documentation/sample-color-copy/top/color-copy-pipeline/color-copy-pipeline-the-scan-pre-process-openvx-graph.html

最新更新