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引用(import)文件夹下的py文件的方法
Aug 26 Python
python查询sqlite数据表的方法
May 08 Python
python MySQLdb Windows下安装教程及问题解决方法
May 09 Python
Python中getattr函数和hasattr函数作用详解
Jun 14 Python
Python SQLite3简介
Feb 22 Python
Django+Ajax+jQuery实现网页动态更新的实例
May 28 Python
python实现dijkstra最短路由算法
Jan 17 Python
django+echart数据动态显示的例子
Aug 12 Python
Django框架模板用法入门教程
Nov 04 Python
常用python爬虫库介绍与简要说明
Jan 25 Python
Keras实现DenseNet结构操作
Jul 06 Python
python实现登录与注册系统
Nov 30 Python
python数据分析之单因素分析线性拟合及地理编码
python可视化分析绘制带趋势线的散点图和边缘直方图
基于Python编写一个监控CPU的应用系统
如何基于python实现单目三维重建详解
python如何读取和存储dict()与.json格式文件
Jun 25 #Python
python运行脚本文件的三种方法实例
Jun 25 #Python
如何利用python创作字符画
You might like
echo, print, printf 和 sprintf 区别
2006/12/06 PHP
php字符编码转换之gb2312转为utf8
2013/10/28 PHP
php中eval函数的危害与正确禁用方法
2014/06/30 PHP
php中多维数组按指定value排序的实现代码
2014/08/19 PHP
php采用curl模仿登录人人网发布动态的方法
2014/11/07 PHP
thinkphp3.2实现在线留言提交验证码功能
2017/07/19 PHP
jQuery DOM操作小结与实例
2010/01/07 Javascript
关于JavaScript对象的动态选择及遍历对象
2014/03/10 Javascript
js判断手机和pc端选择不同执行事件的方法
2015/01/30 Javascript
JavaScript+html5 canvas实现本地截图教程
2020/04/16 Javascript
requireJS使用指南
2016/04/27 Javascript
浅析函数声明和函数表达式——函数声明的声明提前
2016/05/03 Javascript
怎么限制input的text里输入的值只能是数字(正则、js)
2016/05/16 Javascript
javascript的replace方法结合正则使用实例总结
2016/06/16 Javascript
BootStrap使用popover插件实现鼠标经过显示并保持显示框
2016/06/23 Javascript
javascript中活灵活现的Array对象详解
2016/11/30 Javascript
微信小程序 自己制作小组件实例详解
2016/12/22 Javascript
vue element-ui 绑定@keyup事件无效的解决方法
2018/03/09 Javascript
Vue动态创建注册component的实例代码
2019/06/14 Javascript
js实现图片3D轮播效果
2019/09/21 Javascript
Python字符串中查找子串小技巧
2015/04/10 Python
Python使用迭代器捕获Generator返回值的方法
2017/04/05 Python
使用Python对SQLite数据库操作
2017/04/06 Python
使用Pandas对数据进行筛选和排序的实现
2019/07/29 Python
CSS3 完美实现圆角效果
2009/07/13 HTML / CSS
html5+svg学习指南之SVG基础知识
2014/12/17 HTML / CSS
美国在线鞋类零售商:LifeStride
2019/06/09 全球购物
空指针到底是什么
2012/08/07 面试题
实习生个人找工作的自我评价
2013/10/30 职场文书
公安交警个人对照检查材料思想汇报
2014/10/01 职场文书
2015毕业生实习期工作总结
2015/04/09 职场文书
在职证明书模板
2015/06/15 职场文书
中学教师读书笔记
2015/07/01 职场文书
高端收音机+蓝牙音箱,JBL TUNER FM带收音蓝牙音箱评测
2021/04/24 无线电
Spring中bean的生命周期之getSingleton方法
2021/06/30 Java/Android
Windows 64位 安装 mysql 8.0.28 图文教程
2022/04/19 MySQL