编程语言
首页 > 编程语言> > Python颜色空间转换(sRGB,AdobeRGB,CIE XYZ,Lab,HSV互转)

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

作者:互联网

颜色空间转换

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

安装imgvision 1.6.5

imgvision 通过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

标签:CIE,Python,Image,cvtor,Lab,RGB,图像,互转,xyz
来源: https://blog.csdn.net/Syuhen/article/details/122777454