python数字图像处理数据类型及颜色空间转换


Posted in Python onJune 28, 2022

一、图像数据类型及转换

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

Data type Range
uint8 0 to 255
uint16 0 to 65535
uint32 0 to 232
float -1 to 1 or 0 to 1
int8 -128 to 127
int16 -32768 to 32767
int32 -231 to 231 - 1

一张图片的像素值范围是[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转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

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

除了这两种最常用的转换以外,其实有一些其它的类型转换,如下表:

Function name Description
img_as_float Convert to 64-bit floating point.
img_as_ubyte Convert to 8-bit uint.
img_as_uint Convert to 16-bit uint.
img_as_int Convert to 16-bit int.

二、颜色空间及其转换

如前所述,除了直接转换可以改变数据类型外,还可以通过图像的颜色空间转换来改变数据类型。

常用的颜色空间有灰度空间、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)

python数字图像处理数据类型及颜色空间转换

在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数字图像处理数据类型及颜色空间转换

以上就是python数字图像处理数据类型及颜色空间转换的详细内容,更多关于python图像数据类型颜色空间的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
python使用post提交数据到远程url的方法
Apr 29 Python
Python编程入门的一些基本知识
May 13 Python
Python对象转JSON字符串的方法
Apr 27 Python
python 将字符串转换成字典dict的各种方式总结
Mar 23 Python
Python补齐字符串长度的实例
Nov 15 Python
python threading和multiprocessing模块基本用法实例分析
Jul 25 Python
Python Django2.0集成Celery4.1教程
Nov 19 Python
python 和c++实现旋转矩阵到欧拉角的变换方式
Dec 04 Python
Python对象的属性访问过程详解
Mar 05 Python
python matplotlib 绘图 和 dpi对应关系详解
Mar 14 Python
python里的单引号和双引号的有什么作用
Jun 17 Python
matplotlib绘制正余弦曲线图的实现
Feb 22 Python
python数据分析之单因素分析线性拟合及地理编码
python可视化分析绘制带趋势线的散点图和边缘直方图
基于Python编写一个监控CPU的应用系统
如何基于python实现单目三维重建详解
python如何读取和存储dict()与.json格式文件
Jun 25 #Python
python运行脚本文件的三种方法实例
Jun 25 #Python
如何利用python创作字符画
You might like
swfupload 多文件上传实现代码
2008/08/27 PHP
跟我学Laravel之视图 &amp; Response
2014/10/15 PHP
php中将一个对象保存到Session中的方法
2015/03/13 PHP
php使用Jpgraph绘制3D饼状图的方法
2015/06/10 PHP
PHP实现的简单缓存类
2015/07/29 PHP
[原创]ThinkPHP中SHOW_RUN_TIME不能正常显示运行时间的解决方法
2015/10/10 PHP
在JS中解析HTML字符串示例代码
2014/04/16 Javascript
JavaScript验证图片类型(扩展名)的函数分享
2014/05/05 Javascript
javascript实现检验的各种规则
2015/07/31 Javascript
详解JavaScript逻辑Not运算符
2015/12/04 Javascript
探索angularjs+requirejs全面实现按需加载的套路
2016/02/26 Javascript
jquery PrintArea 实现票据的套打功能(代码)
2017/03/17 Javascript
layui中layer前端组件实现图片显示功能的方法分析
2017/10/13 Javascript
node打造微信个人号机器人的方法示例
2018/04/26 Javascript
小程序视频列表中视频的播放与停止的示例代码
2018/07/20 Javascript
vue-rx的初步使用教程
2018/09/21 Javascript
你不知道的Vue技巧之--开发一个可以通过方法调用的组件(推荐)
2019/04/15 Javascript
JS中超越现实的匿名函数用法实例分析
2019/06/21 Javascript
[54:57]DOTA2-DPC中国联赛定级赛 Aster vs DLG BO3第二场 1月8日
2021/03/11 DOTA
Python中函数的用法实例教程
2014/09/08 Python
Python中用PIL库批量给图片加上序号的教程
2015/05/06 Python
Python中的日期时间处理详解
2016/11/17 Python
pandas 数据结构之Series的使用方法
2019/06/21 Python
python实现飞行棋游戏
2020/02/05 Python
HTML5之语义标签介绍
2016/07/07 HTML / CSS
英国版MAC彩妆品牌:Illamasqua
2018/04/18 全球购物
Farfetch台湾官网:奢侈品牌时尚购物平台
2019/06/17 全球购物
描述RIP和OSPF区别以及特点
2015/01/17 面试题
业务代表的岗位职责
2013/11/16 职场文书
管理专员自荐信
2014/01/26 职场文书
校园安全检查制度
2014/02/03 职场文书
2014预防青少年违法犯罪工作总结
2014/12/10 职场文书
Ajax是什么?Ajax高级用法之Axios技术
2021/04/21 Javascript
自己搭建resnet18网络并加载torchvision自带权重的操作
2021/05/13 Python
mysql中int(3)和int(10)的数值范围是否相同
2021/10/16 MySQL
纯 CSS 自定义多行省略的问题(从原理到实现)
2021/11/11 HTML / CSS