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