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 NumPy库安装使用笔记
May 18 Python
浅谈python中的占位符
Nov 09 Python
Python装饰器(decorator)定义与用法详解
Feb 09 Python
Python实现统计给定列表中指定数字出现次数的方法
Apr 11 Python
python3读取excel文件只提取某些行某些列的值方法
Jul 10 Python
Python3.5装饰器典型案例分析
Apr 30 Python
python实现登录密码重置简易操作代码
Aug 14 Python
python计算n的阶乘的方法代码
Oct 25 Python
Python多重继承之菱形继承的实例详解
Feb 12 Python
完美解决Django2.0中models下的ForeignKey()问题
May 19 Python
python爬虫 requests-html的使用
Nov 30 Python
详解pandas中利用DataFrame对象的.loc[]、.iloc[]方法抽取数据
Dec 13 Python
python数据分析之单因素分析线性拟合及地理编码
python可视化分析绘制带趋势线的散点图和边缘直方图
基于Python编写一个监控CPU的应用系统
如何基于python实现单目三维重建详解
python如何读取和存储dict()与.json格式文件
Jun 25 #Python
python运行脚本文件的三种方法实例
Jun 25 #Python
如何利用python创作字符画
You might like
thinkphp实现发送邮件密码找回功能实例
2014/12/01 PHP
php简单生成一组与多组随机字符串的方法
2017/05/09 PHP
javascript 火狐(firefox)不显示本地图片问题解决
2008/07/05 Javascript
jquery实现图片渐变切换兼容ie6/Chrome/Firefox
2013/08/02 Javascript
如何防止回车(enter)键提交表单
2014/05/11 Javascript
jQuery延迟加载图片插件Lazy Load使用指南
2015/03/25 Javascript
jQuery拖动元素并对元素进行重新排序
2015/12/30 Javascript
解析AngularJS中get请求URL出现的跨域问题
2016/12/01 Javascript
js倒计时小实例(多次定时)
2016/12/08 Javascript
vue父子组件的数据传递示例
2017/03/07 Javascript
关于webpack代码拆分的解析
2017/07/20 Javascript
JS实现的JSON数组去重算法示例
2018/04/11 Javascript
详解vuex commit保存数据技巧
2018/12/25 Javascript
微信小程序实现多个按钮的颜色状态转换
2019/02/15 Javascript
详解小程序input框失焦事件在提交事件前的处理
2019/05/05 Javascript
使用异步controller与jQuery实现卷帘式分页
2019/06/18 jQuery
原生js实现贪食蛇小游戏的思路详解
2019/11/26 Javascript
Vue组件模板的几种书写形式(3种)
2020/02/19 Javascript
jquery html添加元素/删除元素操作实例详解
2020/05/20 jQuery
JQuery通过键盘控制键盘按下与松开触发事件
2020/08/07 jQuery
[44:26]DOTA2上海特级锦标赛主赛事日 - 2 胜者组第一轮#4EG VS Fnatic第二局
2016/03/03 DOTA
python采用getopt解析命令行输入参数实例
2014/09/30 Python
详解Python3.6安装psutil模块和功能简介
2018/05/30 Python
PyQt5高级界面控件之QTableWidget的具体使用方法
2020/02/23 Python
python和go语言的区别是什么
2020/07/20 Python
加拿大最大的钻石商店:Peoples Jewellers
2018/01/01 全球购物
初始化了一个没有run()方法的线程类,是否会出错?
2014/03/27 面试题
跟单文员的岗位职责
2013/11/14 职场文书
质检的岗位职责
2013/11/17 职场文书
英语教学随笔感言
2014/02/20 职场文书
学校标语大全
2014/06/19 职场文书
个人思想政治总结
2015/03/05 职场文书
车间统计员岗位职责
2015/04/14 职场文书
新西兰:最新留学学习计划书写作指南
2019/07/15 职场文书
2021年最新用于图像处理的Python库总结
2021/06/15 Python
Win10 Anaconda安装python-pcl
2022/04/29 Servers