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使用心得之获得github代码库列表
Jun 25 Python
python进阶教程之模块(module)介绍
Aug 30 Python
Python字符串替换实例分析
May 11 Python
python复制文件的方法实例详解
May 22 Python
Django1.7+python 2.78+pycharm配置mysql数据库
Oct 09 Python
深入理解NumPy简明教程---数组3(组合)
Dec 17 Python
python实现简单遗传算法
Mar 19 Python
tensorflow 中对数组元素的操作方法
Jul 27 Python
对Python中plt的画图函数详解
Nov 07 Python
python字典的setdefault的巧妙用法
Aug 07 Python
python批量处理txt文件的实例代码
Jan 13 Python
python 装饰器的基本使用
Jan 13 Python
python数据分析之单因素分析线性拟合及地理编码
python可视化分析绘制带趋势线的散点图和边缘直方图
基于Python编写一个监控CPU的应用系统
如何基于python实现单目三维重建详解
python如何读取和存储dict()与.json格式文件
Jun 25 #Python
python运行脚本文件的三种方法实例
Jun 25 #Python
如何利用python创作字符画
You might like
常用表单验证类,有了这个,一般的验证就都齐了。
2006/12/06 PHP
AJAX的跨域访问-两种有效的解决方法介绍
2013/06/22 PHP
PHP7安装Redis扩展教程【Linux与Windows平台】
2016/09/30 PHP
bindParam和bindValue的区别以及在Yii2中的使用详解
2018/03/12 PHP
jQuery 动画基础教程
2008/12/25 Javascript
Javascript的并行运算实现代码
2010/11/19 Javascript
使用jQuery全局事件ajaxStart为特定请求实现提示效果的代码
2010/12/30 Javascript
js的一些常用方法小结
2011/06/29 Javascript
JavaScript设计模式之单例模式实例
2014/09/24 Javascript
第一次接触神奇的Bootstrap网格系统
2016/07/27 Javascript
微信公众号开发 实现点击返回按钮就返回到聊天界面
2016/12/15 Javascript
利用adb shell和node.js实现抖音自动抢红包功能(推荐)
2018/02/22 Javascript
学习node.js 断言的使用详解
2019/03/18 Javascript
vue中img src 动态加载本地json的图片路径写法
2019/04/25 Javascript
实现vuex原理的示例
2020/10/21 Javascript
手写Vue2.0 数据劫持的示例
2021/03/04 Vue.js
讲解Python中的递归函数
2015/04/27 Python
python:接口间数据传递与调用方法
2018/12/17 Python
python 多线程串行和并行的实例
2019/02/22 Python
Python代码实现删除一个list里面重复元素的方法
2019/04/02 Python
Python爬虫动态ip代理防止被封的方法
2019/07/07 Python
Python序列对象与String类型内置方法详解
2019/10/22 Python
python lambda函数及三个常用的高阶函数
2020/02/05 Python
Django多层嵌套ManyToMany字段ORM操作详解
2020/05/19 Python
python 简单的调用有道翻译
2020/11/25 Python
css图标制作教程制作云图标
2014/01/19 HTML / CSS
Bjorn Borg官方网上商店:国际运动时尚品牌
2016/08/27 全球购物
应届大学毕业生找工作的求职信范文
2013/11/29 职场文书
竞聘演讲稿范文
2014/01/12 职场文书
建筑技术负责人岗位职责
2015/04/13 职场文书
2015年度合同管理工作总结
2015/05/22 职场文书
MySQL root密码的重置方法
2021/04/21 MySQL
Python带你从浅入深探究Tuple(基础篇)
2021/05/15 Python
Oracle创建只读账号的详细步骤
2021/06/07 Oracle
CSS实现单选折叠菜单功能
2021/11/01 HTML / CSS
mysql sock 文件解析及作用讲解
2022/07/15 MySQL