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的Django框架中TEMPLATES项的设置教程
May 29 Python
python与C互相调用的方法详解
Jul 14 Python
python实现分页效果
Oct 25 Python
Django 跨域请求处理的示例代码
May 02 Python
使用Scrapy爬取动态数据
Oct 21 Python
python 文本单词提取和词频统计的实例
Dec 22 Python
python自制包并用pip免提交到pypi仅安装到本机【推荐】
Jun 03 Python
Python3 mmap内存映射文件示例解析
Mar 23 Python
基于Python组装jmx并调用JMeter实现压力测试
Nov 03 Python
anaconda升级sklearn版本的实现方法
Feb 22 Python
python入门之算法学习
Apr 22 Python
详解Python函数print用法
Jun 18 Python
python数据分析之单因素分析线性拟合及地理编码
python可视化分析绘制带趋势线的散点图和边缘直方图
基于Python编写一个监控CPU的应用系统
如何基于python实现单目三维重建详解
python如何读取和存储dict()与.json格式文件
Jun 25 #Python
python运行脚本文件的三种方法实例
Jun 25 #Python
如何利用python创作字符画
You might like
getJSON跨域SyntaxError问题分析
2014/08/07 PHP
实现PHP+Mysql无限分类的方法汇总
2015/03/02 PHP
帝国cms常用标签汇总
2015/07/06 PHP
推荐30个新鲜出炉的精美 jQuery 效果
2012/03/26 Javascript
用jquery写的菜单从左往右滑动出现
2014/04/11 Javascript
使用documentElement正确取得当前可见区域的大小
2014/07/25 Javascript
js实现鼠标触发图片抖动效果的方法
2015/02/27 Javascript
jQuery+PHP实现可编辑表格字段内容并实时保存
2015/10/09 Javascript
javascript拖拽应用实例(二)
2016/03/25 Javascript
Three.js快速入门教程
2016/09/09 Javascript
微信小程序教程系列之设置标题栏和导航栏(7)
2020/06/29 Javascript
基于JavaScript实现数码时钟效果
2020/03/30 Javascript
详解用Node.js实现Restful风格webservice
2017/09/29 Javascript
Vue结合后台导入导出Excel问题详解
2019/02/19 Javascript
Node.JS枚举统计当前文件夹和子目录下所有代码文件行数
2019/08/23 Javascript
vue使用openlayers实现移动点动画
2020/09/24 Javascript
python实现颜色空间转换程序(Tkinter)
2015/12/31 Python
书单|人生苦短,你还不用python!
2017/12/29 Python
Scrapy基于selenium结合爬取淘宝的实例讲解
2018/06/13 Python
python 读取Linux服务器上的文件方法
2018/12/27 Python
浅谈python requests 的put, post 请求参数的问题
2019/01/02 Python
Python实现多进程的四种方式
2019/02/22 Python
Python中super函数用法实例分析
2019/03/18 Python
Python爬虫抓取技术的一些经验
2019/07/12 Python
使用python客户端访问impala的操作方式
2020/03/28 Python
在tensorflow实现直接读取网络的参数(weight and bias)的值
2020/06/24 Python
HTML5 form标签之解放表单验证、增加文件上传、集成拖放的使用方法
2013/04/24 HTML / CSS
英国最大线上综合鞋类商城:Office
2017/12/08 全球购物
诺心蛋糕官网:LE CAKE
2018/08/25 全球购物
马来西亚网上花店:FlowerAdvisor马来西亚
2020/01/03 全球购物
地理科学专业毕业生求职信
2013/10/15 职场文书
创业融资计划书
2014/04/25 职场文书
2014年教师节国旗下讲话稿
2014/09/10 职场文书
技术负责人岗位职责
2015/02/10 职场文书
消防宣传语大全
2015/07/13 职场文书
解决MySQL存储时间出现不一致的问题
2021/04/28 MySQL