Max/MSP/Jitter 官方教程翻譯14 - 顏色查找表

公眾號:ArtxCode

00 翻譯自 Cycling74 的 Max/MSP/Jitter 官方文檔:Tutorial 12: Color Lookup Tables

本教程將講解如何使用顏色查找表(lookup tables)重新映射 Jitter 矩陣內(nèi)的數(shù)據(jù)。jit.charmap 對象是為此而設(shè)計的。我們還將研究生成查找表矩陣的不同策略,包括 jit.gradient 對象。

查找過程

查找表(通常稱為傳遞函數(shù)/transfer functions)是一個數(shù)組,以數(shù)字為表的索引。檢索存儲在該索引(地址或位置)的數(shù)字來替換原數(shù)字。任何函數(shù) graph - 每個 x 值(地址)有相應(yīng)的 y 值(輸出)- 都可以用作查找表。Max 對象如 funbufftable 和 MSP buffer~ 對象是常用的查找表。本教程將以類似的方式使用 Jitter 矩陣。

打開教程 patch 讀取圖像

image

patch 左上角有一個 jit.movi??e 對象,讀取兩個文件。初始化對象(通過 loadbang)并加載文件 colorwheel.pct。也可以點擊 rain.mov 消息加載視頻。可以隨意切換兩個圖像源。

單擊 patch 頂部的開關(guān)啟動 metro。色輪同時出現(xiàn)在頂部和底部的 jit.pwindow。底部第三個(矩形)jit.pwindow 中出現(xiàn)漸變。

image

jit.charmap 的輸出和查找表矩陣

patch 底部有一個jit.charmap 對象,用它來重新映射圖像中的單元格值。對象有兩個入口,左入口連接到頂部的 jit.movi??e。右入口連接到 jit.matrix colortable。名為 colortable 的矩陣只有一維共 256 個單元,有四個 char 型數(shù)據(jù)平面。這是jit.charmap 用來重新映射左邊矩陣中單元格的顏色查找表。帶有名字 ctable 的receive(一般縮寫為 r)對象從 patch 的其他位置接收數(shù)據(jù)并發(fā)送到 jit.matrix。打開頂部的開關(guān)發(fā)送一個 bang 到 jit.matrix colortable,它將矩陣消息發(fā)送到jit.pwindowjit.charmap

jit.charmap 用輸入(左)矩陣中的值,指向(右)矩陣中對應(yīng)的位置并復(fù)制那里的值,生成輸出矩陣。如果發(fā)送給jit.charmap 的矩陣包含一個在四個平面中值為 100 50 35 20 的單元格。如果查找表在平面 1 第 100 個單元格的值是 73,平面 2 第 50 個單元格的值是 25 ,平面 3 的第 35 個單元格的值是 0,平面 4 第 20 個單元格的值是 203,輸出單元的值是 73 25 0 203

jit.charmap 查找表是有 256 個單元格的一維矩陣,其平面數(shù)量與要重新映射的矩陣相同。因為 char 矩陣的值范圍是 0~255,因此需要 256 個數(shù)字來覆蓋查找表。

生成查找表

patch 的右上側(cè)包含三個 multislider,可以設(shè)計 colortable 查找表矩陣 1-3 平面的傳遞函數(shù):

用 multislider 的值填充查找表矩陣

multislider(有 256個 整數(shù) slider,范圍為 0~255)把列表發(fā)送到下面的 jit.fill對象。它用 multislider 的值替換 colortable 矩陣當(dāng)前存儲在平面1-3(即紅,綠和藍)的值。當(dāng)矩陣采用新值時,jit.fill發(fā)出 bang 到 patch 左邊連接到 jit.charmap 右入口的 jit.matrix。這里忽略了平面 0,因為只有將 4 平面矩陣視為視頻時,它才包含 Alpha 值。

patch 中的 jit.matrixjit.fill 的名稱相同(colortable)。這樣兩個對象從同一矩陣讀取和寫入,一個對象(jit.fill)生成另一個對象(jit.matrix)可讀取的數(shù)據(jù),而不必在兩個矩陣之間復(fù)制數(shù)據(jù)。這跟許多 MSP 對象(例如 peek~play~groove~)可以共享存儲在單個 buffer~ 中的樣本數(shù)據(jù)類似。關(guān)于命名矩陣請參見教程 13,18 和 19。

multislider 中隨意繪制一些形狀,看它如何影響查找表(較小的jit.pwindow)和 jit.movi??e 的輸出圖像。可以來回切換兩個圖像源。

如果想重置任一平面為 y = “x” 傳遞函數(shù)(使所有值保持不變的固定斜率直線),可以單擊相應(yīng) multislider 上的按鈕。名為 p clear 的子 patch 用 uzi 初始化了 multislider

要點:與許多 Max 對象一樣,Jitter 對象會保留存儲在一個入口中的矩陣,即使另一個入口接收到了新矩陣。所以這個 patch 的 metro 只需要觸發(fā) jit.movi??e。包含查找表jit.charmapjit.matrix 只需要在所存儲的數(shù)據(jù)發(fā)生變化時輸出值。

以下是一些查找表及其結(jié)果:

三組 ``multislider``及其生成的顏色查找表和輸出顏色輪

例 1 中,紅色和藍色查找表調(diào)換而綠色正常。結(jié)果是輸入圖像中較大的紅色和藍色值在輸出時變小,反之亦然。所以色輪的白色背景現(xiàn)在看起來是綠色的(單元格值 0 255 255 255 映射為 0 0 255 0)。

例 2 設(shè)置綠色平面為 0(查找表在整個輸入值范圍內(nèi)設(shè)置為 0)。紅色和藍色平面如果超過閾值也設(shè)置為 0,這時值會突然上升(紅色比藍色上升得更明顯)。結(jié)果是色輪大部分都是黑色的(特別是在綠色區(qū)域)。紅色平面僅在非常高的值(即色輪背景中的品紅色)中可見。

例 3 正常映射紅色平面。綠色平面是拋物線形狀,極值映射為高,中間陰影映射為低。藍色平面除了中間調(diào)中被歸零的范圍,其余正常。這種非線性表現(xiàn)為貫穿彩色輪頂部和右側(cè)的紅色“斷層線”。

有無數(shù)組合可以重新映射矩陣單元格的值。接下來研究另一個以更精確方式重新映射顏色值的對象。

jit.gradient 對象

打開 Duotone 子 patch,它顯示了使用 jit.gradient 生成查找表的方法:

使用 ``jit.gradient`` 對象

jit.gradient 生成兩個單元格的值之間平滑漸變的單維 char 矩陣。startstop 屬性是指定這些單元格的值列表。例如,start 屬性 0 0 0 0 和 end 屬性 0 0.5 1.0 0.5 將生成從黑色(矩陣中的單元格 0)到淺綠色(矩陣中最后一個單元格)的漸變。

我們已經(jīng)用參數(shù)指定 jit.gradient 為 256 單元寬,這樣當(dāng)它改變時可以存儲在 jit.matrix colortable 中。請注意, jit.gradient 在屬性列表中使用浮點數(shù)來指定 char 值(即屬性中用值 1.0 指定 char 值為 255)。

swatch 對象輸出的 RGB 列表轉(zhuǎn)換為 ARGB 浮點數(shù)來獲得格式化屬性。將屬性發(fā)送到 jit.gradient 對象后,它接收觸發(fā)對象發(fā)出的 bang,將矩陣輸出到 patch 左側(cè)的jit.matrix

嘗試在 swatch 中選擇顏色。start 和 end 屬性指定查找表的邊界,所以輸入圖像的值表現(xiàn)為在兩種顏色之間變化的雙色調(diào)外觀。patch 頂部的 multislider 將反映 jit.gradient 所生成的查找表。

使用顏色漸變作為查找表

例 1 是翻轉(zhuǎn)的圖像。查找表的 start 是白色(start 0 1.0 1.0 1.0),end 是黑色(end 0. 0. 0. 0)。結(jié)果是輸入值 0 映射到 255,反之亦然(y = 255 - x)。

例 2 和 3 是雙色調(diào)漸變,將色輪的光譜重新映射到紅色和橙色(例 2)以及橄欖色和青色(例 3)之間。請注意,根據(jù)色輪中不同點的原始顏色,漸變曲線變得更陡峭或更和緩。

jit.gradient 的另一個屬性是 cheby,它指定在矩陣開始和結(jié)束值之間的變形曲線。cheby 屬性的參數(shù)列表是浮點數(shù)。這些參數(shù)是 Chebyshev polynomials(見下文的切比雪夫多項式)不同階數(shù)的振幅。使用查找表時,這些特殊功能曲線會產(chǎn)生不同的效果。patch 中設(shè)置 cheby 屬性的 multislider,可以指定前 8 個 Chebyshev polynomials 曲線的相對振幅,形狀如下(如果將它們視為從黑色到白色的過渡):

用 Chebyshev orders 1-4(頂行)和 5-8(底行)生成的梯度

技術(shù)說明:切比雪夫多項式通常用作數(shù)字合成算法中波形整形音頻信號的查找表(它們的特殊屬性可以將正弦波形扭曲成等效于不同階數(shù)幅度的諧波頻譜)。MSP lookup~ 對象可以與加載到 buffer~ 中的函數(shù)一起來完成音頻信號處理(跟本教程中的圖像處理類似)。更多內(nèi)容請參閱 MSP 手冊中的教程 12:綜合波形整形。

復(fù)位 gradient 中開始和結(jié)束點(單擊上面的消息框),緩慢調(diào)整 multislider控制的 cheby 屬性。觀察顏色輪在顏色消失并在不同區(qū)域重新出現(xiàn)時如何變化。

jit.gradient 中使用 cheby 屬性時,即使將漸變起點和終點保留為黑色和白色,也可以得到一些非常有趣的顏色變形效果。以下是視頻剪輯 rain.mov 的一些例子:

不同梯度曲線對雨水彩色頻譜的影響

左邊圖像顯示 rain.mov 中未處理的靜止圖像。中間圖像顯示了當(dāng)使用二階切比雪夫多項式(圖像中最暗的區(qū)域現(xiàn)在位于色譜的中間)生成梯度時色譜的變化。右側(cè)圖像顯示更復(fù)雜的梯度,色譜顯示多個峰和谷。

patch 頂部的 multislider反映查找表的當(dāng)前狀態(tài)(由 jit.gradient 生成的矩陣被發(fā)送到 p showit 子 patch 中的 jit.iter,在那里數(shù)字被組合以設(shè)定 multislider 的狀態(tài))。嘗試生成漸變,然后調(diào)整 multislider 手動修改查找表。這樣 jit.gradient 就作為更復(fù)雜的查找表的起始點。

image

小結(jié)

使用 jit.charmap 映射 char 矩陣中單元格的值。jit.charmap 的右入口接收 256 單元矩陣來定義要用于輸入矩陣數(shù)據(jù)的查找表(或傳遞函數(shù))。可以使用多種方法定義查找表,包括使用 jit.fill從 Max 列表生成矩陣,或使用 jit.gradient 對象根據(jù) cheby 指定的曲線形狀,在開始和結(jié)束單元格值之間生成顏色漸變屬性。



友情提示:獨自折騰 Max 易患上癔癥……不妨入群互助

??????

公眾號:ArtxCode

00 的文集

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,578評論 6 544
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,701評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,691評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,974評論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 72,694評論 6 413
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 56,026評論 1 329
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,015評論 3 450
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 43,193評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,719評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 41,442評論 3 360
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,668評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,151評論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,846評論 3 351
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,255評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,592評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,394評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 48,635評論 2 380

推薦閱讀更多精彩內(nèi)容