程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

python數字圖像處理數據類型及顏色空間轉換

編輯:Python

目錄

一、圖像數據類型及轉換

1、unit8轉float

2、float轉uint8

二、顏色空間及其轉換

例:rgb轉灰度圖

其它的轉換

例:rgb轉hsv

一、圖像數據類型及轉換

在skimage中,一張圖片就是一個簡單的numpy數組,數組的數據類型有很多種,相互之間也可以轉換。這些數據類型及取值范圍如下表所示:

Data typeRange uint80 to 255uint160 to 65535uint320 to 232float-1 to 1 or 0 to 1int8-128 to 127int16-32768 to 32767int32-231 to 231 - 1

一張圖片的像素值范圍是[0,255], 因此默認類型是unit8, 可用如下代碼查看數據類型:

from skimage import io,dataimg=data.chelsea()print(img.dtype.name)

在上面的表中,特別注意的是float類型,它的范圍是[-1,1]或[0,1]之間。一張彩色圖片轉換為灰度圖後,它的類型就由unit8變成了float

1、unit8轉floatfrom skimage import data,img_as_floatimg=data.chelsea()print(img.dtype.name)dst=img_as_float(img)print(dst.dtype.name)

輸出:

uint8
float64

2、float轉uint8from skimage import img_as_ubyteimport numpy as npimg = 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 nameDescription img_as_floatConvert to 64-bit floating point.img_as_ubyteConvert to 8-bit uint.img_as_uintConvert to 16-bit uint.img_as_intConvert to 16-bit int.二、顏色空間及其轉換

如前所述,除了直接轉換可以改變數據類型外,還可以通過圖像的顏色空間轉換來改變數據類型。

常用的顏色空間有灰度空間、rgb空間、hsv空間和cmyk空間。顏色空間轉換以後,圖片類型都變成了float型。

所有的顏色空間轉換函數,都放在skimage的color模塊內。

例:rgb轉灰度圖from skimage import io,data,colorimg=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轉hsvfrom skimage import io,data,colorimg=data.lena()hsv=color.convert_colorspace(img,'RGB','HSV')io.imshow(hsv)

在color模塊的顏色空間轉換函數中,還有一個比較有用的函數是

skimage.color.label2rgb(arr), 可以根據標簽值對圖片進行著色。以後的圖片分類後著色就可以用這個函數。

例:將lena圖片分成三類,然後用默認顏色對三類進行著色

from skimage import io,data,colorimport numpy as npimg=data.lena()gray=color.rgb2gray(img)rows,cols=gray.shapelabels=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]=2dst=color.label2rgb(labels)io.imshow(dst)

以上就是python數字圖像處理數據類型及顏色空間轉換的詳細內容,更多關於python圖像數據類型顏色空間的資料請關注軟件開發網其它相關文章!



  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved