RGB轉HSI顏色空間

2021-10-02 16:42:31 字數 2349 閱讀 1637

)###顯示原圖

def

rgb2hsi

(rgb_img)

: row = np.shape(rgb_img)[0

] col = np.shape(rgb_img)[1

]#對原始影象進行複製

hsi_img = rgb_img.copy(

)#對影象進行通道拆分

b,g,r = cv2.split(rgb_img)

#把通道歸一化到[0,1]

[b,g,r]

=[ i/

255.0

for i in

([b,g,r])]

###利用rgb轉換hsi顏色空間的公式操作

h = np.zeros(

(row, col)

)#定義h通道

i =(r + g + b)

/3.0

#計算i通道

s = np.zeros(

(row,col)

)#定義s通道

for i in

range

(row)

: den = np.sqrt(

(r[i]

-g[i])**

2+(r[i]

-b[i])*

(g[i]

-b[i]))

thetha = np.arccos(

0.5*

(r[i]

-b[i]

+r[i]

-g[i]

)/den)

#計算夾角

h = np.zeros(col)

#定義臨時陣列

#den>0且g>=b的元素h賦值為thetha

h[b[i]

<=g[i]

]= thetha[b[i]

<=g[i]

]#den>0且g<=b的元素h賦值為thetha

h[g[i]

2*np.pi-thetha[g[i]

]#den<0的元素h賦值為0

h[den ==0]

=0h[i]

= h/(2

*np.pi)

#弧度化後賦值給h通道

#計算s通道

for i in

range

(row)

:min=[

]#找出每組rgb值的最小值

for j in

range

(col)

: arr =

[b[i]

[j],g[i]

[j],r[i]

[j]]

minmin

(arr)

)min

= np.array(

min)

#計算s通道

s[i]=1

-min*3

/(r[i]

+b[i]

+g[i]

)#i為0的值直接賦值0

s[i]

[r[i]

+b[i]

+g[i]==0

]=0#擴充到255以方便顯示,一般h分量在[0,2pi]之間,s和i在[0,1]之間

hsi_img[:,

:,0]

= h*

255 hsi_img[:,

:,1]

= s*

255 hsi_img[:,

:,2]

= i*

255return hsi_img

###顯示hsi顏色空間下的

HSI顏色空間和RGB顏色空間之間的相互轉換

具體的數學公式參照岡薩雷斯版 數字影象處理 第三版 432 434頁,中譯版的260 261頁。下面貼 1 include opencv libs.h 2 include 3 include 4 include 56 7 描述 實現rgb顏色模型到hsi顏色模型之間的相互轉換89 10 1112 將...

RGB顏色空間轉LAB

第一 lab顏色空間簡介 lab是由乙個亮度通道 channel 和兩個顏色通道組成的。在lab顏色空間中,每個顏色用l a b三個數字表示,各個分量的含義是這樣的 第二 為什麼使用lab顏色空間 因為它是一種裝置無關的顏色系統,也是一種基於生理特徵的顏色系統。它所描述的顏色空間就是人眼的視覺感應。...

RGB與HSI空間相互轉換

void hsitrans char tp else else if mn r else if mn g myhsiarray i mypwidth j h calchue angle,col1,col2,mn myhsiarray i mypwidth j s 255.0 float mx mn ...