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 实现堆排序算法代码
Jun 05 Python
Python socket.error: [Errno 98] Address already in use的原因和解决方法
Aug 25 Python
selenium python浏览器多窗口处理代码示例
Jan 15 Python
Python简单实现两个任意字符串乘积的方法示例
Apr 12 Python
Python中如何导入类示例详解
Apr 17 Python
python global关键字的用法详解
Sep 05 Python
python自动化测试无法启动谷歌浏览器问题
Oct 10 Python
Python 生成VOC格式的标签实例
Mar 10 Python
python实现梯度法 python最速下降法
Mar 24 Python
Python 整行读取文本方法并去掉readlines换行\n操作
Sep 03 Python
Django 如何实现文件上传下载
Apr 08 Python
分享python函数常见关键字
Apr 26 Python
python数据分析之单因素分析线性拟合及地理编码
python可视化分析绘制带趋势线的散点图和边缘直方图
基于Python编写一个监控CPU的应用系统
如何基于python实现单目三维重建详解
python如何读取和存储dict()与.json格式文件
Jun 25 #Python
python运行脚本文件的三种方法实例
Jun 25 #Python
如何利用python创作字符画
You might like
颠覆常识!无色透明的咖啡诞生了(中日双语)
2021/03/03 咖啡文化
对Session和Cookie的区分与解释
2007/03/16 PHP
PHP 判断常量,变量和函数是否存在
2009/04/26 PHP
php设计模式之原型模式分析【星际争霸游戏案例】
2020/03/23 PHP
CLASS_CONFUSION JS混淆 全源码
2007/12/12 Javascript
9个JavaScript评级/投票插件
2010/01/18 Javascript
从URL中提取参数与将对象转换为URL查询参数的实现代码
2012/01/12 Javascript
JS页面延迟执行一些方法(整理)
2013/11/11 Javascript
js键盘上下左右键怎么触发function(实例讲解)
2013/12/14 Javascript
javascript获取dom的下一个节点方法
2014/09/05 Javascript
JS实现屏蔽shift,Ctrl,alt等功能键的方法
2015/06/01 Javascript
JS中多步骤多分步的StepJump组件实例详解
2016/04/01 Javascript
关于Vue.js一些问题和思考学习笔记(1)
2016/12/02 Javascript
vue项目中引入noVNC远程桌面的方法
2018/03/05 Javascript
vue底部加载更多的实例代码
2018/06/29 Javascript
在小程序中使用Echart图表的示例代码
2018/08/02 Javascript
JavaScript实现下拉列表
2021/01/20 Javascript
Python实现包含min函数的栈
2016/04/29 Python
20招让你的Python飞起来!
2016/09/27 Python
Python字典简介以及用法详解
2016/11/15 Python
python怎么删除缓存文件
2020/07/19 Python
Python实现冒泡排序算法的完整实例
2020/11/04 Python
python 对xml解析的示例
2021/02/27 Python
AVON雅芳官网:世界上最大的美容化妆品公司之一
2016/11/02 全球购物
C#可否对内存进行直接的操作
2015/02/26 面试题
《圆明园的毁灭》教学反思
2014/02/28 职场文书
预备党员2014全国两会学习心得体会
2014/03/10 职场文书
高校优秀辅导员事迹材料
2014/05/07 职场文书
党的生日演讲稿
2014/09/10 职场文书
入党积极分子批评与自我批评思想汇报
2014/09/14 职场文书
档案接收函格式
2015/01/30 职场文书
个人借条范本
2015/05/25 职场文书
保留意见审计报告
2015/06/05 职场文书
2016大学生国家助学贷款承诺书
2016/03/25 职场文书
Golang中异常处理机制详解
2021/06/08 Golang
Redis入门教程详解
2021/08/30 Redis