如何在JavaAndroid中将32位RGBA图像转换为8位灰度图像?
How to convert 32 bit RGBA image to 8 bit greyscale image in Java Android?
我想在 Java Android.All 中将 32 位 RGBA 图像转换为 8 位灰度图像 Android.All 我尝试将 RGBA(4 通道)转换为灰度(4 通道)的其他代码。
任何人都可以帮助或告诉我如何将 RGBA(4 通道)图像转换为灰度(1 通道)图像。
首先,当转换为 8 位灰度时,RGBA 图像的 A 通道将被忽略。此时您将失去 alpha 通道的信息。
可以通过多种方式将 RGB 图像转换为灰度图像。最简单的方法是只采用 3 个通道中的一个(每个通道已经有 8 位)并从该通道创建一个 8 位图像。您会看到生成的灰度图像之间存在显着差异。您的结论可能是,忽略 2 个通道不是个好主意。
这可能会导致每个像素的灰度信息必须依赖于所有 3 个通道(R、G 和 B)的想法。
一种方法是将灰度值计算为R、G、B的平均值:
grayscale = (R+G+B)/3
更好的方法是将其计算为加权和:
grayscale = 0.21*R + 0.72*G + 0.07*B
试试这个,看看结果和它们之间的差异。
我想在 Java Android.All 中将 32 位 RGBA 图像转换为 8 位灰度图像 Android.All 我尝试将 RGBA(4 通道)转换为灰度(4 通道)的其他代码。
任何人都可以帮助或告诉我如何将 RGBA(4 通道)图像转换为灰度(1 通道)图像。
首先,当转换为 8 位灰度时,RGBA 图像的 A 通道将被忽略。此时您将失去 alpha 通道的信息。
可以通过多种方式将 RGB 图像转换为灰度图像。最简单的方法是只采用 3 个通道中的一个(每个通道已经有 8 位)并从该通道创建一个 8 位图像。您会看到生成的灰度图像之间存在显着差异。您的结论可能是,忽略 2 个通道不是个好主意。
这可能会导致每个像素的灰度信息必须依赖于所有 3 个通道(R、G 和 B)的想法。
一种方法是将灰度值计算为R、G、B的平均值:
grayscale = (R+G+B)/3
更好的方法是将其计算为加权和:
grayscale = 0.21*R + 0.72*G + 0.07*B
试试这个,看看结果和它们之间的差异。