matlab中函式rgb2hsv使用的轉換公式是什麼

時間 2021-08-30 10:33:10

1樓:等待的幸福快樂

公式:h參數列示色彩資訊,即所處的光譜顏色的位置。該引數用一角度量來表示,紅、綠、藍分別相隔120度。互補色分別相差180度。

純度s為一比例值,範圍從0到1,它表示成所選顏色的純度和該顏色最大的純度之間的比率。s=0時,只有灰度。 v表示色彩的明亮程度,範圍從0到1。

有一點要注意:它和光強度之間並沒有直接的聯絡。 rgb轉化到hsv的演算法:

max=max(r,g,b)

min=min(r,g,b)

if r = max, h = (g-b)/(max-min)

if g = max, h = 2 + (b-r)/(max-min)

if b = max, h = 4 + (r-g)/(max-min)

h = h * 60 if h < 0, h = h + 360

v=max(r,g,b)

s=(max-min)/max

hsv轉化到rgb的演算法

if s = 0 r=g=b=v

else h /= 60;

i = integer(h)

f = h - i

a = v * ( 1 - s )

b = v * ( 1 - s * f )

c = v * ( 1 - s * (1 - f ) )

switch(i)

case 0: r = v; g = c; b = a;

case 1: r = b; g = v; b = a;

ase 2: r = a; g = v; b = c;

case 3: r = a; g = b; b = v;

case 4: r = c; g = a; b = v;

case 5: r = v; g = a; b = b;

hsv對使用者來說是一種直觀的顏色模型。我們可以從一種純色彩開始,即指定色彩角h,並讓v=s=1,然後我們可以通過向其中加入黑色和白色來得到我們需要的顏色。增加黑色可以減小v而s不變,同樣增加白色可以減小s而v不變。

例如,要得到深藍色,v=0.4 s=1 h=240度。要得到淡藍色,v=1 s=0.

4 h=240度。 一般說來,人眼最大能區分128種不同的色彩,130種色飽和度,23種明暗度。如果我們用16bit表示hsv的話,可以用7位存放h,4位存放s,5位存放v,即745或者655就可以滿足我們的需要了。

由於hsv是一種比較直觀的顏色模型,所以在許多影象編輯工具中應用比較廣泛,如photoshop(在photoshop中叫hsb)等等,但這也決定了它不適合使用在光照模型中,許多光線混合運算、光強運算等都無法直接使用hsv來實現。

2樓:

當h為m*3的矩陣時,hsv2rgb是把hsv調色盤轉換成rgb調色盤。

當h為m*n*3的矩陣時,hsv2rgb是把hsv影象轉換成rgb影象。

什麼是調色盤呢?調色盤是一個存貯各種顏色值的列表。

這樣索引影象只需存貯列表中的索引就可以了,具體的顏色值只需要到顏色列表中去查詢。

但是表示顏色的方法有很多種。

最常見的rgb,第一個分量表示紅色,第二個綠色,第三個藍色。

rgb雖然方便計算機處理,但對人並不直觀

hsv則對人很直觀,h表示顏色,s表示飽和度(可以理解為純度),v為亮度。例如「有點濃的暗紅色」對應成hsv即「h為紅色,s比較高(純),v比較低(暗)」。

h,s,v三個變數的取值均在0和1之間。

程式解釋如下:

v=v-min(v(:));

v=v/max(v(:));

v=.25+0.75*v;

是將v的值對映到[0.25,1]之間

m=m-min(m(:));

m=m/max(m(:));

是將m對映到[0,1]之間

matlab怎麼畫複數函式,matlab 中複數如何表示?我i前面已經有 就是表示不出來 不知到為什麼

我叫王土土豆 1 雙擊matlab軟體圖示,開啟matlab軟體,可以看到matlab軟體的介面。2 建立一個陣列u u 0 0.2 6 表示從0到6,每個0.2取一個數字。3 建立一個複數v,v 0.02 i。4 使用u和v建立一個複數函式z z exp v u 5 使用函式feather z 繪...

matlab中的disp函式和num2str()函式如何使用

disp即display,可用來顯示字串 計算結果等 例子 x 1 2 3 disp the values of x are num2str x 結果顯示為 the values of x are 1 2 3str num2str a 把陣列a中的數轉換成字串表示形式。str num2str a,p...

matlab傳遞函式問題,matlab中simulink傳遞函式的建模問題

給你我的一個我曾經編的超前校正的程式,可能有用 對於函式功能不懂的,可以使用help命令 function gc blead g,kc,dpm dpm 50 相位裕度 角度 包含5度的安全裕量 kc 1 設定開環增益 g tf 48e 3 48 1e 9 1e 6 2e 3 1 生成待校正系統傳遞函...