2012-08-07 63 views
7

是否有一個算法找出給出的色調值的顏色的波長(在0度到360度)。 MATLAB中有沒有內置函數?色相於波長映射

+2

從技術上講,如果你願意混合波長,有多種方法可以得到色調,而一些紫色根本不能用單一波長表示。 – 2012-08-07 16:22:17

+0

@MarkRansom,這將是最簡單的matlab? – SegFault 2012-08-07 16:25:52

+0

我不能說關於Matlab的任何具體內容。您可能需要轉換顏色空間。您可能會發現CIE官方比色表非常有用:http://www.cie.co.at/index.php/LEFTMENUE/index.php?i_ca_id=298 – 2012-08-07 16:42:55

回答

0

簡答題:否。一般給定的色調可以由三倍無限的波長產生。

+0

您能解釋一下這句話嗎?在 – rhavin 2017-01-10 00:06:20

+0

見的解釋:https://en.wikipedia.org/wiki/Color_vision#Mathematics_of_color_perception – 2017-01-10 17:39:41

7

儘管Mark Ransom和Franco Callari是完全正確的,您無法恢復感知色彩的光譜,也不能明確地將色調值映射到波長,但如果您只需要相應的單色波長,您肯定可以將某些東西拼合在一起。

270和360之間的色調週期的部分是另一個問題。在光譜中沒有與品紅對應的東西,因此我們假設我們只使用0到270之間的色相值。

估計可見光譜的可用部分爲450-620nm,波長爲L(單位:nm)和色調值H(度),可以即興此:

L = 620 - 170/270 * H 

620是最大波長,170是波長範圍和270是色調範圍。

我想這應該是在正確的方向,但我只檢查4或5種顏色。在輸入huesvisible spectrum chart上的相應顏色之間進行比較,然後稍微調整這些值,您可能會獲得更好的結果。

+0

你有這個公式的任何引用。 – 2017-05-30 07:52:45

+0

@AkshayHazari:你可以查看我在任何物理教科書中使用的數字。至於配方本身,不,我只是補充了。但我解釋了我是如何得出它的。 – Junuxx 2017-05-30 13:41:24

+0

我有一個功能,通過對圖像顏色進行裝箱並檢查最接近的顏色來識別圖像中的主色。如果我能夠獲得波長或表示顏色的單個值,將大大降低複雜性。有沒有什麼辦法可以調整這一點並使用它,到目前爲止,我還沒有發現任何東西,接近代表rgb或色調值,就像你有。 – 2017-05-31 05:24:02

0

我不能提供簡單的解決方案,但你需要考慮的東西:

  • 的SPEKTRUM的可見部分是大致爲380nm(UV-境)和780nm的(IR-境)之間。但是你看到(色調)取決於觸發的錐形細胞。在660nm以上,M錐完全不被觸發,因此660nm和780nm之間的所有光都是0°色相。
  • 在580nm有你與黃色色調60°,最純的綠色是在約535nm處,以便爲120°,並以純淨的藍色(240°)爲約457nm。
  • 如果你應用線性函數,黃色應該在597nm--它不是,所以你需要一個更復雜的方法。
  • 上方藍色,紅色錐仍然被觸發,直到我們看到紫色的,但我們不會在更高的頻率達到紅了起來,所以你不能去上面的約300°。
  • 300°和360°之間的色相範圍在可見SPEKTRUM沒有æquivalent,它只能通過用紅色光,這導致在品紅色和紅色之間的東西上了紫色混合高頻光(藍色或紫色)模擬線。