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之关于循环的小伎俩
Oct 02 Python
Python检测QQ在线状态的方法
May 09 Python
使用Python3 编写简单信用卡管理程序
Dec 21 Python
Python编程判断这天是这一年第几天的方法示例
Apr 18 Python
python模块之time模块(实例讲解)
Sep 13 Python
mac 安装python网络请求包requests方法
Jun 13 Python
python查看模块,对象的函数方法
Oct 16 Python
python 画出使用分类器得到的决策边界
Aug 21 Python
python使用matplotlib绘制雷达图
Oct 18 Python
Python timer定时器两种常用方法解析
Jan 20 Python
python集合能干吗
Jul 19 Python
Python常驻任务实现接收外界参数代码解析
Jul 21 Python
python数据分析之单因素分析线性拟合及地理编码
python可视化分析绘制带趋势线的散点图和边缘直方图
基于Python编写一个监控CPU的应用系统
如何基于python实现单目三维重建详解
python如何读取和存储dict()与.json格式文件
Jun 25 #Python
python运行脚本文件的三种方法实例
Jun 25 #Python
如何利用python创作字符画
You might like
虹吸壶是谁发明的?煮出来的咖啡好喝吗
2021/03/04 冲泡冲煮
php中大括号作用介绍
2012/03/22 PHP
JavaScript 提升运行速度之循环篇 译文
2009/08/15 Javascript
Javascript中引用示例介绍
2014/02/21 Javascript
javascript面向对象之定义成员方法实例分析
2015/01/13 Javascript
jquery中ajax使用error调试错误的方法
2015/02/08 Javascript
原生js仿jquery实现对Ajax的封装
2016/10/04 Javascript
webuploader模态框ueditor显示问题解决方法
2016/12/27 Javascript
AngularJS折叠菜单实现方法示例
2017/05/18 Javascript
JS FormData上传文件的设置方法
2017/07/05 Javascript
Vue的MVVM实现方法
2017/08/16 Javascript
element-ui表格列金额显示两位小数的方法
2018/08/24 Javascript
vue移动端模态框(可传参)的实现
2019/11/20 Javascript
linux系统使用python监测网络接口获取网络的输入输出
2014/01/15 Python
Python使用正则表达式实现文本替换的方法
2017/04/18 Python
python pandas 组内排序、单组排序、标号的实例
2018/04/12 Python
从请求到响应过程中django都做了哪些处理
2018/08/01 Python
python 批量解压压缩文件的实例代码
2019/06/27 Python
Python requests获取网页常用方法解析
2020/02/20 Python
Python猫眼电影最近上映的电影票房信息
2020/09/18 Python
Pycharm安装Qt Design快捷工具的详细教程
2020/11/18 Python
韩国爱茉莉太平洋化妆品美国站:Amore Pacific US
2016/10/28 全球购物
英国屋顶用品和材料超市:Roofing Supplies UK
2019/08/24 全球购物
Linux中如何设置Java环境变量(Ubuntu)
2016/07/24 面试题
C#面试问题
2016/07/29 面试题
【魔兽争霸3重制版】原版画面与淬火MOD画面对比
2021/03/26 魔兽争霸
我的求职计划书
2014/01/10 职场文书
网站美工岗位职责
2014/04/02 职场文书
演讲稿祖国在我心中
2014/05/04 职场文书
2014年社区矫正工作总结
2014/11/18 职场文书
2015年餐厅服务员工作总结
2015/04/23 职场文书
婚宴主持词
2015/06/30 职场文书
英语导游欢迎词
2015/09/30 职场文书
2016年端午节寄语
2015/12/04 职场文书
深度学习详解之初试机器学习
2021/04/14 Python
Java9新特性对HTTP2协议支持与非阻塞HTTP API
2022/03/16 Java/Android