由於電腦科學的快速發展,以往需要眼睛及大腦來判斷或辨識的工作,已可由電腦來處理了,例如即時監控系統、醫療影像處理等。另外一個利用電腦來處理的技術是影像合成,就是在幾張不同的影像中各擷取出需要的部分,重新構築成一張新的合成影像。
目前影像合成的技術已達幾可亂真的程度,在電影工業、遊戲產業及許多的娛樂設施上都可看到它的應用。例如在電影工業中,藉由電腦的輔助可以輕鬆處理以往難以構築的複雜場景,並因場景與演員分開拍攝的關係,可大幅降低在場景中發生意外的可能性。甚至連布景也可使用電腦合成的方式來組成,這樣不僅可以省去搭建場景所需要的廣大場地,也使整個作品呈現出來的感覺更為生動逼真。
影像合成的應用大致上可以分為 2D 影像合成、材質合成與視訊合成。
2D 影像合成
透過數位化的器材,如數位相機、掃描器等,可以把影像轉換成數位檔案存放在電腦中,利用電腦強大的運算能力進行影像處理的工作。例如要從幾張不同的影像中各取出一部分來合成一張新的影像,便需要一個良好的影像切割方式來幫助使用者準確地切割出想要的物體。而要把這些已經切割好的影像合成一張新的影像,除了把它們放置到想要的位置之外,在這些影像的邊緣還需要經過混合或模糊的處理,才能讓影像看起來更自然,看不出經過影像切割再組合起來的痕跡。
這方面技術的應用常可在電影或遊戲中見到,處理一些較驚險的動作場面或者複雜廣大的場景時,便會利用這種合成技術。先在攝影棚用藍幕為背景拍攝演員的場景,以便將來把背景去除進行合成的工作,然後再到外面取真實場景加以合成。例如要拍攝一個萬人場景的浩大場面時,真的需要聘請這麼多臨時演員嗎?利用影像合成的技術就不用如此大費周章,只要把幾個演員的不同動作多做些變化,然後再合成到場景中,便可以大幅降低拍攝影片的困難度。
然而利用多張影像合成新的影像時,可能產生無法填補的破洞,或者是在一張影像中想把某些地方刪除掉而產生破洞時,一般的影像處理軟體並無法有效地幫助我們填補這些破洞,這時可以利用材質合成的技術來填補這些破洞。
材質合成
在處理影像合成時常常會遇到一個問題,那就是手邊正好有一張適合合成的影像,但是它的大小卻不符合你的需要。例如你要合成一道新的牆壁,而手邊正好有一張很漂亮的大理石的材質影像,但是影像的大小並不符合你要合成的牆壁的形狀,這時候便需要借助材質合成獲得想要的影像。
材質合成是一種把使用者輸入的一小張材質影像,合成為任意大小材質影像的演算法。而合成出來的材質影像必須符合幾個條件,那就是合成的材質影像和輸入的材質影像看起來必須是相似的,而且必須避免在合成的材質影像中產生影像結構不連續的情況。簡單地說,材質合成演算法就是利用樣本比對的方式,在輸入的材質影像中尋找最相似的鄰近像素的樣本,來合成新的材質影像。
利用材質合成演算法,可以從小張的材質影像合成出任意大小的材質影像,如此一來便可大幅度減少儲存材質影像的空間。不論需要任何尺寸大小的材質影像,只要儲存小張的樣本影像,就可藉由材質合成演算法合成出想要的材質影像來做各種的應用。例如上面提到的補洞問題,就可以藉由材質合成的方式,把洞附近的像素當做來源的材質樣本,用來合成新的影像填補在洞裡。
上面所提的材質合成方式,適用於正面面對著材質(平行視點)所擷取下來的影像。但是一般利用數位相機或其他影像擷取的裝置在擷取影像時,因為取景位置的關係,常常擷取下來的影像並不是正面面對著材質的影像,而是在某個偏斜的角度下拍攝透視效果的影像。
若是要合成這些具有透視效果的材質影像,則需要使用者先在材質影像上選取若干個特徵點,藉由這些特徵點把材質影像轉換到平行的視點上,就可以利用材質合成演算法合成一張平行視點的材質影像。再藉由特徵點的對應,把合成好的材質影像還原成具有透視效果的材質影像。
而材質合成的應用還不僅止於此,除了上述所提到的平行與透視兩種材質合成的方式外,另外還有一種相當有趣的應用方式,那就是對影像中使用者所圈選的物件進行材質轉換編輯的動作。
一般影像處理軟體,僅能提供使用者圈選物件,並對它進行 2D 平面上的編輯動作,而無法考慮到影像中的這個物件在 3D 上表面的變化。便有學者提出利用影像中像素顏色明暗度的差異,來估算該物件在 3D 表面上的法向量,藉以重構該物件在真實世界中 3D 的座標資訊。接著再利用材質合成的方式來替換該物件的材質,並讓材質影像能隨著估算出來的 3D 資訊在 2D 影像上有相對應的變化,而使得合成出來的影像更接近原始影像中 3D 表面上的變化,也讓使用者在編輯合成上的使用更為便利。
視訊合成
隨著電腦軟硬體的進步,在視訊資料的處理上也越來越快速,但是視訊資料所花費的儲存空間,目前仍是一個問題。雖然有許多先進的影像壓縮方式陸續提出,如 MPEG?4 等,但是其儲存空間仍隨著視訊的時間而增加。若能把短暫片段的視訊合成無限長度的視訊串流,不僅可以大幅縮小儲存的空間,也可以讓該片段視訊資料的使用度更高。這樣的想法可以利用材質合成的概念來完成。
材質合成的基本概念是利用樣本比對的方式,在輸入的材質影像中尋找最相似的鄰近像素的樣本,而這樣的概念也可以應用在視訊串流上。在一串簡短的視訊串流中,可以依照時間上的相依性去尋找兩兩影像中最為相似的影像,並利用一些影像處理的方式讓影像間的轉換能夠更平滑。如此一來便可以藉由一小段影片合成出無限長度循環不停的影片,而所花費的儲存空間就只有輸入的那一小段影片的空間。
在視訊合成中,最重要的問題是如何尋找好的時間轉換點,也就是當視訊串流撥放到時間點ti 時,下一張影像會跳到時間點ti' 繼續撥放。常用的方法是計算在時間點ti 以及前後若干張的影像,與這段視訊串流中的另外一個時間點ti' 及前後若干張影像間像素的顏色差值,並加上一些限制條件的判斷,以找出最佳的時間轉換點ti'。
應用在電影上,可以把背景有著重複性動作的部分先切割出來,然後利用視訊合成的方式合成所需要的時間長度。接下來再把其他主體,如演員等,利用良好的影像合成技術跟已合成好的視訊結合起來,這樣不僅儲存的空間減少,也讓幕後電腦處理編修的工作更有效率。
未來展望
影像合成的技術在 2D 影像上的利用已經頗為成熟,不管是在電影中或是在平面媒體廣告中,都常見到影像合成技術的應用,在這方面的應用也都到了幾可擬真的程度。在消費者市場中,一些著名的影像處理軟體也提供了許多類似的功能,讓使用者能很輕鬆地編輯合成自己日常生活中的照片等數位化影像,然而這只是其中一小部分的研究而已。
近年來有不少學者陸續提出在 3D 模型上材質合成的研究,雖然在應用上仍不很廣泛,還有許多可以改善的空間,相信在不久的將來,會有更多令人驚艷的研究成果。