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個字元是否相等,是,返...