我正在做一些關於圖像處理應用程序的工作(爲了好玩),並且正在努力完全理解ColorMatrix轉換的工作原理。我獲得了線性/仿射變換的基礎知識,並且可以通過在線複製示例得到很好的結果,但我想完全掌握爲什麼有效,而不是僅僅滿足於它的工作原理。關於ColorMatrix轉換如何工作的說明
例如,在圖像上做一個簡單的變換,以產生其負(每種顏色被轉換成其相應的免費)使用以下矩陣:
[-1, 0, 0, 0, 0]
[0, -1, 0, 0, 0]
[0, 0, -1, 0, 0]
[0, 0, 0, 1, 0]
[1, 1, 1, 0, 1]
據我所知,-1是180degrees的餘弦,這是將顏色「翻轉」爲互補所需的旋轉,但我不明白的是顏色矢量如何與上述矩陣相乘併產生正確的互補矢量。例如,如果像素具有[247,255,0,255,1](使用RGBAW空間)的顏色矢量,則對上述矩陣執行乘法運算產生[-247,-255,0,...,255] 255,1],但這是不正確的,因爲上面的實際互補色是[8,0,255,255,1]。
我錯過了一些很明顯的東西,很高興承認我不完全確定我在做什麼:)被轉換的顏色矢量是否代表其他座標系? (例如不是0-255)
如果有人可以幫助提供我的理解「缺失的環節」,我會非常感激。
編輯
我才發現,原來下面的矩陣也適用,實際上是mathemtically直觀(它產生正確的矢量)。
-1 0 0 0 0
0 -1 0 0 0
0 0 -1 0 0
1 1 1 1 0
0 0 0 0 1
所以我的新問題是:爲什麼這兩個矩陣的工作?後者爲我提供了更令人滿意的解決方案,因爲我可以從代數的角度理解它爲什麼起作用。這四行用於縮放嗎?如果是這樣,爲什麼縮放會添加255?它從哪裏獲得價值?
對不起,如果這些都是真正愚蠢的問題,我試圖讓這個下來拍。
你忘了然後1-s在底行。他們被添加(縮放255)。 255 + -247 = 8。 – 2011-02-23 20:14:34
真的嗎?我認爲最後一行是翻譯不是縮放? – 2011-02-23 20:27:55
我不明白爲什麼會這樣,因爲實際的矩陣代數不會產生8.是否ColorMatrix類將特殊規則應用於矩陣中的某些位? – 2011-02-23 20:37:11