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 相关文章推荐
wxPython窗口的继承机制实例分析
Sep 28 Python
17个Python小技巧分享
Jan 23 Python
Python利用Beautiful Soup模块搜索内容详解
Mar 29 Python
Python iter()函数用法实例分析
Mar 17 Python
win10下tensorflow和matplotlib安装教程
Sep 19 Python
Python检测数据类型的方法总结
May 20 Python
这可能是最好玩的python GUI入门实例(推荐)
Jul 19 Python
python修改字典键(key)的方法
Aug 05 Python
python3 使用Opencv打开USB摄像头,配置1080P分辨率的操作
Dec 11 Python
利用python实现凯撒密码加解密功能
Mar 31 Python
Python自定义聚合函数merge与transform区别详解
May 26 Python
python和go语言的区别是什么
Jul 20 Python
python数据分析之单因素分析线性拟合及地理编码
python可视化分析绘制带趋势线的散点图和边缘直方图
基于Python编写一个监控CPU的应用系统
如何基于python实现单目三维重建详解
python如何读取和存储dict()与.json格式文件
Jun 25 #Python
python运行脚本文件的三种方法实例
Jun 25 #Python
如何利用python创作字符画
You might like
php判断输入是否是纯数字,英文,汉字的方法
2015/03/05 PHP
PHP实现仿Google分页效果的分页函数
2015/07/29 PHP
PHP 使用 Imagick 裁切/生成缩略图/添加水印自动检测和处理 GIF
2016/02/19 PHP
PHP注释语法规范与命名规范详解篇
2018/01/21 PHP
实例讲解php实现多线程
2019/01/27 PHP
laravel 时间格式转时间戳的例子
2019/10/11 PHP
jQuery 1.4 15个你应该知道的新特性(译)
2010/01/24 Javascript
基于NodeJS的前后端分离的思考与实践(一)全栈式开发
2014/09/26 NodeJs
JS实现从顶部下拉显示的带动画QQ客服特效代码
2015/10/24 Javascript
基于jquery实现百度新闻导航菜单滑动动画
2016/03/15 Javascript
Webpack+Vue如何导入Jquery和Jquery的第三方插件
2017/02/20 Javascript
JavaScript运动框架 链式运动到完美运动(五)
2017/05/18 Javascript
JavaScript用200行代码制作打飞机小游戏实例
2017/06/21 Javascript
JS 组件系列之Bootstrap Table的冻结列功能彻底解决高度问题
2017/06/30 Javascript
vue-loader中引入模板预处理器的实现
2019/09/04 Javascript
Vue 解决多级动态面包屑导航的问题
2019/11/04 Javascript
讲解Python中的标识运算符
2015/05/14 Python
简单介绍Python中的decode()方法的使用
2015/05/18 Python
解决python文件字符串转列表时遇到空行的问题
2017/07/09 Python
深入理解Python分布式爬虫原理
2017/11/23 Python
python机器学习之神经网络(一)
2017/12/20 Python
用Python逐行分析文件方法
2019/01/28 Python
python 定时器,轮询定时器的实例
2019/02/20 Python
Python基础之变量基本用法与进阶详解
2020/01/03 Python
python中Django文件上传方法详解
2020/08/05 Python
Anaconda详细安装步骤图文教程
2020/11/12 Python
Tostadora意大利:定制T恤
2019/04/08 全球购物
构造器Constructor是否可被override?
2013/08/06 面试题
动物科学专业毕业生的自我评价
2013/11/29 职场文书
双语教学实施方案
2014/03/23 职场文书
班级寄语大全
2014/04/10 职场文书
银行求职自荐信范文
2015/03/04 职场文书
全国劳模先进事迹材料(2016精选版)
2016/02/25 职场文书
小学2016年第十八届推普周活动总结
2016/04/05 职场文书
写作技巧:如何撰写一份优秀的营销策划书
2019/08/13 职场文书
配置Kubernetes外网访问集群
2022/03/31 Servers