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

時間 2021-08-30 10:32:05

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中怎麼定義一個函式?

matlab中定義函式的方式有以下幾種 1 函式檔案 呼叫函式檔案 定義多個m檔案。呼叫函式檔案 myfile.m clear clcfor x 1 10 y mylfg x end 自定義函式檔案 mylfg.m function y mylfg x 注意 函式名 mylfg 必須與檔名 mylf...

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中的DEBLANK函式

多瑙的萊茵 deblank函式是用來刪除字串中尾部空格的一個函式。在matlab中輸入help deblank就可以檢視其用法,在裡面都有詳細介紹。matlab處理字串的函式還有 strcmp 比較兩個字串是否完全相等,是,返回真,否則,返回假 strncmp 比較兩個字串前n個字元是否相等,是,返...