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脚本
Sep 01 Python
python使用WMI检测windows系统信息、硬盘信息、网卡信息的方法
May 15 Python
Python实现查找匹配项作处理后再替换回去的方法
Jun 10 Python
Python 快速实现CLI 应用程序的脚手架
Dec 05 Python
Python使用numpy实现BP神经网络
Mar 10 Python
Python利用正则表达式实现计算器算法思路解析
Apr 25 Python
python版飞机大战代码分享
Nov 20 Python
Centos7 下安装最新的python3.8
Oct 28 Python
python实现字符串和数字拼接
Mar 02 Python
对python中各个response的使用说明
Mar 28 Python
pyinstaller打包找不到文件的问题解决
Apr 15 Python
python+pygame实现坦克大战小游戏的示例代码(可以自定义子弹速度)
Aug 11 Python
python数据分析之单因素分析线性拟合及地理编码
python可视化分析绘制带趋势线的散点图和边缘直方图
基于Python编写一个监控CPU的应用系统
如何基于python实现单目三维重建详解
python如何读取和存储dict()与.json格式文件
Jun 25 #Python
python运行脚本文件的三种方法实例
Jun 25 #Python
如何利用python创作字符画
You might like
我的论坛源代码(三)
2006/10/09 PHP
攻克CakePHP系列一 连接MySQL数据库
2008/10/22 PHP
php简单统计字符串单词数量的方法
2015/06/19 PHP
在b/s开发中经常用到的javaScript技术
2006/08/23 Javascript
jQuery form 表单验证插件(fieldValue)校验表单
2016/01/24 Javascript
分享10个优化代码的CSS和JavaScript工具
2016/05/11 Javascript
基于JavaScript实现添加到购物车效果附源码下载
2016/08/22 Javascript
微信小程序 前端源码逻辑和工作流详解
2016/10/08 Javascript
JS+CSS3制作炫酷的弹窗效果
2016/11/08 Javascript
如何解决vue与传统jquery插件冲突
2017/03/20 Javascript
微信小程序支付之c#后台实现方法
2017/10/19 Javascript
深入浅析Vue中的slots/scoped slots
2018/04/03 Javascript
详解微信小程序input标签正则初体验
2018/08/18 Javascript
JavaScript实现字符串与HTML格式相互转换
2020/03/17 Javascript
python client使用http post 到server端的代码
2013/02/10 Python
Python在Console下显示文本进度条的方法
2016/02/14 Python
python leetcode 字符串相乘实例详解
2018/09/03 Python
Python多线程threading模块用法实例分析
2019/05/22 Python
numpy创建单位矩阵和对角矩阵的实例
2019/11/29 Python
python pymysql链接数据库查询结果转为Dataframe实例
2020/06/05 Python
python脚本和网页有何区别
2020/07/02 Python
python怎么对数字进行过滤
2020/07/05 Python
深入了解Python enumerate和zip
2020/07/16 Python
解决import tensorflow导致jupyter内核死亡的问题
2021/02/06 Python
骆驼官方商城:CAMEL
2016/11/22 全球购物
New Balance波兰官方商城:始于1906年,百年慢跑品牌
2017/08/15 全球购物
耐克中国官方商城:Nike中国
2018/10/18 全球购物
Bally澳大利亚官网:瑞士奢侈品牌
2018/11/01 全球购物
Airbnb爱彼迎官网:成为爱彼迎房东,赚取收入
2019/03/14 全球购物
倩碧澳大利亚官网:Clinique澳大利亚
2019/07/22 全球购物
早会主持词
2014/03/17 职场文书
教师辞职书范文
2015/02/26 职场文书
大学生党员自我评价
2015/03/04 职场文书
2016五一手机促销广告语
2016/01/28 职场文书
python生成随机数、随机字符、随机字符串
2021/04/06 Python
python自动获取微信公众号最新文章的实现代码
2022/07/15 Python