Python颜色空间转换(sRGB,AdobeRGB,CIE XYZ,Lab,HSV互转)
作者:互联网
颜色空间转换
颜色空间的灵活运用将使得图像处理识别等变得更加灵活简便。相比python-opencv,imgvision不局限于数据类型,适用于双精度以及各进制图像的转换。
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