2012-12-27 62 views
-1

如何在上面一行用紅色,綠色,bue形成一個圖像(510 * 510),並且在matlab的下一行中用青色洋紅色和黃色表示全部相等部分。圖像的形成

+2

對於120度,你就不能互換的r,g,和b? – JasonD

+0

請參閱http://stackoverflow.com/a/8510751/5987直接旋轉RGB色調。 –

回答

2

你的問題有點含糊,但我認爲我知道你在問什麼。 HSV圖像的色調通道通常被認爲範圍從0到360度,因爲它是cylindrical-coordinate representation of points in an RGB color model。但是,對於您的圖像,色調通道的值可能在0到1之間,這是您從函數RGB2HSV獲得的輸出,如果這是您用來獲取HSV圖的內容。

所以,如果你想將你的色調轉換120度,你必須將你的範圍轉移1/3。換句話說,假定120度的正向移位,範圍從0到1/3的值應該被改變到從1/3到2/3的範圍。你可以像這樣用REM功能實現這一點:

H = rem(H + 1/3, 1); 

對於120度的負向變化,你可以申請的240度等同積極的轉變,就像這樣:

H = rem(H + 2/3, 1); 
+0

+1爲正確的答案。鑑於@Rabeel的評論,我懷疑這可能是一個關於重新排序數組的Matlab-for-begin練習。 – Jonas

2

對於窮人的@ gnovice的答案,我建議簡單地交換R,G和B通道,如@JasonD

假設你有一個n×m×3的RGB圖像存儲在一個數組中img。然後,轉移通道如下

shiftedImg = img(:,:,[2 3 1]); 

shiftedImg = img(:,:,[3 1 2]); 
+2

@Rabeel:我的解決方案根本不使用內置函數。除非您將數組元素作爲內置函數進行訪問,否則您將無法使用Matlab。 – Jonas