资讯专栏INFORMATION COLUMN

python图像处理数据格式及色调空间变换

89542767 / 404人阅读

  此篇文章主要是给大家介绍了python图像处理数据格式及色调空间变换实例,感兴趣的小伙伴可以参考借鉴一下,希望可以有一定的帮助,祝愿大家多多的发展,尽早涨薪。


  一、图象数据格式及变换


  在skimage中,一张照片只是一个简易的numpy二维数组,二维数组的数据格式有许多种,彼此之间还可以变换。这种数据格式及取值如下所示表所显示:

01.png

  一张图片的像素值范围是[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,有可能会造成数据的损失,因此会有警告提醒。


  除了这两种最常用的转换以外,其实有一些其它的类型转换,如下表:

02.png

  二、颜色空间及其转换


  如前所述,除了直接转换可以改变数据类型外,还可以通过图像的颜色空间转换来改变数据类型。


  常用的颜色空间有灰度空间、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)

03.png

  在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)

04.png

  综上所述,这篇文章就给大家介绍到这里了,希望可以给大家带来帮助。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/128832.html

相关文章

  • python热力地图完成的一体化案例

      热力地图的适用场景有叙述数据信息和空间的集中程度上,普遍有城市热力图、地区热力地图,叙述好几个自变量中间关联性多少程度上,文中关键为大家介绍了有关python热力地图完成的资料,必须的小伙伴可以借鉴一下  一、数据信息无量纲处理后的(热力地图)  1.数据信息无量纲处理后的(仅详细介绍文中需要用到的方式):min-max归一化处理  此方法应该是原始记录开展线性变换,把它投射到[0,1]中间,...

    89542767 评论0 收藏0
  • opencv python BGR2HSV/目标跟踪

    摘要:变换颜色空间有多种颜色空间转换方法,目前我们只研究两种最广泛使用的方法和,,其中确定转换类型对于,色调范围是,饱和范围是,值范围是。 Changing Colorspaces 1变换颜色空间 opencv有150多种颜色空间转换方法,目前我们只研究两种最广泛使用的方法:BGR↔Gray和BGR↔HSVcv2.cvtColor(input_image,flag),其中flag确定转换类...

    Cheriselalala 评论0 收藏0
  • 运用Python实现图片转字符画

      本文关键阐述了运用Python实现图片转字符画,要把图片转字符画,必须要先界定1个字段名,用于和灰度级做投射,将照片每一个象素的RGB值转化成1个灰度级,把它相对应的标识符导出就得到了字符画  序言  相信大家在网上常常看到有些人展现出各种各样字符画,对于这些色彩斑斓的全球而言,我们平时看到的就是某些超清的彩色图片,有时候再来一个粗糙黑白字符画,还是比较缓解疲劳的。喜爱不要忘记个人收藏、关心、...

    89542767 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<