OpenCL中图像像素强度值与read_imagef返回值之间的关系

OpenCL中图像像素强度值与read_imagef返回值之间的关系,opencl,Opencl,OpenCL中read_imagef返回的值在0到1之间,而像素强度范围在0到255之间…我想对强度值进行进一步处理,以便仅基于强度值进行图像分割(执行的操作类似于查找两个强度值之间的差异、排序、查找最小值、洗牌等)。如何以整数形式获取0到255范围内的这些值(为方便起见)…?我是否可以将每个值乘以255,或者我是否需要执行其他操作…?读取图像f返回一个浮点4,并可用于使用通道数据类型UNORM\u INT8、UNORM\u INT16、SNORM\u INT8、SNORM\u INT16、HA

OpenCL中read_imagef返回的值在0到1之间,而像素强度范围在0到255之间…我想对强度值进行进一步处理,以便仅基于强度值进行图像分割(执行的操作类似于查找两个强度值之间的差异、排序、查找最小值、洗牌等)。如何以整数形式获取0到255范围内的这些值(为方便起见)…?我是否可以将每个值乘以255,或者我是否需要执行其他操作…?读取图像f返回一个浮点4,并可用于使用通道数据类型UNORM\u INT8、UNORM\u INT16、SNORM\u INT8、SNORM\u INT16、HALF\u FLOAT和FLOAT创建的图像。转换规则是nd在第8.3.1节中给出

要回答您的问题,是的,如果您的图像数据类型是UNORM_INT8,您可以简单地乘以255


使用UNORM_INT8的GPU通常比使用未签名的_INT8图像更快。

谢谢您的回答Eric。我已将数据类型指定为CL_FLOAT,以获取非规范化形式的值,但代码给出了一个运行时错误“ImageFilter.exe中0x541e7802处未处理的异常:0xC0000005:访问冲突读取位置0x03E4100。”为什么会发生这种错误。。。?