浮点RGB值与颜色的UByte RGB值
Float RGB values vs ubyte RGB values for colour
(ubyte是未签名的char)
例如,在颜色类中使用float值作为rgb值的浮点值有什么意义?它提供了更准确性吗?那空间呢?使用Float vs Ubyte有什么性能/障碍?
pro:
- 进行数学时,不需要转换为/从float转换
- 在应用许多处理步骤时,更准确地保留了中间值
- 具有更大的动态范围和分辨率
- float是GPU等自然格式
con:
- 需要更多存储
在很可能的情况下,它确实提供了更精确的精度。正如另一个答案中提到的那样,不必来回转换也有好处,这反过来又会失去中间结果 - 想象一下您的像素在float中为1.0(字节中255),并且您乘以0.65。然后将其转换回整数,即166.75-但我们将其舍入至166。因此,我们损失了0.75。如果我们进行进一步的数学,错误可能会变得更大...当然,如果某些中间步骤导致我们的价值超过255(1.0)或低于0(0.0),则完全有可能保留新的价值一段时间,然后在需要时"修复"。
当然,您不能将更多的数据存储在更少的空间中(通常),因此典型的浮点数比字节大4倍。一些GPU具有16位浮子,可容纳11位Mantissa和4-5位的指数,这使它们适合大多数简单的像素数学。但这仍然是尺寸的两倍,但不是"精确度"的两倍(我的一位同事花了很多时间试图使用16位浮子来获取算法以匹配32位浮标的结果,并且从未完全到达那里)。
相关文章:
- 使用FFMPEG将RGB图像序列保存到.mp4时出现问题
- 将RGB图像保存为PPM格式
- 在 C++ 中将 RGB 更改为灰度
- Qt中的RGB图像处理
- 在C++中查找像素 RGB 数据的最快方法是什么?
- 无法获取要在 OpenGL ES2 中显示的 RGB 纹理
- 如何将 MJPEG 解码为原始 RGB(或 YUV)数据
- 我们可以将阈值应用于色彩空间模型的单个组件(如 RGB 和 LAB)吗?
- 如何使用 C++将 2D RGB 数组转换为 dds 文件?
- 在RAW图像中提取RGB通道值的库或方法
- 将Kinect v2帧速率(rgb、深度、骨架)设置为每秒25帧
- Qmage:如何将灰色图像转换为RGB热图
- 使用范围(OpenCV)脱粒RGB图像
- 如何将RGB像素缓冲区转换为IRandomAccessStream^
- (C++)(Visual Studio) 将高斯模糊滤镜应用于 RGB 中的灰度图像
- #Define , RGB colors for NeoPIxel
- 根据 C++ 中生成的随机数的值生成 Html RGB 值
- 用 c++ 将函数 RGB 写入 HSL
- 为什么延迟太高,即使只是 RGB 到灰色转换 (Vivado HLS)?
- 浮点RGB值与颜色的UByte RGB值