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中unittest模块做UT(单元测试)使用实例
Jun 12 Python
python cx_Oracle模块的安装和使用详细介绍
Feb 13 Python
Python正则表达式非贪婪、多行匹配功能示例
Aug 08 Python
浅谈numpy库的常用基本操作方法
Jan 09 Python
TensorFlow搭建神经网络最佳实践
Mar 09 Python
使用python根据端口号关闭进程的方法
Nov 06 Python
详解爬虫被封的问题
Apr 23 Python
Python使用APScheduler实现定时任务过程解析
Sep 11 Python
Python OrderedDict的使用案例解析
Oct 25 Python
python NumPy ndarray二维数组 按照行列求平均实例
Nov 26 Python
Python实现搜索算法的实例代码
Jan 02 Python
最小二乘法及其python实现详解
Feb 24 Python
python数据分析之单因素分析线性拟合及地理编码
python可视化分析绘制带趋势线的散点图和边缘直方图
基于Python编写一个监控CPU的应用系统
如何基于python实现单目三维重建详解
python如何读取和存储dict()与.json格式文件
Jun 25 #Python
python运行脚本文件的三种方法实例
Jun 25 #Python
如何利用python创作字符画
You might like
国外十大最流行的PHP框架排名
2013/07/04 PHP
php利用单例模式实现日志处理类库
2014/02/10 PHP
php中3种方法删除字符串中间的空格
2014/03/10 PHP
php禁止某ip或ip地址段访问的方法
2015/02/25 PHP
详解WordPress中过滤链接与过滤SQL语句的方法
2015/12/18 PHP
php实现获取近几日、月时间示例
2019/07/06 PHP
JavaScript DOM 学习第七章 表单的扩展
2010/02/19 Javascript
使用隐藏的new来创建对象
2011/03/29 Javascript
js中escape对应的C#解码函数 UrlDecode
2012/12/16 Javascript
图片延迟加载的实现代码(模仿懒惰)
2013/03/29 Javascript
JS HTML5 音乐天气播放器(Ajax获取天气信息)
2013/05/26 Javascript
基于jQuery实现最基本的淡入淡出效果实例
2015/02/02 Javascript
js实现鼠标点击左上角滑动菜单效果代码
2015/09/06 Javascript
深入理解JS函数的参数(arguments)的使用
2016/05/28 Javascript
js实现消息滚动效果
2017/01/18 Javascript
JS使用正则表达式找出最长连续子串长度
2017/10/26 Javascript
Vue.js 实现微信公众号菜单编辑器功能(一)
2018/05/08 Javascript
Vue内部渲染视图的方法
2019/09/02 Javascript
vue h5移动端禁止缩放代码
2019/10/28 Javascript
js通过循环多张图片实现动画效果
2019/12/19 Javascript
vue实现带过渡效果的下拉菜单功能
2020/02/19 Javascript
微信小程序自定义yPicker组件实现省市区三级联动功能
2020/10/29 Javascript
举例讲解Python编程中对线程锁的使用
2016/07/12 Python
Python使用matplotlib绘制余弦的散点图示例
2018/03/14 Python
Pandas中把dataframe转成array的方法
2018/04/13 Python
numpy中的delete删除数组整行和整列的实例
2018/05/09 Python
Windows 64位下python3安装nltk模块
2018/09/19 Python
解决PyCharm同目录下导入模块会报错的问题
2018/10/13 Python
Python实现变声器功能(萝莉音御姐音)
2019/12/05 Python
python如何将图片转换素描画
2020/09/08 Python
美国珠宝网上商店:Jeulia
2016/09/01 全球购物
意大利香水和彩妆护肤品购物网站:Ditano
2017/08/13 全球购物
全球工业:Global Industrial
2020/02/01 全球购物
车辆工程专业求职信
2014/04/28 职场文书
软件项目经理岗位职责
2015/04/01 职场文书
2016特色励志班级口号
2015/12/24 职场文书