2014-02-28 138 views
1

我目前正在嘗試使用rgb2hsv函數將兩個對象從RGB空間轉換爲HSV空間,一個是圖像,另一個是RGB值的矩陣,但是我的值爲矩陣不一致。RGB和HSV空間之間的轉換

矩陣I中的價值結果介於1和255之間,但在第二個矩陣D中,它們介於0和1之間。有人知道爲什麼會出現這種情況嗎?

I = imread('00000001.jpg'); 
I = rgb2hsv(I); 

D = [221 12 26; 30 68 76; 40 47 27; 165 87 25; 37 59 26; 148 125 91]; 
D = rgb2hsv(D); 

回答

1

當你調用rgb2hsvN-by-3矩陣,它被解釋作爲顏色表,而不是圖像,甚至圖像強度。顏色映射的值位於[0,1]上,而uint8圖像的值位於[0,255]上。這是rgb2hsv的期望。

在幫助頁面rgb2hsv解釋的顏色映射語法:

H = rgb2hsv(M)轉換RGB顏色映射的是HSV彩色地圖。 每個地圖是具有任意數量的行,正好三個列, 和元件間隔0到1

當運行D = rgb2hsv(D);它與上面的語法運行它,而不是處理該輸入的矩陣作爲圖像。

也就是說,您只需將輸出D的第三列除以255就可以了,因爲生成的bizarro顏色映射似乎只是具有縮放的值元素。

+0

因此,對於色彩映射,是否已將值縮放n/255?如果我這樣做,他們會是可比較的嗎? – KOM

+0

應該是的,但一定要轉換爲「雙」,然後除以255。:) – chappjc

+0

完美的感謝您的建議,我推測這將是這樣的事情,只是想檢查我沒有做一些真正愚蠢的事情。 – KOM

0

我只是在圖像上運行rgb2hsv而生成的矩陣上乘以255。我證實色調,飽和度和價值是正確的值,它是。這解決了我的問題。一定要驗證。另一個奇怪的是,這些值是一個百分比,所以1意味着100%,0.5意味着50%。這也把我扔了。