Python颜色空间转换(sRGB,AdobeRGB,CIE XYZ,Lab,HSV互转)

颜色空间转换

颜色空间的灵活运用将使得图像处理识别等变得更加灵活简便。相比python-opencv,imgvision不局限于数据类型,适用于双精度以及各进制图像的转换。 imgvision库用于进行图像处理与质量评价。该库仅基于Numpy库进行编写,通过矩阵的方式对图像进行快速处理,包括不限于光谱图像的不同光源下颜色空间转换、RGB图像不同光源下的色空间转换、光谱图像余弦距离的监督聚类、图像的质量评价等。

安装imgvision 1.6.5

通过pip直接进行安装:

pip install imgvision

颜色空间互转

下面案例将进行演示颜色空间的互相转换。

import numpy as np
import imgvision as iv

#导入RGB图像
Image = np.load(RGB_image.npy)
print(Image.shape)
#(2560,2560,3)  导入RGB图像分辨率为2560*2560


#创建转换器
cvtor = iv.cvtcolor()

#RGB转XYZ
xyz_Image = cvtor.rgb2xyz(Image)

#RGB转Lab
lab_Image = cvtor.rgb2lab(Image)

#xyz转Lab
lab_Image = cvtor.xyz2lab(xyz_Image)

#RGB转HSV
hsv_Image = cvtor.rgb2hsv(Image)  #输出HSV数值范围 H:0~360 S:0~1 V:0~1

#HSV转RGB
RGB_Image = cvtor.hsv2rgb(hsv_Image)

#Lab转XYZ
xyz_Image = cvtor.lab2xyz(lab_Image)

#Lab转RGB
RGB_Image = cvtor.lab2rgb(lab_Image)

#xyz转sRGB
sRGB_Image = cvtor.xyz2srgb(xyz_Image)

对于光源和RGB空间有一定要求的,可以进行更详细的设置,如下:

import numpy as np
import imgvision as iv

#导入RGB图像
Image = np.load(RGB_image.npy)
print(Image.shape)
#(2560,2560,3)  导入RGB图像分辨率为2560*2560
Image = Image/np.max(Image) #归一化操作

#创建转换器
cvtor = iv.cvtcolor(illuminant=d50) #默认为传入图像D65光源下进行转换。illuminant=d50则表示是光源d50下的图像

#RGB转XYZ
xyz_Image = cvtor.rgb2xyz(Image,space=srgb) #默认为sRGB转CIE1964 XYZ。
#space=adobergb则表示传入rgb为AdobeRGB。除此之外还包括apple display p3,space=adp3

#RGB转Lab
lab_Image = cvtor.rgb2lab(Image,space=srgb) #space参数解释同RGB转XYZ

#xyz转Lab
lab_Image = cvtor.xyz2lab(xyz_Image)

#RGB转HSV
hsv_Image = cvtor.rgb2hsv(Image,img_type=Norm)  
#默认Norm表示rgb图像为float类型并且数值范围在0~1之间(超过1的数值仍然会参与运算且不会被任何处理压缩)
#若图像为uint8或0~255范围则输入img_type=

#HSV转RGB
RGB_Image = cvtor.hsv2rgb(hsv_Image)

#Lab转XYZ
xyz_Image = cvtor.lab2xyz(lab_Image)

#Lab转RGB
RGB_Image = cvtor.lab2xyz(lab_Image,space=srgb) #将Lab图像转换为sRGB
经验分享 程序员 微信小程序 职场和发展