【发布时间】:2017-12-28 19:48:45
【问题描述】:
在阅读关于 CLK_FILTER_LINEAR 的 OpenCL 1.1 规范(第 8.2 节,p258)时,我了解到为了计算双线性滤波器的权重,将减去 0.5,如下所示。
i0 = address_mode((int)floor(u – 0.5))
j0 = address_mode((int)floor(v – 0.5))
i1 = address_mode((int)floor(u – 0.5) + 1)
j1 = address_mode((int)floor(v – 0.5) + 1)
而对于 CLK_FILTER_NEAREST,它直接将 u 和 v 设为如下:
i = address_mode((int)floor(u))
j = address_mode((int)floor(v))
因此,似乎存在差异。当我提供非标准化坐标 (5,4) 时,NEAREST 过滤器将读取像素 (5,4)。而对于 LINEAR 过滤器,将从 (4,3)、(5,3)、(4,4) 和 (5,4) 产生平均像素。但即使对于 LINEAR 过滤器,我也希望从 (5,4) 中读取,因为权重将为 1、0、0、0。
谁能澄清一下规范的意图?
【问题讨论】:
标签: opencl gpgpu hardware-acceleration