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的urllib库提交WEB表单
Feb 24 Python
python 图片验证码代码分享
Jul 04 Python
ansible作为python模块库使用的方法实例
Jan 17 Python
python生成圆形图片的方法
Mar 25 Python
python自动重试第三方包retrying模块的方法
Apr 24 Python
Python装饰器基础概念与用法详解
Dec 22 Python
Python图像处理之图像的缩放、旋转与翻转实现方法示例
Jan 04 Python
python二维键值数组生成转json的例子
Dec 06 Python
win10安装tensorflow-gpu1.8.0详细完整步骤
Jan 20 Python
python shell命令行中import多层目录下的模块操作
Mar 09 Python
使用python批量修改XML文件中图像的depth值
Jul 22 Python
python 生成正态分布数据,并绘图和解析
Dec 21 Python
python数据分析之单因素分析线性拟合及地理编码
python可视化分析绘制带趋势线的散点图和边缘直方图
基于Python编写一个监控CPU的应用系统
如何基于python实现单目三维重建详解
python如何读取和存储dict()与.json格式文件
Jun 25 #Python
python运行脚本文件的三种方法实例
Jun 25 #Python
如何利用python创作字符画
You might like
PHP5中的时间相差8小时的解决办法
2008/03/28 PHP
PHP中基本符号及使用方法
2010/03/23 PHP
PHP的SQL注入实现(测试代码安全不错)
2011/02/27 PHP
php连接oracle数据库及查询数据的方法
2014/12/29 PHP
整理php防注入和XSS攻击通用过滤
2015/09/13 PHP
PHP多维数组指定多字段排序的示例代码
2018/05/16 PHP
PHP7内核CGI与FastCGI详解
2019/04/14 PHP
Dojo 学习笔记入门篇 First Dojo Example
2009/11/15 Javascript
一些主流JS框架中DOMReady事件的实现小结
2011/02/12 Javascript
javascript-表格排序(降序/反序)实现介绍(附图)
2013/05/30 Javascript
jquery实现图片水平滚动效果代码分享
2015/08/26 Javascript
深入解析AngularJS框架中$scope的作用与生命周期
2016/03/05 Javascript
无需 Flash 使用 jQuery 复制文字到剪贴板
2016/04/26 Javascript
原生态js,鼠标按下后,经过了那些单元格的简单实例
2016/08/11 Javascript
JS实现仿百度文库评分功能
2017/01/12 Javascript
JS设置随机出现2个数字的实例代码
2017/07/19 Javascript
JavaScript实现滑动导航栏效果
2017/08/30 Javascript
vue实现登陆登出的实现示例
2017/09/15 Javascript
微信小程序视图template模板引用的实例详解
2017/09/20 Javascript
简单了解vue.js数组的常用操作
2019/06/17 Javascript
微信小程序获取复选框全选反选选中的值(实例代码)
2019/12/17 Javascript
在ironpython中利用装饰器执行SQL操作的例子
2015/05/02 Python
Python简单实现安全开关文件的两种方式
2016/09/19 Python
设置python3为默认python的方法
2018/10/31 Python
pyqt5实现绘制ui,列表窗口,滚动窗口显示图片的方法
2019/06/20 Python
python实现12306登录并保存cookie的方法示例
2019/12/17 Python
win10安装tesserocr配置 Python使用tesserocr识别字母数字验证码
2020/01/16 Python
Python3.7 读取音频根据文件名生成脚本的代码
2020/04/07 Python
为什么UNION ALL比UNION快
2016/03/17 面试题
院药学专业个人求职信
2013/09/21 职场文书
路政管理专业个人自荐信范文
2013/11/30 职场文书
副总经理岗位职责
2014/03/16 职场文书
会计专业个人自我鉴定
2014/03/21 职场文书
机电专业求职信
2014/06/14 职场文书
2014年保安个人工作总结
2014/11/13 职场文书
创业计划书之校园跑腿公司
2019/09/24 职场文书