matlab两张图片合成一张_11. 图像合成与图像融合
本文同步發(fā)表在我的微信公眾號(hào)“計(jì)算攝影學(xué)”,歡迎掃碼關(guān)注
【轉(zhuǎn)載請注明來源和作者】
我們終于進(jìn)入了新的篇章。這一次我來給大家介紹一下圖像合成與融合。
我們經(jīng)常看到一些很奇妙的PS技術(shù),例如下面這張,它把1928年的一位叫做Frankie Yale的黑幫老大被殺時(shí)的照片,與現(xiàn)在這棟房子的照片無縫融合在一起:
還有這張,將1945年柏林街道的照片和2010年的照片無縫的融合到一起
給天空加上彩虹,這是咱們很多時(shí)候后期處理相片時(shí)常見的手段:
改變花朵的顏色
交換水果的紋理外觀:
還有更妙的,在1994年上映的阿甘正傳里面,湯姆漢克斯和肯尼迪總統(tǒng)同框出鏡,即使是在大熒幕上也是毫無違和感。
https://www.zhihu.com/video/1087501356620656640不得不說,圖像合成和融合真是一個(gè)很神奇的技術(shù)。因此我準(zhǔn)備用好幾篇文章對此做一些詳細(xì)的介紹。下圖是提綱,這一篇文章會(huì)介紹三個(gè)技術(shù):cut-and-paste, alpha blending, multiand blending
一、直接剪切粘貼技術(shù)(cut-and-paste)
在所有相關(guān)技術(shù)中,最直觀簡單就是cut-and-paste了,經(jīng)常在攝影師后期制作中所采用,如果使用得當(dāng),它也可以創(chuàng)作出令人滿意的效果。
例如,下面照片如何制作出來?
其實(shí)它是由兩張照片中不同的部分按一定順序疊加而成的,大家可以看看下面的源圖像:
只要我們先放上左圖的背景,再疊加比爾蓋茨的人像,最后再疊加左圖的前景,就可以合成出最終的圖像。
從圖像中確定前景和背景的技術(shù)叫做摳圖,英文對應(yīng):Image Matting,而將摳出的部分無縫的貼入目標(biāo)圖像的過程則稱為圖像合成,英文對應(yīng):Image Compositing. 為了技術(shù)術(shù)語的準(zhǔn)確性,我這里引用《Computer Vision: Algorithms and Applications》的原文如下:
The process of extracting the object from the original image is often called matting (Smith and Blinn 1996), while the process of inserting it into another image (without visible artifacts) is called compositing (Porter and Duff 1984; Blinn 1994a).Cut-and-paste技術(shù)如果應(yīng)用得當(dāng),可以產(chǎn)生相當(dāng)有藝術(shù)感的圖像,如下圖,這應(yīng)該是在原始的人物和狗狗身上粘貼了很多紋理圖像形成的。
但很多時(shí)候,這個(gè)簡單的技術(shù)只會(huì)產(chǎn)生讓人沮喪的結(jié)果,例如下面的圖像中想要粘貼進(jìn)去兩只企鵝,就真的是5毛錢的特效了。
既然剪切粘貼過于粗暴,生成的照片不夠自然,有沒有更好的方法呢?接下來我們就談?wù)勔环N更好的方法:Alpha Blending
二、Alpha融合
Alpha融合是一個(gè)升級(jí)版的cut-and-paste,如果表示為公式的話是這個(gè)樣子:
output = foreground * mask + background * (1-mask)
由于上面使用的Mask是二值的,因此融合的圖像很不自然,大家從融合生成的圖像也可以看出
如果對Mask圖做稍稍的羽化,效果就會(huì)好很多,見下圖。對Mask圖做羽化的方法有很多,最直接的方法就是對其做一定尺度的高斯濾波,我在基本圖像濾波中已經(jīng)講過了。
因此Alpha融合的效果好壞取決我們?nèi)绾握_的設(shè)置Alpha Mask,如果要把一張圖中的一部分摳出,并融合到另外一張新的圖片中,主要牽涉到兩個(gè)步驟:
準(zhǔn)確的計(jì)算Alpha Mask很多時(shí)候都是一件復(fù)雜的事情,我們下面看一個(gè)稍微復(fù)雜的例子。 有時(shí)候我們希望將兩張照片重疊到一起生成一張照片,例如下面兩張照片:
怎么融合它們呢?有很多人想出了一些聰明的方法。現(xiàn)在介紹一種:
第1步:生成兩張圖像的distance transform圖
這個(gè)distance tranform圖中的每個(gè)像素值都表示原圖中對應(yīng)的像素與其最近的黑色像素(zero pixels)的距離。如果你使用OpenCV的話,可以用distanceTransform函數(shù)來做到,如果是Matlab,則是bwdist函數(shù)。
第2步:計(jì)算Mask
接下來采用Alpha融合方式,可以得到最終的照片如下。你可以看到兩張照片已經(jīng)比較好的融合到了一起,當(dāng)然還可以看出一些細(xì)微的不自然處。
三、多頻段融合
要想讓Alpha融合結(jié)果顯得自然,很關(guān)鍵的一點(diǎn)是選擇合適的融合窗口大小。我用下面的實(shí)例來說明這個(gè)問題。
讓我們把以下兩張照片融合到一起。
如果選擇圖像中中軸線作為融合后兩個(gè)圖像的分界線,那么融合過程可以表示為:
這其實(shí)也是一種Alpha融合,實(shí)際上上面的過程就是:
leftImageWeight * leftImage + rightImageWeight * rightImage = OutputImage
其中:
leftImageWeight + rightImageWeight = 1
因此最終圖像的表現(xiàn)取決于兩張圖片的有效像素的重疊區(qū)域。 那么問題來了,這個(gè)重疊區(qū)域到底選擇多大呢?我以下圖來說明不同窗口大小的影響:
有一個(gè)經(jīng)驗(yàn)判斷準(zhǔn)則是:
- 融合窗口大小要相當(dāng)于輸出圖像中最大的顯著特征的大小,從頻譜上看生成的圖像所包含頻率個(gè)數(shù)應(yīng)該是2的冪
- 融合窗口大小要小于2倍最小顯著特征的大小,從輸出圖像的頻譜上看最大頻率<=2*最小頻率
然而大家都知道,自然圖像通常包含了很多不同的特征,頻譜跨度也很大,此時(shí)選擇融合窗口就會(huì)非常困難,有沒有更好的方法呢? 這就引入了一種新的融合方法:多頻段融合。下圖說明了這個(gè)思想:
因此總結(jié)其流程就是:
3. 利用融合后的金字塔重建出輸出圖像
我們來看一個(gè)著名的例子,一個(gè)蘋果和一個(gè)橘子如何通過中線融合到一起
利用上面的流程,我們來看看金字塔各層融合的情況:
OK,因此如果重建出原始圖像可以看到,我們這里講的多頻段融合,即拉普拉斯金字塔融合,實(shí)際上是在半自動(dòng)的計(jì)算最佳的融合窗口和權(quán)重大小,其本質(zhì)上還是一種線性融合:
在《Computer Vision: Algorithms and Applications》一書中還有很多有趣的例子,例如:
在實(shí)際實(shí)現(xiàn)過程中,為了節(jié)省計(jì)算量,可以考慮只用兩層金字塔來融合:
這在需要融合多張圖像時(shí)非常有用,例如下面我們需要將多張照片融合成一幅全景圖像:
這里我只是簡單的把多張經(jīng)過裁剪的照片擺放在一起,還沒有經(jīng)過融合。
如果進(jìn)行了兩層金字塔融合,我們可以分別對低頻信號(hào)和高頻信號(hào)進(jìn)行融合,所得到的圖像如下:
從這兩層圖像我們可以重建出最終的圖像:
由于兩層金字塔融合,甚至多層金字塔融合同時(shí)考慮到了圖像中的不同頻率的信息,因此通常融合出來的效果相比單層的Alpha融合(線性融合)更好。 就以上面的融合圖像來比較一下圖像的局部,大家可以看到金字塔融合的內(nèi)容更清晰:
四、總結(jié)
我們在一開篇看到了很多圖像融合的實(shí)例,我希望它們已經(jīng)成功的吸引了你的注意。而今天給大家介紹了圖像合成和融合的幾個(gè)基本的方法,包括cut-and-paste,alpha融合,以及多頻段融合。它們基本上都可以歸納為圖像之間的線性融合,其中多頻段融合是一種多層的線性融合。 我下一講將要講到一種效果非常好的融合方式:泊松融合。
我在如下的Jupyter Notebook中展示了本帖中的相關(guān)操作,你可以對著它獲取更深入的理解,也能夠進(jìn)一步掌握用Python來進(jìn)行圖像處理的一些技巧。
https://nbviewer.jupyter.org/github/yourwanghao/CMUComputationalPhotography/blob/master/class11/Notebook11.ipynb
跟這一系列專題文章相關(guān)的Notebook可以從https://github.com/yourwanghao/CMUComputationalPhotography.git獲取
參考資料:
這一篇文章的絕大部分素材來自于
[1] CMU 2017 Fall Computational Photography Course 15-463, Lecture 7
[2] Richard Szeliski, Computer Vision : Algorithms and Applications,
總結(jié)
以上是生活随笔為你收集整理的matlab两张图片合成一张_11. 图像合成与图像融合的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 父母小孩看病住院可以刷自己的医保卡么?国
- 下一篇: 信用卡取现额度怎么用 高额的利息早还早轻