Max/MSP/Jitter 官方教程翻譯12 - Chromakeying 視訊去背景合成

weixin_34041003發表於2018-09-05
149-1103266e7c9bd8e5.jpg
公眾號:ArtxCode

00 翻譯自 Cycling74 的 Max/MSP/Jitter 官方文件:Tutorial 10: Chromakeying

本教程介紹如何使用 jit.chromakey 對兩個源視訊Chromakeying(去背景合成,chroma-純色,key-抽離顏色)。還將學習如何使用 suckah 物件獲取螢幕上任意畫素的顏色。

開啟教程 patch,由 loadbang 傳送 read 訊息到兩個 jit.movi​​e 物件,自動讀取兩個視訊(oh.mov 和 traffic.mov):

149-6db732d9817e3fe4.png
通過 ``loadbang`` 初始化 patch

其他引數也由連線到右側訊息框的 loadbang 初始化。訊息框傳送訊息到 patch 中其他名為 receive 的物件完成初始化。(參見教程 18:Remote Messaging)。

點選開關啟動 metro。三個 jit.pwindow 物件中出現了影象。開關不僅可以啟動和停止 metro,還可以啟動和停止兩個 jit.movi​​e 視訊播放。

教程 patch 的下半部分(三個 jit.pwindow 中的兩個)是這樣的:

149-2cac0770f30e0d18.png
``jit.chromakey`` 物件

點選左側 jit.pwindow 物件的藍色區域(即視訊中男性頭部後面的區域)。

第三個 jit.pwindow(在 patch 右下角)將顯示:

149-087775adf8f5fdd1.png
image

歷史說明:藍屏合成(在藍色啞光背景下拍攝現場鏡頭的過程)在 20 世紀 30 年代就出現了,目的是為了後期用其他影象替換藍色。藍屏合成涉及平版印刷分色,起初是非常昂貴的電影工藝,它(現在更常見的是綠屏合成)已經演變成影視製作中最常見的特效。通過數字疊加完成 Chromakeying(藍屏處理的術語)讓它更普及。Chromakeying 在電視行業中常被稱為 CSO(色彩分離疊加),由 1960 年代開發它的 BBC 團隊命名。藍屏發明者 Petro Vlahos 在 1994 年被授予了電影藝術與科學學院終身成就獎,以表彰這項無可替代的技術。

jit.chromakey 物件

去背景合成 - 將一個影象疊加在另一個上面,選擇性替換顏色的過程 - 由 jit.chromakey 物件實現。通過指定顏色和其他引數, jit.chromakey 在第一個(左側)矩陣中檢測包含該顏色的單元,並在生成輸出矩陣時,用第二個(右側)矩陣中的對應單元替換它們。這樣,來自第一個矩陣的單元疊加到第二個矩陣上。

可以選擇任何顏色為要去除的背景,請嘗試點選左側 jit.pwindow 中的其他區域。不同的顏色會從男人的臉上移除,而顯示出第二個視訊中的影象。

149-61d602ad09c17fd8.png
消失的面孔(第一部分)

jit.chromakeycolor 屬性(稱為參考顏色)來定義中心色。這個屬性是一個值列表,應用於等待摳圖的矩陣中的所有平面。tol 屬性定義中心色的容差範圍。此範圍內的顏色也會被去除。

jit.chromakey 與 char 矩陣一起使用時,屬性值的範圍在 0.0~1.0,然後對映到 char 資料所需的 0~255。所以可以將屬性設定為 color 0 0 1.0 0,而不是 0 0 255 0tol 為 0.5 時會去除距離參考色一半色階的所有顏色(key all values within half of the chromatic distance from the reference color)。tol 為 0 時只會用精確的參考色來完成摳圖。

再次點選左側視訊中的藍色區域,然後調整 tol 屬性檢視輸出的變化。在低容差時,左圖中的一些藍屏將保留。容差值非常高時,男人臉部的部分可能會消失。

在教程 patch 中,我們通過點選不可見的物件來設定 jit.chromakey 的顏色屬性。解鎖 patch,會看到左側 jit.pwindow 上面的同心紅色方塊區域:

149-7abb61524b95f12f.png
``suckah`` 物件

該區域是名為 suckah 的 Max UI 物件,可以在 interface 工具欄找到它:

149-4a44b1d2e00ddf8f.png
物件皮膚中的 suckah 物件

suckah 物件獲取它所覆蓋的螢幕畫素的 RGB 值。當單擊物件時(patch 處於鎖定狀態),它會獲取 0.0~1.0 範圍內的浮點數值。例如,單擊視訊中的純藍色區域,suckah 會傳送 0 0 1.0 列表(suckah 的初始版本使用 0~255 範圍。如果需要,可以在 inspector 中選擇這個設定)

suckah 物件獲取 RGB 顏色列表後,用 prepend 0 在前面加上 0(增加 alpha 值到列表最前面)來設定 jit.chromakey 的顏色屬性。然後再 prepend color 併傳送給 jit.chromakey

Chromakey 選項

jit.chromakey 物件有附加屬性:minkey,maxkey 和 fade。當矩陣從左入口進入,jit.chromakey 基於該矩陣在內部建立一個灰度(單平面)遮罩。輸入矩陣中,在容差(tol)範圍內顏色值的單元格,將設定為遮罩中的 maxkey 屬性值(預設為 1)。容差範圍之外的區域乘以 minkey 屬性(預設為 0)。如果 minkey 和 maxkey 為 0 和 1,生成的影象在去背景的位置應該看起來是白色,而在要保留原始影象的位置看起來是黑色。

將得到的遮罩及其負片,分別乘以右矩陣和左矩陣。然後新增乘法的結果以形成合成影象。下圖說明了這個過程:

149-aaf45ef3e625ae87.png
遮罩(minkey 為 0,maxkey 為 1)和合成效果

maxkey 屬性設定右邊輸出矩陣的強度,minkey 屬性設定左邊矩陣的強度。如果要反轉 minkey 和 maxkey 屬性,chromakey 將被反轉:

149-5d06848e1fdd5196.png
minkey 為 1,maxkey 為 0(反向色度鍵)的合成效果

fade 屬性在被去除和保留的區域之間生成插值,可以生成柔化邊緣。左邊矩陣中的顏色略微超出了容差範圍,但是在參考顏色的 tol + fade 的範圍內,在原始顏色和右側矩陣對應單元格中的顏色之間插值。插值取決於 fade 值的大小,以及顏色距離容差邊界有多遠。

嘗試不同的 tol,fade,minkey,maxkey 和 color 值。觀察五個屬性如何影響不同的摳圖效果,以及 minkey 和 maxkey 值如何相互補充。

完全去除背景很困難。選取合適的 tol 和 fade 屬性值,才能確保第一個影象中的區域對第二個影象起作用。包含很多細節的影象,通常會在摳圖和保留區域之間顏色變化的區域,出現輕微的斑點。此外,單一顏色(例如藍色)基本上滿足不了去背景的需要,必須使用一系列值。但是你會發現,希望去除的顏色會出現在想要保留的區域中!平衡所有因素以獲得滿意的效果,是使用 jit.chromakey 物件最困難的部分。

小結

jit.chromakey 物件實現兩個 Jitter 物件的 chromakeying。可以使用 color 和 tol 屬性設定摳圖的顏色範圍,並用 fade,minkey 和 maxkey 值來定義兩個矩陣在合成時的工作方式。suckah 物件放置在 jit.pwindow 上方,點選即可以獲取所在位置的顏色。


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

???

149-570caa57291b473c.png
公眾號:ArtxCode

00 的文集

149-dee76c4917db80a9.png

相關文章