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 相关文章推荐
Pyramid添加Middleware的方法实例
Nov 27 Python
Python设计模式编程中解释器模式的简单程序示例分享
Mar 02 Python
Python的净值数据接口调用示例分享
Mar 15 Python
python基于phantomjs实现导入图片
May 13 Python
Python实现在线音乐播放器
Mar 03 Python
详解Python在七牛云平台的应用(一)
Dec 05 Python
Django添加sitemap的方法示例
Aug 06 Python
Python 实现子类获取父类的类成员方法
Jan 11 Python
详解Python爬取并下载《电影天堂》3千多部电影
Apr 26 Python
Python 写入训练日志文件并控制台输出解析
Aug 13 Python
Python 读取用户指令和格式化打印实现解析
Sep 02 Python
基于PyQT实现区分左键双击和单击
May 19 Python
python数据分析之单因素分析线性拟合及地理编码
python可视化分析绘制带趋势线的散点图和边缘直方图
基于Python编写一个监控CPU的应用系统
如何基于python实现单目三维重建详解
python如何读取和存储dict()与.json格式文件
Jun 25 #Python
python运行脚本文件的三种方法实例
Jun 25 #Python
如何利用python创作字符画
You might like
一个连接两个不同MYSQL数据库的PHP程序
2006/10/09 PHP
Windows2003 下 MySQL 数据库每天自动备份
2006/12/21 PHP
PHP学习资料汇总与网址
2007/03/16 PHP
php将url地址转化为完整的a标签链接代码(php为url地址添加a标签)
2014/01/17 PHP
php json相关函数用法示例
2017/03/28 PHP
基于Jquery的回车成tab焦点切换效果代码(Enter To Tab )
2010/11/14 Javascript
silverlight线程与基于事件驱动javascript引擎(实现轨迹回放功能)
2011/08/09 Javascript
JavaScript字符串对象slice方法入门实例(用于字符串截取)
2014/10/16 Javascript
coffeescript使用的方式汇总
2015/08/05 Javascript
10分钟掌握XML、JSON及其解析
2020/12/06 Javascript
JS HTML图片显示Canvas 压缩功能
2017/07/21 Javascript
Vue2.0中集成UEditor富文本编辑器的方法
2018/03/03 Javascript
Angular学习笔记之集成三方UI框架、控件的示例
2018/03/23 Javascript
angular6.x中ngTemplateOutlet指令的使用示例
2018/08/09 Javascript
脚手架vue-cli工程webpack的作用和特点
2018/09/29 Javascript
[02:51]DOTA2战队出征照拍摄花絮 TI3明星化身时尚男模
2013/07/22 DOTA
[33:23]VG vs Pain 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Python编码时应该注意的几个情况
2013/03/04 Python
python处理cookie详解
2014/02/07 Python
Python struct模块解析
2014/06/12 Python
Python多线程实例教程
2014/09/06 Python
使用Python写一个量化股票提醒系统
2018/08/22 Python
Python实现定时执行任务的三种方式简单示例
2019/03/30 Python
python 实现交换两个列表元素的位置示例
2019/06/26 Python
Python面向对象原理与基础语法详解
2020/01/02 Python
解决Keras自带数据集与预训练model下载太慢问题
2020/06/12 Python
解决pytorch 交叉熵损失输出为负数的问题
2020/07/07 Python
Flask处理Web表单的实现方法
2021/01/31 Python
python和opencv构建运动检测器的实现
2021/03/03 Python
JAVA的事件委托机制和垃圾回收机制
2014/09/07 面试题
大学生活学习的自我评价
2013/12/03 职场文书
素食餐饮项目创业计划书
2014/02/02 职场文书
《彭德怀和他的大黑骡子》教学反思
2014/04/12 职场文书
电教室标语
2014/06/20 职场文书
Mysql存储过程、触发器、事件调度器使用入门指南
2022/01/22 MySQL
使用Python获取字典键对应值的方法
2022/04/26 Python