python數(shù)字圖像處理數(shù)據(jù)類型及顏色空間轉(zhuǎn)換
一、圖像數(shù)據(jù)類型及轉(zhuǎn)換
在skimage中,一張圖片就是一個(gè)簡(jiǎn)單的numpy數(shù)組,數(shù)組的數(shù)據(jù)類型有很多種,相互之間也可以轉(zhuǎn)換。這些數(shù)據(jù)類型及取值范圍如下表所示:
| 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], 因此默認(rèn)類型是unit8, 可用如下代碼查看數(shù)據(jù)類型:
from skimage import io,data img=data.chelsea() print(img.dtype.name)
在上面的表中,特別注意的是float類型,它的范圍是[-1,1]或[0,1]之間。一張彩色圖片轉(zhuǎn)換為灰度圖后,它的類型就由unit8變成了float
1、unit8轉(zhuǎn)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轉(zhuǎn)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轉(zhuǎn)為unit8,有可能會(huì)造成數(shù)據(jù)的損失,因此會(huì)有警告提醒。
除了這兩種最常用的轉(zhuǎn)換以外,其實(shí)有一些其它的類型轉(zhuǎn)換,如下表:
| 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. |
二、顏色空間及其轉(zhuǎn)換
如前所述,除了直接轉(zhuǎn)換可以改變數(shù)據(jù)類型外,還可以通過(guò)圖像的顏色空間轉(zhuǎn)換來(lái)改變數(shù)據(jù)類型。
常用的顏色空間有灰度空間、rgb空間、hsv空間和cmyk空間。顏色空間轉(zhuǎn)換以后,圖片類型都變成了float型。
所有的顏色空間轉(zhuǎn)換函數(shù),都放在skimage的color模塊內(nèi)。
例:rgb轉(zhuǎn)灰度圖
from skimage import io,data,color img=data.lena() gray=color.rgb2gray(img) io.imshow(gray)
其它的轉(zhuǎn)換
用法都是一樣的,列舉常用的如下:
skimage.color.rgb2grey(rgb)
skimage.color.rgb2hsv(rgb)
skimage.color.rgb2lab(rgb)
skimage.color.gray2rgb(image)
skimage.color.hsv2rgb(hsv)
skimage.color.lab2rgb(lab)
實(shí)際上,上面的所有轉(zhuǎn)換函數(shù),都可以用一個(gè)函數(shù)來(lái)代替
skimage.color.convert_colorspace(arr, fromspace, tospace)
表示將arr從fromspace顏色空間轉(zhuǎn)換到tospace顏色空間。
例:rgb轉(zhuǎn)hsv
from skimage import io,data,color img=data.lena() hsv=color.convert_colorspace(img,'RGB','HSV') io.imshow(hsv)

在color模塊的顏色空間轉(zhuǎn)換函數(shù)中,還有一個(gè)比較有用的函數(shù)是
skimage.color.label2rgb(arr), 可以根據(jù)標(biāo)簽值對(duì)圖片進(jìn)行著色。以后的圖片分類后著色就可以用這個(gè)函數(shù)。
例:將lena圖片分成三類,然后用默認(rèn)顏色對(duì)三類進(jìn)行著色
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數(shù)字圖像處理數(shù)據(jù)類型及顏色空間轉(zhuǎn)換的詳細(xì)內(nèi)容,更多關(guān)于python圖像數(shù)據(jù)類型顏色空間的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
python基于pygame實(shí)現(xiàn)飛機(jī)大作戰(zhàn)小游戲
這篇文章主要為大家詳細(xì)介紹了python基于pygame實(shí)現(xiàn)飛機(jī)大作戰(zhàn)小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-11-11
Python 實(shí)現(xiàn)王者榮耀中的敏感詞過(guò)濾示例
今天小編就為大家分享一篇Python 實(shí)現(xiàn)王者榮耀中的敏感詞過(guò)濾示例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-01-01
配置python連接oracle讀取excel數(shù)據(jù)寫(xiě)入數(shù)據(jù)庫(kù)的操作流程
這篇文章主要介紹了配置python連接oracle,讀取excel數(shù)據(jù)寫(xiě)入數(shù)據(jù)庫(kù),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-03-03
Python使用smtplib庫(kù)發(fā)送電子郵件
Python提供了smtplib庫(kù),用于發(fā)送電子郵件,本文將詳細(xì)介紹如何使用Python的smtplib庫(kù)來(lái)發(fā)送電子郵件,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-11-11
python 非線性規(guī)劃方式(scipy.optimize.minimize)
今天小編就為大家分享一篇python 非線性規(guī)劃方式(scipy.optimize.minimize),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-02-02
Python練習(xí)之操作MySQL數(shù)據(jù)庫(kù)
這篇文章主要介紹了Python練習(xí)之操作MySQL數(shù)據(jù)庫(kù),文章通過(guò)如何創(chuàng)建MySQL數(shù)據(jù)表?如何向MySQL表中插入數(shù)據(jù)?如何查詢MySQL中的數(shù)據(jù)?的三個(gè)問(wèn)題展開(kāi)了詳細(xì)的內(nèi)容介紹2022-06-06

