2017年8月13日 星期日

用魚眼鏡頭 Sigma 8mm 拍攝環景 (全景)


Sigma 8mm f3.5
這是顆魚眼鏡頭, 去年初就買了, 當初就想玩環景
看到 Google 說上傳到某個地方就可以協助轉換, 所以就買了這顆鏡頭
然後裝上三腳架, 拍了一些照片, 然後......找不到哪裡可以轉換 (淦!騙我!)
那網頁連結點來點去好像無限迴圈, 根本沒得轉換, 於是就把鏡頭收起來等有空再來研究
然後這一等, 一年就過去了XD 直到前幾個月才想起來
實際下去看, 發現這技術還挺複雜的, 到處蒐集資料, 終於拼揍完成
不過這方案真的十分麻煩, 如果沒有畫質要求, 建議直接買全景相機
那個超簡單還可以錄影, 強烈推薦!




魚眼鏡頭前端是突出的, 沒法裝保護鏡, 剛開始使用很不習慣, 常常不小心碰到
這東西又不容易清理, 如果沾到手印, 用鏡頭清潔劑擦只是把髒污從左邊擦到右邊
所以最後都用水洗, 當然不是整顆扔進水裡XD
鏡頭朝下, 手沾一點洗碗精, 然後滴水稀釋到很稀, 然後抹到鏡頭上, 全程鏡頭朝下
朝上的話水就會流進四周縫隙, 超麻煩, 也超刺激, 要是手滑了這鏡頭前端突出就砸向洗手台
結果肯定就像蛋蛋被踢到一樣, 酸痛又心痛!XD
抹完稀釋洗碗精後用衛生紙吸水, 接著手沾乾淨的水塗抹鏡面, 然後再吸水, 重複兩三次
這樣就行了, 然後用吹風球把衛生紙棉絮吹掉, 然後用乾衛生紙擦一擦, 大概就這樣

魚眼鏡頭可以拍到很寬廣的畫面, 不過畫面變形, 在全幅機上投射出一個圓形影像
在還沒有找到方案連接圖片時, 有天突然想到, 魚眼看起來中間放很大
變形的範圍是不是中間佔比較多, 旁邊佔比較少? 這樣就算把四周展開不是會模糊嗎?
於是就做了一個實驗, 想看看各區域佔的比例


用量角器做一個 90 度圓弧, 然後每 10 度畫一刻度


然後剪十張紙片黏上去, 用魚眼鏡頭去拍


如果是全幅機會拍到如上圖, 一個圓形影像


如果是 APS-C 片幅, 拍出來會如上圖
算一下紙片, 每一張都有在畫面上, 表示視角是 180 度
視角這情報在網路上隨處可得, 但我從來沒有注意過, 直到這實驗做了才注意, 還真廣!
而且仔細看紙片分佈, 其實很均勻, 並沒有中間比較多的現象
紅線將畫面分成十等分, 0.5 那條線在畫面上的位置即是畫面寬度乘以 0.5
可能是轉接環誤差, 畫面左邊的黑邊和右邊不同, 如果影像往左移動一點
90 度的紙片就剛好在正中間, 每 20 度佔 1/10 畫面
只有最外圈有些壓縮, 差不多每 15 度佔 1/10 畫面, 幾乎是平均分佈
會感覺東西變大應該是近拍, 佔的角度變多, 展開到畫面上就感覺變大
但如果拍遠的應該感覺壓縮, 因為把 180 度的景都擠到一個圓上了

因為這個實驗我就用一些關鍵詞 Google 找到一些有趣的 (或頭痛的) 東西XD
Fisheye Projection
從上面網頁節錄:

還真有人在研究這東西, 魚眼鏡頭的投影函數, 這資料去哪找的啊?XD
還是說是手動量測的?? 若是這樣還真是超強的
上圖的函數是假設有一點在鏡頭前方, 它的位置畫直線後和鏡頭中軸交叉
= 交叉的夾角
R = 投射到畫面上後的點, 該點與畫面中心的距離
f = 鏡頭焦距
應該沒錯吧? 我拿去畫成圖表看起來是對得起來
但我數學不好不太有信心XD 如果有錯麻煩指正, 感謝

如果上面是對的, 把數據加工一下, 用以下指令繪製圖表

gnuplot -e "set terminal png size 800,640" \
-e "set xrange [-90:90]" \
-e "set yrange [-0.2:1.3]" \
-e "set xtics 10" \
-e "set ytics 0.1" \
-e "set xlabel \"Angle between point in the real world and the optical axis (degrees)\"" \
-e "set ylabel \"X Position on APS-C Sensor (0 to 1)\"" \
-e "set key left" \
-e "set grid" \
-e "set object 1 rect from -90,0 to 90,1 fc lt 1" \
-e "set object 1 rect behind fc rgb '#cccccc' fillstyle solid 1.0 noborder" \
-e "plot \
  (( 16 * tan((x*pi/180)/2) )/25)+0.5 title 'Samyang 8mm f/3.5' lt rgb '#009407', \
  (( 7.3 * sin(x*pi/180) )/25)+0.5 title 'MADOKA 7.3mm f/4' lt rgb '#0000FF', \
  (( 16 * sin((x*pi/180)/2) )/25)+0.5 title 'Sigma 8mm f/4.0' lt rgb '#FF8800', \
  (( 1.47 * 8 * sin(0.713 * (x*pi/180)) )/25)+0.5 title 'Nikkor 10.5mm f/2.8' lt rgb '#FFF600', \
  (( 8 * (x*pi/180) )/25)+0.5 title 'Peleng 8mm f/3.5' lt rgb '#FF0000' \
  " > gplot.png

為了畫面可讀性加了幾條指令, 看起來有點複雜, 但公式不難, 都抄上圖的
f 用 mm 為單位代入, 每個 R 算完後除以 25, 25mm 即是 APS-C 感測器的概略寬度
把它換成一個 +/-0.5 的比例值, 然後加上 0.5 把它推到 0~1 的範圍
即是對應上上一張 APS-C 照片上標示的分割值, 上面那堆指令可以得到這張圖表:

灰色範圍即是 APS-C 感測器能看到的範圍, 這裡只考慮到 X 軸水平部份
也就是鏡頭前方的點只考慮 X 軸上的點, 如果以 R 的定義是做半徑
感測器對角線會更長可以裝更多畫面, 但我們通常不會把四周角落的東西考慮進來
這樣拿去拍照就得把機身傾斜才能看到最大範圍, 雖然真的有人這麼做
但我不會這樣做, 這樣檢視畫面很不方便

以上圖綠色線那顆 Samyang 鏡頭來說, 即大約 75 度以後視角的影像就不會出現在感測器上
(但對角可能可以涵蓋更多, 拿斜著拍的用戶可能是買這顆)
紅色線那顆 Peleng 是網頁上說最理想的取景鏡頭, 可以看到 180 度範圍剛好涵蓋整個感測器
而且是線性的, 表示每個角度分佈都是均勻的
上圖 Sigma 鏡頭雖然是 f4 版本, 但分佈和我這顆看到的非常接近
+/-60 度以前大致線性 (我照片排列相反, 換成我照片即是 30 度到 90 度間)
+/-60 度以外呈現曲線收縮, 特徵相符, 所以我覺得我對算式的理解應該是沒錯的
而藍色線那顆 MADOKA (小圓~~~XD) 則是在畫面範圍內就達到 180 度
即是成像無法填滿 APS-C 感測器, 會留下大量黑邊, 網路搜尋別人拍的大致相符
正確說 MADOKA 應該是 APS-C 專用魚眼, 在 APS-C 上投射出完整圓形影像
由於我是先有鏡頭才看到這些研究, 買 Sigma 是 Google 網頁推薦
如果我先知道這些技術細節, 我應該會買 Peleng, 價錢只有 Sigma 那顆的一半
而且是蘇聯製造, 是那個戰鬥民族的強權國家做的XD
不過這就意味著它是老鏡, 網路上有多種版本, 有人說是廠商新製品, 也有人說是庫存新品
就算是新的, 戰鬥民族的鍍膜應該是二戰時跟德國搶來的那些舊技術吧?
拍環景一定會涵蓋到太陽, 這時鍍膜影響應該會很大, 我想不能完全只看投射特性
不過既然我已經買了就用吧, 而且成像品質也不差, 看起來不錯, 就不想再花錢換了

雖然 APS-C 拍出的影像和全幅的不同, 但是如果軟體有支援, 它們都能拼接出環景
我選擇 APS-C 的原因只是因為我兩台相機 A7, A6000 都是 24MP 解析度
我當然選涵蓋畫面大的 APS-C, 這樣拼接出的全景影像才會大
A7 拼接出來的影像寬約 8000 多, A6000 則是 11000 多, 差距不小啊!

了解鏡頭了接著是架設拍攝治具, 要能正確拼接環景有一個條件要滿足:Nodal Point (這裡翻作節點)
這裡有歷史介紹:The Nodal Point
這詞原先是用在以前的光學量測儀器, 為了獲得無失真的影像
(邏輯上無失真, 即是經過電腦修正後無失真, 但要能電腦修正, 有些先決條件要滿足)
量測儀器上安裝鏡組是完全對稱, 而這對稱鏡組的中間點就是 Nodal Point
把這個點固定在中間, 旋轉時以這點為中心, 可以得到無視差 (parallax) 的影像
但這種機器昂貴而且笨重, 你不會想要扛著它出去拍照
隨著科技演進, 電腦性能越來越強, 現代鏡頭幾乎都非對稱, 而且可能有不止一個中點
如果在鏡頭前方移動一個點, 以直線移動, 檢視其投射到鏡頭中的路徑
有些鏡頭可以發現會有一個交叉的中間點, 可是如果是 180 度魚眼鏡頭, 這樣的點有無限多個
而就算從畫面方向看有交叉點, 它也不一定是一個點, 有時是一條直線, 是一條 "軸"
這樣還叫 "Nodal Point" 嗎? 不過該文也提一些有趣的看法, 這可以算是語文演進的流程
如果說到長頸鹿, 你會想到在非洲草原上奔跑的脖子很長的動物, 還是瀏覽器?
我的話是想到動物, 某家的產品我是拒絕使用的XD
如果嘗試花時間解釋這複雜的光學原理, 縮寫繼續沿用原先的 Nodal Point 不好嗎?
所以以下我也是用 "節點" 這詞來代表, 反正我也想不到更好的詞XD


如上圖左, 如果是一般的鏡頭通常有個節點
不管是點還是軸還是區域, 我們就當它是個點, 用藍色的點代表
節點上半為外面世界看到的範圍, 即是視野 (FOV) 範圍, 節點下半三角形為鏡頭到感測器範圍
真的鏡頭的路徑絕對不會是三角形, 但我們就簡化表示, 是示意圖
上圖右是 180 度魚眼的投射, 雖然這次我們玩的是魚眼, 但這範圍太大很難表示旋轉時狀況
所以接著我還是以上圖左的一般鏡頭來說明
題外話, 上圖右那還真像大規模毀滅性武器的 "成果", 聽說最近金胖想把它種去關島XD
嗶嗶 Nuclear launch detected! 來囉!快遞來囉! 10 倍音速重返大氣層!


如上圖左, 假設用一般鏡頭, 有 A, B 兩點在視野範圍的最右邊, 它們兩點重疊
接著我們旋轉相機, 如果我們的旋轉中心剛好在節點上, 那麼當我們把相機往右轉
轉到如上圖右, 我們應該可以看到 A, B 兩點還是維持重疊的狀態

如果我們只是隨便找個三腳架然後把相機架起來, 以下為一個安裝範例


那麼我們節點和三腳架旋轉中心的關係應該會像這樣:

黃色為旋轉中心, 如果這樣旋轉, 依照上面節點的旋轉範例, 應該會變這樣:

如上圖左, 用一般鏡頭裝三腳架, 有 A, B 兩點在視野範圍的最右邊重疊
旋轉後該兩點從視野中消失

如果你用以上兩種方法拍攝環景, 當以節點為中心旋轉時, 一張照片最右邊有兩點重疊
另一張照片最左邊有一樣的兩點重疊, 軟體看到了就可以順利的把這兩張圖接起來
可是第二種方法用三腳架旋轉, 一張圖有兩點重疊, 另一張卻沒有, 軟體自然是無從下手
若硬把它們接起來就會出現鬼影, 就是一張有兩點的左半邊, 另一張卻沒有右半邊

因此用戶會需要一個支架來達到目標, 有現成的, 只是...有點貴XD
Nodal Ninja 節點忍者, 好屌的名字XD
有多種版型, 入門款 199 鎂, 約 6 張小朋友...
所以我自己做了一個支架, 針對我的 A6000 設計
這個支架要能旋轉, 所以我會需要一個穩固可旋轉的底座
到處尋找, 在五金行找到這個:

手推車底下輪子的基座, 這個是用來載重還要能旋轉的, 這個絕對是耐操可用的
買回來後先切一塊木板上去

大概就是用這方法固定, 接著我開始拿游標卡尺到處夾
然後一邊動用腦內人體模擬(?)先畫下概略圖

接著用 3D 繪圖畫出來, 根據以往 3D 列印以及 CNC 經驗, 加上人體公差評估
這完全是憑感覺和經驗的XD 由於我的 3D 印表機已經拆解, 我上拍賣花錢找人代工
做出了這三個東西:

經過些微修整幾乎是準的, 只有用刀片削掉一點點, 這次的人體模擬相當成功, 一次到位

這是套在旋轉底座上的, 用來和腳架連接, 裡面放個 1/4" 螺帽

這樣就可以把這輪子基座固定到腳架上
接著是轉接架

把輪子基座抓輪子的部份轉接成抓相機的底座
它看起來有點變形, 那是因為列印時由下往上斜度太斜, 這是模型圖:

3D 列印不可能從半空中開始印, 所以要有個斜坡讓它堆上去, 於是就變成這樣
這個是在最後要送代工時才發現, 所以做了些妥協, 雖然有點變形但不影響使用
上圖模型中間橘色選取區是中空範圍, 這是 3D 列印才有辦法做出的封閉空間
可以節省材料, 用 3D 列印軟體 Slic3r 去看會像這樣

現在 Slic3r 可以表現列印的結果, 真是超強, 用那難讀的 perl 也能寫到這樣XD

最後是鏡頭固定架

看外型就知道是用來抓鏡頭的, 由於我們關心的是鏡頭的節點
所以抓的是鏡頭而不是相機機身, Google 網頁推薦的支架也是抓鏡頭
和節點忍者抓相機的策略不同, 但這也表示就只有一顆鏡頭可以支援
節點忍者則是什麼鏡頭配機身都能抓, 但我們一般用戶通常只會有一組裝備
所以做客製品還算划算

接著三個合體

這樣應該就知道各組件的功能了吧

接著把鏡頭固定架和轉接架組合, 中間用螺絲

一開始還找不到我常用的 M5 螺絲, 五金行可以找到的只有 40mm
我的規劃是 55mm, 還好後來有找到 3/16" 的螺絲, 長 60mm
只好再重買一隻 3/16" 的螺絲攻...所以用戶在設計這東西時請先備料......


鏡頭固定架底下攻牙, 這樣就可以旋轉 3/16" 螺絲來進行前後微調
3D 列印的塑膠表面有層次紋路, 那不好移動, 所以設計時有留 1mm 空間可以塞鋁條


鋁條安裝好後用 AB 膠黏在轉接架上
上圖右邊的旋轉底座後來發現有螺帽下塑膠有鎖裂現象
所以在螺帽四周填入 AB 膠強化固定, 這個有困難, 因為腳架底下的 1/4" 螺絲通常不長
因為相機的螺絲孔不深, 所以我沒法增加厚度來提高強度, 只好這樣妥協


完工, 由於轉接架固定點是對稱的, 所以可以反過來裝

打飛機(?)就用這角度XD 目前不知道這樣裝能幹麻XD


輪子基座中間有個空間, 剛好可以塞進一顆水平儀, 就黏了一顆進去
腳架我用這隻

這是單腳架, 鎂鋁合金版, 有碳纖維版, 但是我去店家測試, 碳纖維版雖然很輕但太有彈性
不容易維持中點, 店家也說通常拍環景和錄影的都是求穩固不考慮重量的!夭壽XD
只好扛這隻來用, 約 1.8 公斤...
單腳架的好處是拉高後底下腳架佔用空間少, 腳架不會出現在環景畫面下方
而且可以站到狹窄的高點取景, 不過這東西風吹了會倒...強烈建議隨時手抓著或是腳踩底座
在海邊拍時相機取下在旁邊檢視時沒注意就讓它給風吹倒, 在相機轉接座那裡留下傷痕
才買來一兩週就發生, 心痛!還好當時上面沒有相機或是雲台, 不然就全砸爛了

上面三個 3D 列印模型可下載:fe-holder.zip
不過這只能提供做參考, 除非能買到和我一模一樣的輪子底座
不然這模型直接拿去印是裝不起來的

支架完成後接著是校準, 使用牙籤校準法 Entrance Pupil Alignment
牙籤就相當於前面範例的 B 點, 把它和遠景重疊, 遠景即是 A 點
轉左邊對準後轉到右邊也要是對準的, 這樣就完成校準
不過那個是節點忍者抓機身的方案才會這麼麻煩, 我的抓鏡頭方案鏡頭中心已經在中線上
只需要調整前後, 然後這裡有人找出一些鏡頭的節點:The Nodal Point
Sigma 8mm f3.5 EX DG 的節點在金色環上方一點的地方
所以我只要轉螺絲讓金色環靠近水平儀的正上方即完成校準
不用試拍測試照片, 每次都是準的

到這裡硬體就準備好了, 我們可以拍四張照片, 每 90 度拍一張
拍攝時盡量維持旋轉底座水平, 除了和觀看的軟體有關外
若四周有高低起伏, 拍攝水平比較容易讓觀看的人感受到當地的情況
例如在斜坡上拍, 若和斜坡平行, 拍出來就像平地一樣
我認為這樣就失去環景重現當地的目的
由於是直立的 APS-C, 涵蓋範圍較窄, 據說全幅的可以只拍三張
我的裝備目前固定成要拍四張, 旋轉底座是正方形
我都用手捏轉接架底端, 然後手指感覺旋轉底座位置
這樣不用低頭去看底下也能知道有沒有轉 90 度, 這挺方便的
然而要拍其他旋轉角度的就很困難了, 因為沒有刻度


拍完四個方向, 得到四張 180 視角照片, 它們並不會自動自己接起來 (廢話XD)
接著就交由軟體處理, 我用的軟體是 AutoPano
這軟體不錯, 支援三個平台, 有 Linux 真是超棒, 而且有不錯的辨識能力
看在支援 Linux 的份上就買了, 99 歐元, 當時購買換算台幣 3600 上下
不過它不是 100% 能拼接成功, 遇到某些情況會失敗, 不過可以自己調整回來


這是國父紀念館內第一次拼接時的結果, 地毯沒接上, 屋頂柱子明顯斷開, 左邊二樓異常突起
還有建立關聯出錯, 當我輸入四張環繞共 360 度拍的照片, 正常應該每張照片剛好有兩張關聯
第一張左邊是第四張, 右邊是第二張, 第二張左邊是第一張, 右邊是第三張...以此類推
但是國父紀念館內四張其中有一張有建立三張關聯, 這錯誤應該和複雜的屋頂有關

以前唸書時曾聽到一些和影像識別有關的技術, 10 多年前影像識別就已經宣告做爛了
當時有聽到一個議題:影像截斷
例如一個人站在桌子後方, 如果只看單張影像, 由於人的輪廓被桌子分成兩半
電腦無法把這影像識別成一個人, 而是會當成上半下半各一個 "物體"
然後有一些研究議題像是怎麼把截斷的影像自動接起來
如果想要電腦識別這樣的影像是需要教育的, 搭配人工智慧, 也就是塞給它許多案例讓它記
可是對人類來說, 分辨這種影像是與生俱來的, 不需要教育的
後來我詢問做過影像識別的同事, 他說這些問題到現在依然無解, 他提出另一種的
例如把一堆點組成動物的圖像, 例如組成一隻馬, 人類一看就說這是馬
可是電腦......它只會識別出一堆點, 而不會自動群組化並賦予它輪廓上的意義
這都是人腦超強的地方, 都是我們與生俱來的常識, 不需要教育的
(其實也不是完全不用教育, 如何群組化可能和環境有關, 這和上面長頸鹿是相似的問題)
現在的影像識別只是繼續加上硬體加速, 以及和其他領域整合, 例如人工智慧
它識別的策略本質上沒有改變, 都是十多年前那幾套, 在天才出現之前可能不會有改變
最近還有新聞:不用駭進系統,其實在號誌貼上簡單的貼紙就能擾亂自動駕駛車了(!)
這或許是現代自動駕駛車要加裝一堆雷達的原因, 必須有更精準的方式了解環境
不可以只靠影像, 如果連那些大規模的公司都是這樣做
那應該就足以表示這領域絕對存在無解的議題
至少最近就有人試出一條缺失, 用貼紙就能干擾XD 不過我還是看好自駕車
雖然影像部份還有些問題, 但是靠雷達判斷的部份都差不多完善了, 它還是有相當的可靠度

另外除了電腦, 其他動物能力到哪我不清楚, 只知道我有一次有趣的經驗
我牽著腳踏車在公園裡走, 突然一隻狗從後面跟上來, 我繼續走我的, 然後觀察牠反應
牠先走到我右後方, 此時在牠視野中我的身體被腳踏車擋住一部分
然後牠不斷抬頭又低頭上下打量我, 接著又走到我左後方, 這時換成我身體擋住腳踏車一部分
牠還是一樣上下打量, 那表情好像看到鬼XD 然後又重複了幾次, 繞到我左邊再繞到右邊
最後小聲的吠了兩聲後離去, 當時我沒想太多, 只覺得這隻狗怎麼怪怪的XD
後來想起這研究, 說不定牠也陷入影像識別中截斷的問題?

扯了一堆, 再回來看這軟體XD 扯這些是因為我覺得這軟體似乎也有這限制
在下面的環景樣本中有修正後的國父紀念館內環景可以參考
為什麼會出錯, 我想是相似的屋頂, 以及大量柱子分割畫面
拼接軟體可能會從畫面邊緣去找相似點, 具體算法不清楚
這軟體沒開源, 就算開源我應該也看不懂, 沒有做過這類研究
但找相似點這行為肯定是有的, 它稱作控制點 (Control Point)
如果沒有出錯, 找到控制點後就會依據這些點去扭曲影像, 讓它們接起來
如果出錯了, 軟體提供界面可以手動加上控制點, 所以我加了這些

這裡原先軟體幾乎沒有找到控制點, 都是我手動加上
但我想可能不是沒找到, 而是發現有太多相似的地方不知道麼選
別說電腦, 當要我選, 我都還要上下觀察個幾次才搞清楚哪個點對哪個點
選的時候就特別選在截斷處, 例如柱子旁, 兩柱子交接的角
這種我覺得影像識別可能會失敗的地方, 還有像這裡:

然後再要軟體重新做最佳化, 然後就拼接成功

拼接後的影像可以用該公司另一套免費軟體播放:GoPro VR Player

可以看到窗戶都接的妥妥的, 線很直, 除了屋頂柱子有一點點錯開, 其他都是正確的
目前遇到出錯的幾乎都是這種的, 還有遇到鐵皮屋簷接不起來的
都是那種一堆線條, 不過在給軟體一些提示後都能正確接上, 還行

這類軟體有一套是開源免費的, 叫 Hugin
不過這套軟體我沒有接成功過, 怎麼接都失敗, 手動加上控制點也是
而 AutoPano 則是沒有失敗過XD 戶外風景一接就成功, 室內的加上提示後成功
後來又多做一些實驗才找到罩門
這兩套軟體都是用來接 Panorama photo 環景影像, 英文是同一個字
但是實際上這兩套最佳化的方向不同, AutoPano 專長是接 180 度魚眼影像
而 Hugin 則是強在接一般相機的影像
我在找到節點後就無聊試著用一般相機去拍, 然後餵給這兩套軟體
用這個:

A6000 配上餅乾變焦鏡, 用 16mm 拍, 做了簡單的節點校準
拍一圈 360 度要拍七張!

然後還拿了低價機種

WX500, 這是給我爸用的, 一樣拍七張


結果用一般相機送給 Hugin, 馬上成功, 它還知道繞了一圈在哪裡截止, 自動裁切
兩台相機拍的都一次就接成功, 不用重試或調整, 這兩台機器拍的樣本有放在下面環景樣本中
最下面上下有黑邊的, 以及特別長的那兩張就是
而同一組照片餵給 AutoPano 變這樣:

連續判斷兩次結果都是錯, 我沒有嘗試去修正, 因為看這結果已經很明顯了
是用途不同的兩套軟體

所以理論上節點抓到了, 不管什麼相機都能拍環景, 只是拍攝張數差很多
16mm 一圈七張, 還不包含近端地上和天空的, 加上這兩方向最少要拍 21 張才能得到環景, 夭壽!
但是如果真的拍完了, 這解析度會很驚人, 用來大尺寸投射會很好用
只是很明顯的一般家庭不會需要這種東西XD 我還是四張拍完就快閃吧XD

那這兩套軟體做出的東西不一樣嗎?
我嘗試把 A6000 拍出的上下加上黑邊, 加到和其他環景照一樣是 2:1 的尺寸
然後丟到 GoPro VR Player 去看

感覺就像一般環景一樣, 樓是直的, 橋也是直的, 只是上下多了沒拍到的黑色區域
這或許是這兩套軟體都說它是做環景影像用的原因, 詞也用同一個
就結果論並沒有錯, 但是中間走的路徑不一樣
一個是拿魚眼一下子全擷取, 搭配該廠賣的硬體甚至可以拍影片, 但解析度就相對較小
另一個是任何相機都可, 但是要有複雜腳架, 可以維持節點還要水平和上下都要拍
然後拼接成一張巨大解析度的環景
另外, Hugin 可以允許只接兩三張, 不一定要接成環景, 我會比較偏好稱它做 "全景"


以上環景大圖都放在這裡:環景樣本


到這裡我們已經得到一張拼接完成的影像, 不過有些時候就算拼接成功還是會有點小瑕疵
例如:

天空可能會有些小洞, 這種小問題其實用一般影像處理軟體就能簡單修正
而如果想調整亮度對比, 這類的用一般影像處理軟體會比較簡單
像上面那種小洞的把顏色複製後貼滿影像最上方, 即可得到:

雖然像○眼(?)但至少比黑黑的坑好吧?
不過我們要存檔前要注意一個問題, 這個和上傳網路空間有關:EXIF
這種環景處理軟體會在 EXIF 中留一些訊息, 許多網路相簿供應商會去看
看到了就會幫用戶改用環景檢視器去顯示, 如果這些訊息不見了就只會當一般影像
當然, 如果用戶的圖片只打算本地看就沒差, 只有需要上傳的用戶才需要關注這問題
解決方法是用 exiv2 工具, 這個 ubuntu 內建, 直接 apt-get 就有
例:

exiv2 ex XXX.jpg

這樣會把該檔案的 EXIF 抽出放到 XXX.exv
接著我們就可以開始影像處理, 用像是 gimp 的軟體編輯, 然後存檔覆蓋
覆蓋後執行:

exiv2 rm XXX.jpg

這會把該檔案的 EXIF 全部清除, 最後下這行:

exiv2 in XXX.jpg

這會把剛才存下的 EXIF 檔案 XXX.exv 中的 EXIF 填回圖檔中
這樣就可以維持 EXIF 不變, 上傳網路相簿如果有支援環景就會改為環景檢視

最後, 觀察了上面三腳架的旋轉路徑, 如然想到

三腳架方案節點移動方向和鏡頭指的方向有夾角, 整個看起來嚴重偏移
那如果我改成像上圖那樣呢? 節點不在旋轉中心
但是如果把旋轉中心畫一條線到節點, 而我鏡頭方向和這條線相同, 這樣可以嗎?
沒錯, 如果 A, B 點在畫面邊緣時, 它一樣是會在另一畫面消失
可是如果物體都比較遠, 總覺的好像不會差太多? 所以實驗看看
我來到熟悉的某處實驗XD
這裡有個圓柱, 我先在上方用標準方式拍攝, 也就是文章前面做的架子

拍出來:

底下是圓柱, 被展開在畫面底下成一直線, 這樣是正常的表現, 畫面看起來沒有問題

接著我把機器放到這裡:

然後沿著圓柱拍四張, 每張方向都背對圓柱, 反方向指向圓柱圓心
節點離旋轉中心有約一公尺的距離
結果:

圓柱從畫面上消失, 但是畫面也接的歪七扭八, 還有一棵樹被砍了XD

接著我再回到圓柱上, 但是改成用現成的轉垂直架

然後調整鏡頭位置使的從腳架正面看鏡頭中心對到旋轉中心
也就是節點離旋轉中心有點距離, 大約幾公分而已, 拍兩組



結果發現近端確實有許多變形, 附近的柱子地一張有斷開, 第二張則是有柱子變細
但遠一點的影像倒是正常, 畫面也還接得起來

最後, 再偷懶, 改成只拍三張, 對準基準為腳架的三隻腳

出現紫大嬸的空間開口XD 表示畫面拼接需要的影像不夠
這如果換全幅的圓形影像應該是接得起來

上面這幾張環景大圖都放在這裡:環景實驗


大概就這樣, 超麻煩的吧?
而且因為是分四張拍攝, 人多的地方很容易產生鬼影
當你拍第一張時他在畫面內, 拍第四張他又剛好走過去, 就會在畫面中出現兩次
AutoPano 有自動除鬼影的功能, 蠻聰明的, 但是太嚴重的鬼影也是沒辦法
全景相機就沒有這問題, 因為是同時拍下
觀察那些全景相機, 它們有多顆鏡頭, 如果節點在鏡頭附近
它們其實都是和我上面最後一個實驗是類似的配置
所以我會認為若鏡頭方向和中心連線一樣應該也要能拍, 可能是手動調整有誤差吧

用這超麻煩方案唯一優勢就是可以後製, 不是指用 gimp 調整影像那種後製
而是 AutoPano 在偵測完影像要輸出前可以讓用戶調整預設畫面角度以及中心位置
如果是全景相機用手抓著拍往往不會是水平, 畫面會嚴重傾斜
但因為沒有後製空間, 只能直接上傳相簿, 而 Google 相簿預設會選中間顯示
而且假設旋轉畫面時是水平, 傾斜的畫面沿水平旋轉就會讓觀看的人暈頭轉向
這是我願意使用這麻煩方案的原因之一
我可以拍完後想辦法調回水平, 然後讓主題放在畫面中間
還有另外一個也很重要的原因, 因為分四次拍
我永遠在相機後方不會出現在畫面上, 這很重要XD
肥宅跟人家搞什麼自拍啊, 看風景就好啦!XD



2017.08.24 更新:
三個月前的新聞
Google 推 Street View Ready 全景相機認證,簡單挑選 360 相機
裡面提到的認證:
Develop Street View certified products 
行動裝置和車裝的都要求要有 IMU 紀錄當時方向, 用來校準用的?
新聞裡面有一台通過認證的 iris360 Pro
解析度達到 13800 x 6900, 售價 2899 鎂......果然要方便就要花錢
不過重量不友善, 1.9 公斤不含腳架, 我的相機加旋轉架約 1.3 公斤
我的方案解析度若拼接很成功的話約 13000 x 6500 附近, 視拼接狀況而定
那機器自帶 27EV 高動態範圍, 這個我的機器可能要拍好幾張才能辦到
AutoPano 好像可以吞 HDR 影像但我沒驗過, 目前我這樣還夠用不需 HDR
而我的機器含軟體總價約它的一半, 但可換鏡頭做其他用途, 我還是拼接加減用...
該公司還有 VR 產品, 除了拍照外還要掃描環境建立模型, 真變態XD

1 則留言:

注意:只有此網誌的成員可以留言。