图像数据类型及颜色空间转换

摘要:
图像数据类型转换在草图中,图像是一个简单的numpy数组。数组数据有多种类型,可以相互转换。所有颜色空间转换函数都放置在草图的颜色模块中。HSV颜色空间是指2.2 rgb到HSV的色调、饱和度和亮度。事实上,上述所有转换函数都可以用一个函数代替:草图。颜色convert_Colorspace表示将arr从fromspace颜色空间转换为tospace颜色空间。

一 图像数据类型转换

在skimage中,一张图片就是一个简单的numpy数组,数组的数据类型有很多种,相互之间可以转换。这些数据类型及取值范围如下表所示:

图像数据类型及颜色空间转换第1张

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

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

结果为:uint8

1.1 unit8转float

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

结果如下所示:

uint8
float64

1.2 float转uint8

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

除了上述的两种转换,还有一些常见的转换,将他们一同整理到下表之下:

Function nameDescription
img_as_floatConvert to 64-bit floating point.
img_as_ubyteConvert to 8-bit uint.
img_as_uintConvert to 16-bit uint.
img_as_intConvert to 16-bit int.

二 颜色空间及其转换

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

2.1 rgb转灰度图

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

结果如下所示:

图像数据类型及颜色空间转换第2张

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

skimage.color.rgb2grey(rgb)

skimage.color.rgb2hsv(rgb)

skimage.color.rgb2lab(rgb)

skimage.color.gray2rgb(image)

skimage.color.hsv2rgb(hsv)

skimage.color.lab2rgb(lab)

基于上述的转换,有几点需要说明:

  • Lab颜色空间中的L分量用于表示像素的亮度,取值范围是[0,100],表示从纯黑到纯白;a表示从红色到绿色的范围,取值范围是[127,-128]b表示从黄色到蓝色的范围,取值范围是[127,-128]
  • HSV颜色空间指的是色调、饱和度和明度

2.2 rgb转hsv

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

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

结果如下图所示:

图像数据类型及颜色空间转换第3张

2.3 颜色空间转换中其他重要的函数

在color模块的颜色空间转换函数中,还有一个比较有用的函数是

                                 skimage.color.label2rgb(arr)

可以根据标签值对图片进行着色。以后的图片分类后着色就可以用这个函数。

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

from skimage import io,data,color
import numpy as np
img=data.astronaut()
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)

结果如下图所示:

图像数据类型及颜色空间转换第4张

参考:https://www.cnblogs.com/denny402/p/5122328.html

免责声明:文章转载自《图像数据类型及颜色空间转换》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇openstack知识---hypervisor「转」python数字图像处理(18):高级形态学处理下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Encrypt Decrypt

encryptstring                 DESCryptoServiceProvider desc = new DESCryptoServiceProvider();                byte[] key = System.Text.Encoding.Unicode.GetBytes(encryptkey);       ...

ElasticSearch 问题分析:No data nodes with HTTP-enabled available

环境:ES-5.4.0版本,部署方式:3master node+2client node+3data node 说明:data node和client node都配置了http.enabled: false,程序在写数据时报错:No data nodes with HTTP-enabled available 源码分析: 1 public static...

.NET Core MD5加密 32位和16位

public class MD5Help {   //此代码示例通过创建哈希字符串适用于任何 MD5 哈希函数 (在任何平台) 上创建 32 个字符的十六进制格式哈希字符串官网案例改编   /// <summary>   ///获取32位md5加密   /// </summary>   /// <param nam...

ORM操作mysql

创建表和添加数据import sqlalchemyfrom sqlalchemy import create_enginefrom sqlalchemy.ext.declarative import declarative_basefrom sqlalchemy import Column, Integer, Stringfrom sqlalchemy.o...

C#打印机操作类

using System; using System.Collections.Generic; using System.Text; namespace MacPrinter { public class ZPL_Command { /// (^EF)<summary> /// 清除设定 (已...

KNN算法源代码

import pandas as pdimport osdef creatcatesdir(data, target):# 获取去重后的分类列表 cates = list(data['channelName'].unique())# 打印类别 print(cates)# 建立类别文件夹 for cate in cates:# 拼接子目录路...