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读文件逐行处理的示例代码分享
Dec 27 Python
解决seaborn在pycharm中绘图不出图的问题
May 24 Python
利用python GDAL库读写geotiff格式的遥感影像方法
Nov 29 Python
python selenium执行所有测试用例并生成报告的方法
Feb 13 Python
python用类实现文章敏感词的过滤方法示例
Oct 27 Python
python实现数据清洗(缺失值与异常值处理)
Dec 02 Python
Python包,__init__.py功能与用法分析
Jan 07 Python
基于python3生成标签云代码解析
Feb 18 Python
python argparse模块通过后台传递参数实例
Apr 20 Python
Python安装第三方库攻略(pip和Anaconda)
Oct 15 Python
详解基于Facecognition+Opencv快速搭建人脸识别及跟踪应用
Jan 21 Python
Python基础数据类型tuple元组的概念与用法
Aug 02 Python
python数据分析之单因素分析线性拟合及地理编码
python可视化分析绘制带趋势线的散点图和边缘直方图
基于Python编写一个监控CPU的应用系统
如何基于python实现单目三维重建详解
python如何读取和存储dict()与.json格式文件
Jun 25 #Python
python运行脚本文件的三种方法实例
Jun 25 #Python
如何利用python创作字符画
You might like
PHP第一季视频教程(李炎恢+php100 不断更新)
2011/05/29 PHP
php array_intersect比array_diff快(附详细的使用说明)
2011/07/03 PHP
php全局变量和类配合使用深刻理解
2013/06/05 PHP
解析php扩展php_curl.dll不加载的解决方法
2013/06/26 PHP
php分页示例分享
2014/04/30 PHP
php实现判断访问来路是否为搜索引擎机器人的方法
2015/04/15 PHP
PHP加密解密实例分析
2015/12/25 PHP
php mysql PDO 查询操作的实例详解
2017/09/23 PHP
Laravel 实现关系模型取出需要的字段
2019/10/10 PHP
js 方法实现返回多个数据的代码
2009/04/30 Javascript
超酷的网页音乐播放器DewPlayer使用方法
2010/12/18 Javascript
在IE 浏览器中使用 jquery的fadeIn() 效果 英文字符字体加粗
2011/06/02 Javascript
JavaScript中函数声明优先于变量声明的实例分析
2012/03/01 Javascript
jQuery实现div拖拽效果实例分析
2016/02/20 Javascript
jquery表单验证插件formValidator使用方法
2016/04/01 Javascript
vue双向绑定的简单实现
2016/12/22 Javascript
用jQuery实现可输入多选下拉组合框实例代码
2017/01/18 Javascript
ES6学习之变量的解构赋值
2017/02/12 Javascript
基于vue2.0实现仿百度前端分页效果附实现代码
2018/10/30 Javascript
Vue事件修饰符native、self示例详解
2019/07/09 Javascript
在layui框架中select下拉框监听更改事件的例子
2019/09/20 Javascript
Vue的click事件防抖和节流处理详解
2019/11/13 Javascript
node.js中process进程的概念和child_process子进程模块的使用方法示例
2020/02/11 Javascript
vue 避免变量赋值后双向绑定的操作
2020/11/07 Javascript
[01:33:59]真人秀《加油 DOTA》 第六期
2014/09/09 DOTA
Python简单日志处理类分享
2015/02/14 Python
Python基础学习之基本数据结构详解【数字、字符串、列表、元组、集合、字典】
2019/06/18 Python
Python 堆叠柱状图绘制方法
2019/07/29 Python
python中的unittest框架实例详解
2021/02/05 Python
Carter’s OshKosh加拿大:购买婴幼儿服装和童装
2018/11/27 全球购物
建房协议书
2014/04/11 职场文书
庆祝教师节演讲稿
2014/09/03 职场文书
保险公司反洗钱宣传活动总结
2015/05/08 职场文书
小学开学典礼新闻稿
2015/07/17 职场文书
JavaWeb 入门篇(3)ServletContext 详解 具体应用
2021/07/16 Java/Android
BCL经典机 SONY ICF-5900W电路分析
2022/04/24 无线电