OpenCL读取图像精度

OpenCL读取图像精度,opencl,interpolation,Opencl,Interpolation,我正在尝试将图像放大254x倍。读取图像F返回的结果不是线性的,而是阶梯式的-我每15点观察一次跳跃。取样器的精度是多少 输入为9个值,输出为2304个值 摘自输出: x read_imagef 120 120 121 120.9375 122 121.875 123 122.8125 124 123.75 125 124.6875 126 125.625 127 126.5625 128 128.4375 129 129.375 130 130.3125 131 131.25 132 13

我正在尝试将图像放大254x倍。读取图像F返回的结果不是线性的,而是阶梯式的-我每15点观察一次跳跃。取样器的精度是多少

输入为9个值,输出为2304个值

摘自输出:

x   read_imagef
120 120
121 120.9375
122 121.875
123 122.8125
124 123.75
125 124.6875
126 125.625
127 126.5625
128 128.4375
129 129.375
130 130.3125
131 131.25
132 132.1875
133 133.125
134 134.0625
135 135
136 135.9375
137 136.875
138 137.8125
139 138.75
140 139.6875
141 140.625
142 141.5625
143 143.4375
144 144.375
145 145.3125
146 146.25
147 147.1875
148 148.125
149 149.0625
150 150
我希望read_imagef返回x的值


另外,我已经在Mali GPU上试用过了。

插值的精度通常由硬件定义,通常至少为8位

你给出的数字实际上比我预期的更糟:121120.9375122。。127126.5625128

在8位精度很好的情况下,使用取样器进行插值可以放大图像。对于任何更详细的东西,如高度贴图,您应该在OpenCL中进行插值,而不是依赖于采样器


也可能会耗尽位,因为只有23加1意味着计算浮点坐标。像2304这样的值在整数部分使用11个10加一个隐含位,而小数部分仅使用13。

输入:028857686411521440172820162304。我问题中的输出是前两点之间的少量插值。我已经意识到这是由于hardare插值的精度有限,并且像您建议的那样在OpenCL中实现了插值。此外,在插入原始坐标的同时,我正在插入与参考坐标的偏差-这允许对所有坐标范围具有相同的精度。您使用的是标准化还是非标准化的浮点坐标?@kanna float unnormalized