将图像浮动到整数类型图像

信息处理 图像处理 离散信号 图片 Python 直方图
2022-02-21 06:32:40

我有一张多光谱卫星图像,我想将每个图像波段“转换”为一个具有整数值的波段。例如拉伸?图像介于 0 和 255 之间。不知道如何进行。我还认为我可以制作直方图并将每个像素值替换为它所在的 bin 边缘。我不知道。我目前正在使用python。对此有什么想法吗?

3个回答

您应该查看 Envi 文档(用于处理多/高光谱图像的标准工具),了解它用于将多/高光谱数据适合 8 位以进行显示的拉伸。

这是一些使用的拉伸的页面,它将仿射函数应用于像素值并将值裁剪为最低和最高可显示值。特别是,查看优化的线性拉伸,这是 Envi 用来显示事物的默认设置。

正如斯科特在评论中指出的那样,快速的方法是乘以 255 并取结果的整数部分。

实际答案是(不幸的是,这是许多图像处理任务的一个非常常见的答案......)“取决于”

  • 浮动图像通常被假定为具有 0 和 1 之间的值,但可能不是您的传感器的情况,在这种情况下,您需要将 equi'n 脏解决方案中的值预乘以动态范围的倒数数据;
  • 如果您需要执行一些对比度增强,您可以应用此预乘通道方式(通过首先计算每个通道的最大值),一次用于所有数据(通过在所有通道中查找最大值),或您可以以更精明的方式分配动态范围(例如,按照您的建议计算直方图,或对数据值进行聚类......);
  • 多光谱图像通常包含几个光谱通道;-)。如果你想可视化你的数据,那么也许你也在寻找一种方法来找到你的数据和红-绿-蓝通道之间的映射。提供近红外-红-绿数据的传感器通常“按原样”重新映射(按照波长的顺序),即 NIR -> Red、Red -> Green、Green -> Red,但NDVI等复合值可以在某些情况下有用;
  • 如果您有很多输入光谱波长,那么您需要在独立可视化每个通道或在立方体中进行选择...

我认为您的描述使问题更难理解。
如果您显示您拥有的浮动图像的范围会更容易。
它在 0 和 1 之间吗?

如果是,那么您想将其转换为 0-255 整数。对?只需将您的图像乘以 255 并将其舍入为整数。

请注意,这种投射会使你的形象更糟(四舍五入的错误)