0

考虑大小为 1920x1080 的图像。如何为 720x960 ROI 做 cufft R2C 和 C2R?

4

1 回答 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 回答