考虑大小为 1920x1080 的图像。如何为 720x960 ROI 做 cufft R2C 和 C2R?
问问题
126 次
1 回答
1
正如评论中所指出的,CUfft 完全支持通过 API 的高级数据布局功能对数组中的数据子集执行转换和逆变换。引用文档:
高级布局可以被视为在访问输入/输出数据数组之上的附加抽象层。批处理中信号编号 b 中坐标 [z][y][x] 的元素将与内存中的以下地址相关联:
一维
input[ b * idist + x * istride] output[ b * odist + x * ostride]
二维
input[b * idist + (x * inembed[1] + y) * istride] output[b * odist + (x * onembed[1] + y) * ostride]
3D
input[b * idist + ((x * inembed[1] + y) * inembed[2] + z) * istride] output[b * odist + ((x * onembed[1] + y) * onembed[2] + z) * ostride]
isstride 和 ostride 参数分别表示两个连续输入和输出元素在最低有效(即最内)维度上的距离。在单个 1D 变换中,如果要在变换中使用每个输入元素,
istride
则应设置为 1 ;如果要在转换中使用所有其他输入元素,则应将 isstride 设置为 2 。类似地,在单个 1D 变换中,如果希望将最终元素一个接一个紧凑地输出,ostride
则应设置为 1 ;如果需要最小有效维度输出数据之间的间距,ostride
则应将其设置为元素之间的距离。
您可以在此Stack Overflow 问题中找到在 cuFFT 中使用高级数据布局的示例
于 2018-02-12T10:13:39.557 回答