1. 本际云推荐 - 专业推荐VPS、服务器,IDC点评首页
  2. 云主机运维
  3. VPS运维

python图像处理数据格式及色调空间变换

图象数据格式及变换

在skimage中,照片实际上是一个numpy二维数组,由于二维数组的数据格式有许多种,可以相互变换,因此图像数据格式也可以有许多种。在skimage中,这种数据格式及其取值如下所示表所显示:

python图像处理数据格式及色调空间变换

一张图片的像素值范围是[0,255],因此默认类型是unit8,可使用以下代码查看数据类型:

from skimage import io,data
img=data.chelsea()
print(img.dtype.name)

特别注意的是,float类型的范围是[-1,1]或[0,1]之间。当一张彩色图片转换为灰度图后,它的类型就由unit8变成了float。

1、unit8转float

from skimage import data,img_as_float
img=data.chelsea()
print(img.dtype.name)
dst=img_as_float(img)
print(dst.dtype.name)

输出:

uint8
float64

2、float转unit8

from skimage import img_as_ubyte
import numpy as np
img=np.array([0,0.5,1],dtype=float)
print(img.dtype.name)
dst=img_as_ubyte(img)
print(dst.dtype.name)

输出:

float64
uint8

注意:float转为unit8时,有可能会造成数据的损失,因此会有警告提醒。

除了这两种最常用的转换以外,还有许多其它的类型转换,如下所示表:

颜色空间及其转换

除了直接转换可以改变数据类型外,还可以通过颜色空间转换来改变数据类型。常用的颜色空间有灰度空间、rgb空间、hsv空间和cmyk空间。颜色空间转换后,图片类型都变成了float型。所有的颜色空间转换函数都在skimage的color模块内。

例:rgb转灰度图

from skimage import io,data,color
img=data.lena()
gray=color.rgb2gray(img)
io.imshow(gray)

其它的转换用法都是一样的,列举常用的如下:

  • skimage.color.rgb2grey(rgb)
  • skimage.color.rgb2hsv(rgb)
  • skimage.color.rgb2lab(rgb)
  • skimage.color.gray2rgb(image)
  • skimage.color.hsv2rgb(hsv)
  • skimage.color.lab2rgb(lab)

实际上,上面的所有转换函数,都可以用一个函数来代替skimage.color.convert_colorspace(arr,fromspace,tospace),表示将arr从fromspace颜色空间转换到tospace颜色空间。

例:rgb转hsv

from skimage import io,data,color
img=data.lena()
hsv=color.convert_colorspace(img,'RGB','HSV')
io.imshow(hsv)

在color模块的颜色空间转换函数中,还有一个比较有用的函数是skimage.color.label2rgb(arr),可以根据标签值对图片进行着色。以后的图片分类后着色就可以用这个函数。

例:将lena图片分成三类,然后用默认颜色对三类进行着色

from skimage import io,data,color
import numpy as np
img=data.lena()
gray=color.rgb2gray(img)
rows,cols=gray.shape
labels=np.zeros([rows,cols])
for i in range(rows):
    for j in range(cols):
        if(gray[i,j]<0.4):
            labels[i,j]=0
        elif(gray[i,j]<0.75):
            labels[i,j]=1
        else:
            labels[i,j]=2
dst=color.label2rgb(labels)
io.imshow(dst)

结尾

综上所述,本文主要是介绍了python图像处理数据格式及色调空间变换实例,希望对大家有所帮助,也祝愿大家能够尽早的涨薪。

原创文章,作者:小编小本本,如若转载,请注明出处:https://www.benjiyun.com/yunzhujiyunwei/vps-yunwei/6806.html