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脚本
Apr 05 Python
浅析Python中的多条件排序实现
Jun 07 Python
python中set常用操作汇总
Jun 30 Python
python让列表倒序输出的实例
Jun 25 Python
Python对CSV、Excel、txt、dat文件的处理
Sep 18 Python
详解用Python练习画个美队盾牌
Mar 23 Python
python找出列表中大于某个阈值的数据段示例
Nov 24 Python
python读取csv文件指定行的2种方法详解
Feb 13 Python
如何使用python传入不确定个数参数
Feb 18 Python
python删除指定列或多列单个或多个内容实例
Jun 28 Python
python3 kubernetes api的使用示例
Jan 12 Python
python压包的概念及实例详解
Feb 17 Python
python数据分析之单因素分析线性拟合及地理编码
python可视化分析绘制带趋势线的散点图和边缘直方图
基于Python编写一个监控CPU的应用系统
如何基于python实现单目三维重建详解
python如何读取和存储dict()与.json格式文件
Jun 25 #Python
python运行脚本文件的三种方法实例
Jun 25 #Python
如何利用python创作字符画
You might like
调试一段PHP程序时遇到的三个问题
2012/01/17 PHP
php获取服务器端mac和客户端mac的地址支持WIN/LINUX
2014/05/15 PHP
Smarty环境配置与使用入门教程
2016/05/11 PHP
Laravel构建即时应用的一种实现方法详解
2017/08/31 PHP
浅谈PHP之ThinkPHP框架使用详解
2020/07/21 PHP
通过event对象的fromElement属性解决热区设置主实体的一个bug
2008/12/22 Javascript
基于Jquery实现的一个图片滚动切换
2012/06/21 Javascript
javaScript矢量图表库-gRaphael几行代码实现精美的条形图/饼图/点图/曲线图
2013/01/09 Javascript
解决JS组件bootstrap table分页实现过程中遇到的问题
2016/04/21 Javascript
jquery checkbox无法用attr()二次勾选问题的解决方法
2016/07/22 Javascript
jQuery树形插件jquery.simpleTree.js用法分析
2016/09/05 Javascript
JavaScript 链式结构序列化详解
2016/09/30 Javascript
基于javascript实现按圆形排列DIV元素(三)
2016/12/02 Javascript
Angular中自定义Debounce Click指令防止重复点击
2017/07/26 Javascript
vue.js如何将echarts封装为组件一键使用详解
2017/10/10 Javascript
Node层模拟实现multipart表单的文件上传示例
2018/01/02 Javascript
koa2使用ejs和nunjucks作为模板引擎的使用
2018/11/27 Javascript
Bootstrap Paginator+PageHelper实现分页效果
2018/12/29 Javascript
小程序实现订单倒计时功能
2019/04/23 Javascript
详解Python中的type()方法的使用
2015/05/21 Python
Python使用poplib模块和smtplib模块收发电子邮件的教程
2016/07/02 Python
Python中单、双下划线的区别总结
2017/12/01 Python
Django后台admin的使用详解
2019/07/08 Python
Tensorflow实现神经网络拟合线性回归
2019/07/19 Python
python+django+rest框架配置创建方法
2019/08/31 Python
python调用私有属性的方法总结
2020/07/24 Python
python两种获取剪贴板内容的方法
2020/11/06 Python
numba提升python运行速度的实例方法
2021/01/25 Python
新加坡时尚网上购物:Zalora新加坡
2016/07/26 全球购物
阿玛尼美国官方网站:Armani.com
2016/11/25 全球购物
中间件分为哪几类
2012/03/14 面试题
住宿生擅自离校检讨书
2014/09/22 职场文书
教师节寄语2015
2015/03/23 职场文书
因身体原因离职的辞职信范文
2015/05/12 职场文书
安全教育的主题班会
2015/08/13 职场文书