欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python數(shù)字圖像處理數(shù)據(jù)類型及顏色空間轉(zhuǎn)換

 更新時間:2022年06月28日 15:37:24   作者:denny402  
這篇文章主要為大家介紹了python數(shù)字圖像處理數(shù)據(jù)類型及顏色空間轉(zhuǎn)換示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

一、圖像數(shù)據(jù)類型及轉(zhuǎn)換

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

Data typeRange
uint80 to 255
uint160 to 65535
uint320 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, 可用如下代碼查看數(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,有可能會造成數(shù)據(jù)的損失,因此會有警告提醒。

除了這兩種最常用的轉(zhuǎn)換以外,其實有一些其它的類型轉(zhuǎn)換,如下表:

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.

二、顏色空間及其轉(zhuǎn)換

如前所述,除了直接轉(zhuǎn)換可以改變數(shù)據(jù)類型外,還可以通過圖像的顏色空間轉(zhuǎn)換來改變數(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)

 實際上,上面的所有轉(zhuǎn)換函數(shù),都可以用一個函數(shù)來代替

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ù)中,還有一個比較有用的函數(shù)是

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

例:將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數(shù)字圖像處理數(shù)據(jù)類型及顏色空間轉(zhuǎn)換的詳細內(nèi)容,更多關(guān)于python圖像數(shù)據(jù)類型顏色空間的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評論