有什麼軟體可以實現移動拍攝有視差的圖像拼接?

比如用手機拍全景照片時視點不能移動(手機只能轉動而不能發生位移),那麼有沒有軟體能突破這種限制,即如果是移動中拍攝,也可以合成全景照片


被 @荊慢慢 點了,那就說點東西來拋磚引玉吧。

圖像拼接這個事情,在我看來,至少可以從五個不同的角度來看待。

第一個角度,就是擴大成像面積,擴大畫幅,進而得到更廣的視角。這可以通過平移鏡頭或者底片/CMOS 來實現,但是要求鏡頭本身成像圈要大。下面兩個示意圖簡單演示了這個方式:

大成像圈鏡頭正常拍攝

大成像圈鏡頭平移底片拼接拍攝

第一幅圖中中間的黑色框就是底片/CMOS(後文為敘述方便統一簡稱底片)所在,外面的圈表示鏡頭的成像圈。一般的鏡頭成像圈僅僅覆蓋這個黑框,但是有的鏡頭,比如一些移軸鏡頭,其成像圈很大,遠大於底片的面積,所以可以通過移動底片的位置來接收成像圈不同位置的圖像,如第二幅圖所示。由於這個時候鏡頭本身沒有動,所以這些不同的圖像是可以直接完美拼合在一起的。從最後等效的結果看,通過拼接能拍下更多的畫面,就好像鏡頭的視角變大了。

這個模式下,其實等價於用了一個更廣的鏡頭來拍攝,從畫面透視上來說並沒有什麼不同。容易想到,這種模式擴展的視角是有限的,和超廣角鏡頭類似,對於非常大視角的場景,甚至超過 180 度視角的「全景」,是無能為力的。

第二個角度,相機圍繞鏡頭光心旋轉。這個就是最傳統的「全景」拍攝模式。如下圖所示

旋轉鏡頭拍攝全景

這裡提一下,這種方法需要相機圍繞鏡頭光心旋轉,否則不同照片之間會有視差,導致拼接失敗。但是通常鏡頭光心與相機本身的中心是不重合的,不同鏡頭也不一樣,在實際中需要反覆測定。現在的拼接軟體,絕大多數都是用這種模式進行拼接的(比如 PTGui,AutoPano 等)

第三種角度,是最近幾年隨著計算機的運算速度提高逐漸發展起來的,更先進的模式。如上所述,經典模式在有視差的情況下會失敗。很大一個原因在於,有視差的話,場景中不同部分(近景和遠景)在兩幅圖像中是需要有不同的變換方式,才能對齊的。於是又學者就提出,不再使用全局統一的變換,針對近景和遠景,分別使用不同的變換,這樣就能對齊了。

這一部分有大牛 @YaqiLYU 已經寫過一些非常好的綜述性的回答了,可以參考:YaqiLYU:圖像拼接現在還有研究的價值嗎?有哪些可以研究的點?現在技術發展如何?

不過,正因為是比較新的思想,最近幾年才逐漸受到重視,所以據我所知還沒有商業軟體有實現相關功能。題主如果有一定的編程基礎,不妨自己按照論文的思路實現一遍。這裡借用 @YaqiLYU 回答里的一幅圖來大致說明一下概念

通過非全局變換來拼接有視差的場景

第四種角度,前面也有答主提到過,就是通過多張不同角度的照片,使用 Structure from Motion 的方法,對拍攝的場景進行三維重構,既然得到了整個三維場景,那就可以隨便挑選角度進行輸出了。

現在隨著無人機大熱,這種模式應用也十分廣泛。用無人機對一個建築物多角度拍照,就可以利用一些軟體(比如 Pix4D,Altizure)完美重建這個建築物。比如下圖就是利用 Pix4D 重建的一片施工的空地(Pix4D 自帶的樣例)

通過多張照片進行三維場景重建

與前幾個思路不同,要讓重建結果更好,每張照片之間的視差要大一些才好。視差大才能更好地對三維空間的位置進行估計和計算。

最後一個角度,就是黃局 @黃一凱 回答中提到的 iPhone 的做法,這種方法其實是連續不斷拍攝,然後從每一幀畫面里抽取一豎條像素拼到畫面里,隨著你不斷移動,不斷抽取小豎條拼起來。事實上,從原理看,這種思路等價於採用一個線掃描的 CCD 對場景進行掃描。

如果你只是旋轉手機沒有移動,那麼效果就等同於上面第二種經典的全景拼接,即使有小的移動,在這種方法下也很難發現不妥;而如果你旋轉手機的同時還有很大的移動,那麼出來的畫面就會顯得比較扭曲奇怪了。當然,從廣義來說,這也是實現了圖像拼接的。


這樣算么?iPhone 7全景模式。


不知道有沒有,但是肯定巨難。

一個關鍵問題是拼接點的局部扭曲和採樣幀數,如果以往30%的重合就能拼接,那麼現在改變視點就要90%的重合才能拼接。

連手動都很難,局部的扭曲無法線性地互相配合統一到一整個流暢地視角下,只能憑感覺。帶結構處理的演算法反而更優。

說到底,這是個拍攝位置曲率的問題。懶得細分析,我把拍無人機時想到地一些pattern發出來

但是這不意味著不可能,畢竟塞尚還不知道誰,就是一副圖多個視角來著的。

視角分析默默邀請 @章佳傑


軟體不知道有沒有,演算法是有的,比如這篇文章Parallax-tolerant Image Stitching


誰說手機拍全景的時候只能轉動不能位移?你試過用Iphone 7P(其他型號不了解)移動著拍長櫥窗嗎?試試就知道了,並且,全景照片在演算法上不是靠姿態感測器的,而是靠圖像本身的位置跟蹤,這個技術已經非常非常成熟了,所以你說的只能轉動不能位移的情況不存在,so,手機不能傾斜倒是真的。


matlab就行


說起來你們可能不知道PS有這個功能


pix4Dmaper


謝邀~

現成的軟體,要實現移動拍攝有視差的圖像拼接,並且要拼接完美、無畸變糾正很難,

但是演算法倒是有,會對影響視差的瀑光度、灰暗等因素進行處理,盡量還原圖像。

例子可參考Github的一案例

pisofttech/pipano-sdk-ios


正統的做法是structure from motion,在該框架下可以合成任意視角拍攝的照片,不過輸出是點雲或者三維場景,不是球面全景。
因為合成的數據,已經突破了球面全景可以表達的空間維度。


推薦閱讀:

怎麼用ps分析提取圖片的顏色值?
學習Photoshop,想深入了解一下其中的演算法,是否可以看 數字圖像處理 這本書?
為什麼在後期製作圖像時,可以讓圖片變得透明…這到底是什麼原理…是改變了原始照片的什麼東西嗎?

TAG:圖像處理 | 攝影后期技術 | 全景拍攝 |