LAB颜色空间提取L亮度通道后显示仍为彩色的原因求解
问题解答
你提取的LAB亮度通道本身是完全的单通道灰度数据,显示出彩色和数据本身无关,是图像显示工具的默认颜色映射配置导致的:
- 主流Python可视化库(如matplotlib)的
imshow函数在渲染单通道数值数组时,默认会使用带彩色渐变的伪彩映射(如默认的viridis映射),将0~100的亮度值映射为蓝到黄的渐变色彩,才会出现你截图里的彩色显示效果。
解决方法
- 显示时手动指定灰度颜色映射即可得到正常的灰度亮度图,以matplotlib为例,代码修改为
plt.imshow(sharpImageLightChannel, cmap='gray')即可。 - 你提到的numpy快捷提取单通道的写法:不需要双层循环遍历,直接使用
sharpImageLightChannel = sharpImageLab[:, :, 0]或者更简洁的sharpImageLightChannel = sharpImageLab[..., 0]就能拿到完全一致的亮度通道数据,运算效率远高于手动遍历。
额外注意
skimage的rgb2lab输出的L通道取值范围为0100,如果你需要将亮度通道保存为标准8位灰度图像,需要先将值归一化到0255区间再转换数据类型,示例代码为:
import numpy as np sharpImageLightChannel_8bit = (sharpImageLightChannel / 100 * 255).astype(np.uint8)
内容的提问来源于stack exchange,提问作者Tejesh Avadanam
相关产品推荐
相关产品推荐

