本文介紹基於3DSOM軟體,實現側影輪廓方法的空間三維模型重建。
從本文開始,我們將基於空間三維建模方面的相關原理、基本操作與結果分析等,透過幾篇部落格,對其加以儘可能詳細的介紹與實戰。
那麼我們首先從側影輪廓建模方法開始。本文我們將基於3D Software Object Modeler(3DSOM)這一軟體,對上述方法加以完整的操作,並對結果加以分析。
本文所用到的資料包括馬鈴薯多角度圖片若干與聖誕老人蠟燭多角度圖片若干。其中,馬鈴薯圖片資料並不是我自己拍攝的,而是他人拍攝後發給我的(也因此遺憾這一影像資料集不能一併提供給大家);為方便大家理解三維建模的基本操作,在對馬鈴薯加以建模後,在本文的2.2部分,我們重新從拍照這一基本環節開始,選取一個聖誕老人蠟燭這一新的物件,完整地走一遍三維建模流程,從而讓整個操作方法更加明瞭。
1 背景知識
透過建立正確模型對不同事物各種屬性加以描述和表現,是現代科學探索事物本身發展、執行規律的一個普遍而重要方法[1]。隨著計算機軟、硬體技術快速發展,三維立體建模作為一種於數字空間中對研究物件形狀、位置、運動等屬性加以再現的技術,逐漸在各領域研究中發揮重要作用。
本文第一部分——原理部分,由作物三維資訊獲取方法這一角度展開,並著重綜合探討側影輪廓建模方法原理及其操作步驟。
1.1 三維資訊獲取方法
在接觸方式角度,作物三維形態資訊的獲取可分為接觸式(Contact-)方法與非接觸式(Non-contact-)方法。依據相關文獻[2],對上述兩種三維資訊獲取方法加以討論。
接觸式方法依據採集過程不同,進一步可分為人工採集方法與三維數字化儀採集方法。其中,人工採集方法主要用於傳統作物幾何形態測量,藉助捲尺、量角器等工具,以手工和肉眼觀測為主。其觀測方法的不精確導致研究效率低,所得結果受主觀因素影響較大。目前,人工採集方法使用較少,主要作為一種補充測量手段。
三維數字化儀採集主要指透過感測器記錄、跟蹤探頭於三維空間中的位置,從而實現目標物數字化。其常用儀器包括座標測量機(Coordinate Measuring Machine,CMM)、機械臂式三維掃描器與電磁式三維數字化儀等。三維數字化儀採集較之人工採集,效率相對有所提高,但其仍具有操作複雜、存取速度較慢與無法獲取目標物表面紋理(探頭僅僅可獲得位置資訊)等問題。因此,其在三維建模領域亦未發揮主要作用。
非接觸式方法則隨著計算機技術的飛速發展而產生。其依據測量原理不同,可進一步分為主動式方法與被動式方法。其中,主動式方法藉助儀器主動發出的可控輻射(鐳射、超聲波等,由這點看與主動遙感、被動遙感的定義有近似之處),依據目標物透射或反射特性,獲取其三維空間特徵。依據輻射源或計算原理,主動式方法可繼續分為脈衝測距法、結構光與編碼光法與CT(Computed Tomography,電子計算機斷層掃描)和MRI(Magnetic Resonance Imaging,核磁共振成像)法。
被動式方法則無需主動面向目標物發射輻射,而僅收集目標物所反射的太陽輻射。其所需儀器相對較為簡單,往往直接由目標物體對應影像(如本文中側影輪廓方法所需物體的多角度影像)提取資訊,以建立空間三維模型。依據提取資訊基於的資訊源,被動式方法可進一步分為單幅影像法、立體視覺法、基於側影輪廓法、基於運動影像法與逐層切片恢復法等。
上述各類方法或所需儀器從屬關係如圖1所示。
圖1 作物三維資訊獲取方法
1.2 側影輪廓方法原理及其流程
前述各類作物三維形態資訊獲取方法中,側影輪廓三維建模方法由於相對簡便易行,運算速度快,穩定性高[2],因此廣泛應用於農業等領域。本文便採用這一資訊獲取方法。將此方法原理與具體操作流程結合,探討如下。
側影輪廓為物體投影在成像平面上影像的外形線條[3],是理解物體幾何形狀的一條重要線索[4]。當以透視投影方式由多個視角觀察某一空間目標物件時, 於各視角對應畫面中均可得到一條該物體側影輪廓線;此處側影輪廓線與對應透視投影中心共同確定三維空間中一個一般形狀的錐體,而所觀察物件物體便位於這一立體錐體內部。以此類推,不斷由不同方向增加對目標物體的觀測視角數量,便可使得各對應錐體的外形不斷逼近物件物體表面,從而對目標物體外形特徵加以空間三維的視覺化。上述這一由錐體的交構成的空間包絡被稱作物體的可見外殼(Visual Hull)[5]。
為獲取更加逼近實際物體表面的可見外殼,使得三維建模效果更加準確,往往需要由多種方向入手,獲取大量視角對應影像;這即為側影輪廓方法的“多角度影像獲取”步驟。該步驟為本方法基礎資料來源,後期對目標物體進行三維建模所需資訊均來源於上述多角度影像。而多角度影像在拍攝時需要透過旋轉物體或旋轉攝像機實現不同方位畫面的採集,從而改變目標物體對應視角的方向與俯仰角度;而後期進行三維建模時需要將不同方向視角的影像建立聯絡並結合。因此,各影像之間空間位置的關係顯得尤為重要。為實現這一重要步驟,需要對所獲取多角度影像進行“相機定標”,從而確定各影像對應相機拍攝方位及其內部相關引數[3]。
相機定標具有多種實現方法。鄭國威等[6]利用平面鏡反射性質等理論,提出一種基於平面鏡的相機內參標定方法;曹煜等[3]對平面鏡定標加以改進,提出一種基於成角度平面鏡裝置的影像三維重建方法,透過幾何方法實現相機標定;使用已標定的固定相機或標記點等標定裝置進行輔助標定同樣是一種常用的相機定標方法[7]。本文即採取標定裝置的輔助相機定標方法,利用定標墊(Calibration Target)對各多角度影像拍攝方位加以確定[8]。定標墊如圖2所示。
圖2 3D S.O.M.軟體定標墊
定標墊由15組點集合構成,每個點集合包含四個點,呈放射狀排布;點分為大點和小點,不同大小分別代表不同得分;各點集合對應大點或小點個數均不一致,亦即各點集合對應得分不同,得分不同進而可以確定不同的點集合分佈情況。3D S.O.M.軟體將依據各影像中不同點集合的位置,從而確定對應影像的拍攝方位,並進一步將若干多角度影像位置關係加以求解。相機定標操作在影像匯入3D S.O.M.軟體時自動加以完成。
此外,各多角度影像還需進行噪聲去除、畸變校正等基本影像操作的預處理過程。
結合前述錐體輪廓生成原理,3D S.O.M.軟體透過“輪廓逼近、頂點分析、三角劃分”(SAVANT)方法對模型加以建立。首先對所匯入的若干多角度影像加以掩飾(Mask)處理,選擇各圖片中目標物體所處位置,並將與目標物體無關的背景、定標墊區域等加以識別;依據各多角度影像目標物體部分資訊,獲取若干多邊形近似輪廓,併為每一個近似輪廓加以編號;隨後由多邊形輪廓計算得到三個頂點,並記錄各頂點資訊;最後,利用三角格網,將完整表面進行劃分,從而勾勒出表面細節[8]。上述即為側影輪廓方法的“輪廓提取”與“頂點計算及可視外殼生成”步驟的實現。至此,生成了目標物體的外形輪廓模型,但並未包含其具體外表紋理資訊。其中,以馬鈴薯為例,所得三角格網體積模型如圖3所示;所得外表面如圖4所示。
此外,上述步驟中值得一提的是,在由三角格網生成初始表面(體積)後,還需對其加以體積最佳化、細化表面等進一步最佳化操作,方可得到最終的目標物體表面形態模型。
圖3 馬鈴薯三角格網外表面
圖4 馬鈴薯未紋理對映外表面
最終,還需依據上述所得三維表面輪廓模型對應方位資訊特點,結合不同多角度影像方位資訊,為三維模型表面進行紋理對映,從而使得模型具有更多視覺化特徵,更好描述實際物體特點。如圖5所示。
圖 5 馬鈴薯紋理對映外表面
在執行自動紋理對映後,可能存在部分目標物體表面區域仍未有紋理或紋理出現明顯跳躍等現象;這多為多角度影像拍攝時因部分角度未拍攝而出現相關資訊丟失導致。針對這一問題,可藉助對應影像,面向相關紋理資訊丟失方向進行紋理手動匹配,對細節部分的紋理資訊加以補充。
將側影輪廓方法具體操作流程整合,如圖6所示。
圖 6 側影輪廓方法流程
2 三維模型製作
2.1 馬鈴薯三維模型製作
本部分以馬鈴薯為例,展示利用3D S.O.M.軟體,藉助側影輪廓方法制作三維模型的具體流程。同時,對本文操作過程中出現或值得思考的問題、存在的不足等探討附於本文第三部分。
2.1.1 多角度影像匯入
在3D S.O.M.軟體中,單擊“File”→“New Project”,在彈出的檔案選擇視窗中選擇馬鈴薯多角度影像,並選擇“開啟”。若需開啟已有模型檔案,可在前述“File”中選擇“Open”。
2.1.2 影像掩飾
影像掩飾可透過兩種方法進行。一是藉助“Processing”選單欄中“Mask All Images”模組加以批次掩飾,二是直接進入單張影像“Edit Masks”介面,藉助“Auto Mask”模組中按鈕加以單張掩飾。二者在具體掩飾效果方面並無差異,而若選擇後者,則會自動開啟掩飾閾值控制條。下圖左側為第一種掩飾方法執行後介面,右側為第二種掩飾方法執行後介面。
掩飾時需要注意,不要對目標物體頂部與底部影像加以處理,以防止此類影像掩飾後與其他正常掩飾影像混雜並參與建模,從而導致結果錯誤或模型殘缺等情況。
操作過程中,為防止軟體崩潰帶來的不便,可以及時對所做成果加以儲存。儲存預設格式為“.som”檔案,該檔案包含多角度影像及其掩飾、建模等全部資訊。
在對自動掩飾結果進行完善過程中,可分別藉助“Round Brush”與“Outline curve”對錯分割槽域加以修改。在個人實際操作中發現,兩種修改工具各有其利與弊——“Round Brush”方法對一些零散、細碎的錯分小區域的修改效率較高,但相對較為容易觸碰到無錯區域(即將土豆表面錯誤修改為非土豆表面);而針對後者,“Outline curve”方法透過圈畫區域的方式糾錯,對較大錯分割槽域的修改較為方便,但圈畫過程自身整體較為耗時,對於零星存在的錯分割槽域而言修改效率不如前者。下圖所示分別為“Round Brush”修改方法與“Outline curve”修改方法。
分別對全部多角度影像(頂部與底部影像除外)進行同樣操作,完成所有掩飾工作。
2.1.3 表面生成與最佳化
在3D S.O.M.軟體中,單擊“Processing”→“Generate Surface”,在彈出的選項視窗中選擇第一項“線框生成”。該介面共有三個選項,其次分別為“表面最佳化”與“細分表面配置”;在生成表面過程中,需要依次執行上述三個選項所對應步驟。
其中,在生成原始外表面而未對其加以最佳化時,可以看到所得馬鈴薯表面具有明顯尖銳部分,如同“刀痕”;而在對錶面進行最佳化後,則可以觀察到對應尖銳區域明顯緩和,突出部位被削弱。由此可以看出最佳化表面步驟對所得模型加以了適當平滑處理。
下圖分別展示出最佳化前馬鈴薯表面兩處尖銳部分(前兩圖)及其最佳化後的結果(後兩圖)。
此外,在執行表面生成或最佳化步驟時,可以明顯看到3D S.O.M.軟體在操作時檢視會隨之發生及時的改變,方便使用者實時根據建模過程中物體表面所發生的變化加以調整(如暫停或停止程式執行)。這一特點與我專業前期接觸到的許多相關軟體(ArcMap、ENVI等)有所不同。
下圖即為執行表面最佳化時截圖;執行時可以明顯看到原本尖銳的區域轉為平滑。
最終所得最佳化後的表面生成結果如下所示。可以看到,所得最終結果較之原始馬鈴薯外形十分接近,且其上尖銳部分得到充分平滑,視覺方面亦顯得尤為逼真。
2.1.4 紋理對映
紋理對映即將原有目標物體表面顏色、形狀分佈等特點對映至前述步驟所得表面模型。
在3D S.O.M.軟體中,單擊“Processing”→“Generate Texture Maps”,配置相關引數後即可開始自動紋理對映。可以看到,在紋理對映操作執行過程中,馬鈴薯模型表面同樣實時發生著變化。其變化以區域為單元,每次紋理對映或調整往往是區域性整體發生變化(如馬鈴薯某一方向表面瞬間整體出現紋理)。由這一變化規律或許可以推測,3D S.O.M.軟體的紋理對映同樣是基於多角度影像方位資訊與前述所得模型已有位置資訊,將某一方向拍攝圖片的紋理對映至該方向對應表面模型位置。另一方面,隨後的紋理手動匹配操作同樣可以證明這一可能性。
紋理自動對映結束後,得到帶有表面紋理資訊的馬鈴薯空間三維模型;但同時,由於受到拍攝角度等影響,馬鈴薯紋理在其頂部與底部具有一定殘缺或突變等,分別如下圖所示。
顯然,需要對上述紋理錯誤加以解決。而如前所述,多角度影像中頂部拍攝與底部拍攝對應圖片均未參與建模;其作用之一即為為自動生成紋理後的模型表面加以細節區域或遮擋區域的紋理最佳化。
選中頂部或底部圖片,右鍵選擇“Align Images”選項,即可將此幅影像與所得模型同時顯示於視窗中。當圖片中馬鈴薯與模型馬鈴薯在位置、角度等方面均一致時,即可確定自動紋理對映操作。
同時,自動紋理對映模組具有許多操作選項。關於這些操作選項的嘗試與結果對比,附於本文第三部分。
操作結束,分別檢視馬鈴薯模型頂部與底部紋理情況,可以看到其原本突兀的殘缺或突變均得以解決,整體效果良好。
2.1.5 模型檢查
透過前述步驟,成功獲得具有表面紋理特徵的馬鈴薯空間三維模型。此時,還可對模型加以進一步檢查,確定其表面是否具有明顯體積錯誤或紋理殘缺等問題。
在檢查過程中,發現個人所得結果在馬鈴薯尖頭位置處存在一塊殘缺。找到對應角度的影像,進行手動紋理匹配。所得結果雖有一定改善,但這一殘缺依然存在。個人認為這一問題可能是由於掩飾過程中個別區域過掩飾導致的。
2.1.6 模型定性描述
結合所得模型,嘗試對其加以一定定性描述。
外形方面,本文所得模型呈現出較為細長的橢圓形,整體較為規則(具體形狀會隨著模型觀察角度發生一定變化);橢圓長軸兩端所對應位置呈現出一端較粗、一端較細的分佈特徵,如下圖所示。上述特點與市面上常見馬鈴薯十分接近。
表面紋理特徵方面,所得模型整體顏色為土黃色,未觀察到青色、微綠色等不健康顏色,由這一角度表明其較為新鮮,可食用。其中一面多數區域顏色較淺(但亦有部分顏色較深的小區域),另一面相對則較深;表面分佈有較多黑斑,多數黑斑面積較小,但亦有個別面積較大黑斑。長期潮溼土壤掩埋、薯類重茬導致的晚疫病等均可能造成馬鈴薯黑斑,屬於正常現象;而本模型對應馬鈴薯黑斑整體情況較好,但其小面積黑斑數量整體偏多,若食用還需加以注意。此外,由表面紋理、平滑等角度觀之,可以看到馬鈴薯在拍攝多角度影像前經過一定清洗,並無土壤顆粒等雜物。
下圖即為此馬鈴薯表面整體顏色偏暗、黑斑較多區域。
2.1.7 模型定量描述
藉助尺子工具對馬鈴薯模型尺寸加以定量描述。
在3D S.O.M.軟體中,單擊“Model Tools”→“Measure Model”,即可透過滑鼠選擇模型中待測量點,並自動求出其對應距離。
此處需要注意的是,軟體自動距離測量依賴於所選用定標墊的大小。由於此馬鈴薯多角度影像並不是我自己拍攝的,因此我也暫未無法獲取其拍攝時對應定標墊半徑大小,因此對於馬鈴薯模型的測量並未更改其單位長度。
測量得到,在預設單位距離條件下,這一馬鈴薯空間三維模型的長度(對應橢圓形的長軸)為78.71mm,寬度(對應橢圓形的短軸)為37.41mm。當然,此處未確定單位距離的定量數值並不具有實際意義。
在接下來的2.2部分,對個人自選物件進行空間三維建模後,所測定尺寸資料均已進行單位長度修改,具有實際意義。
2.2 聖誕老人蠟燭三維模型製作
本部分以第二個範例——聖誕老人蠟燭為例,展示利用3D S.O.M.軟體,藉助側影輪廓方法制作三維模型的全部具體流程。同時,對操作過程中出現的問題、存在的不足等探討附於本文第三部分。
另一方面,由於在這一聖誕老人蠟燭模型建立前,已先透過馬鈴薯對模型製作、軟體使用等加以較為詳細的介紹,因此本部分內容較之前者描述相對簡潔明瞭。
2.2.1 多角度影像獲取與匯入
藉助側影輪廓方法建模時,其對物體的外形特徵、拍攝光照與角度等具有一定的要求。在確定利用聖誕老人蠟燭進行空間三維建模前,曾分別多次嘗試不同物體(包括不同顏色、不同外形、不同大小等)、不同拍攝環境(包括臨近視窗、遠離視窗等)與不同光照條件(包括純日照、檯燈光源、手電筒光源等)等圖片的建模,並最終依據所得拍攝影像效果、影像掩飾效果等確定選用聖誕老人蠟燭所對應多角度影像進行後續操作。
其中,在選擇目標物體、選擇拍攝環境與實際拍攝過程中,具有較多需要注意之處。如在目標物體選擇上,需要注意物體不要過於細微或複雜,不具有或較少具有透明部分,且不可以過大導致遮擋大部分定標墊點集合資訊;在拍攝環境選取上,需注意背景(由於在家中完成本文,暫時未找到類似幕布的背景)不可過於繁雜,尤其需要與目標物體顏色具有較強區分度,且朝向目標物體的光線應當充足;在拍攝過程中,務必控制目標物體與定標墊之間位置不發生相對移動,且圖片需要儘可能多地包含定標墊點集合。
聖誕老人蠟燭的多角度影像拍攝完畢後,將其匯入軟體,如下圖(其中僅列出部分影像)。
下圖即為部分聖誕老人蠟燭對應影像。
2.2.2 影像掩飾
依據本文2.1部分所示方法,對所匯入的聖誕老人蠟燭多角度影像進行影像掩飾。
或許是由於家中影像拍攝效果不如實驗室專業儀器拍攝效果,個人自選物件的多角度影像自動掩飾效果較之前述馬鈴薯等作物較差,影像中往往具有較大面積區域需要透過“Round Brush”與“Outline curve”工具加以處理。其中,一副自動掩飾效果相對較好的影像如下。
2.2.3 表面生成與最佳化
影像掩飾完畢後,運用前述方法對聖誕老人蠟燭影像分別進行線框生成、表面最佳化與細分表面配置。
考慮到本次自選物件的影像拍攝與掩飾效果較之前述馬鈴薯略差,因此在執行表面生成與最佳化步驟時亦曾擔心所得效果可能不理想。而隨著程式執行,可以看到聖誕老人的模型逐步顯現。
下圖為初始表面生成所得結果。
下圖為表面生成並最佳化後所得結果。
下圖為表面生成、最佳化並細分後所得結果。
可以看到,上述初始表面已具有一定聖誕老人形態,但其表面尖銳處相對較多;最佳化後將一些明顯的尖銳或突變部分加以消除,但其依然存在一定數量的尖銳地帶;最終細分結果則完全將模型外表面的不合理溝壑加以平滑,從而進一步加深了聖誕老人的原有形態。
2.2.4 紋理對映
依據前述方法,由多角度影像(包括頂部與底部影像)對聖誕老人蠟燭模型進行紋理對映。所得結果如下圖(其中將軟體View Model的背景顏色修改為藍紫色)。
2.2.5 模型定性描述
依據所得模型最終結果,對其加以定性描述。
在顏色方面,可以看到模型顏色十分鮮豔,其紅色外套、綠色手套、青色禮品袋、黃色臉頰與皮帶扣,以及白色鬍鬚與頭髮、黑色皮帶與皮鞋等都表現得十分清晰。同時可以注意到,聖誕老人外形反光程度較為明顯。究其原因,一是因為原始物件為蠟燭,自身原本反光較為明顯;二是由於在拍攝時個人開啟了手電筒作為光源,從而在照片中出現反光區域。而與此同時,在聖誕老人身體部位的側方與後方,部分割槽域出現顆粒狀、不均勻的顏色分佈趨勢;這一問題一方面是由於該物件原本顏色分佈就有不均勻情況,另一方面猜測亦與拍攝時光照條件有關。
在外形方面,可以看到包括臉頰、鬍鬚波動、衣襬在內的細節都被清晰刻畫出。但同樣在其身側(右側臂下,如下圖)出現一定模糊部分。針對這一模糊情況,個人認為是由於其位於胳膊下方,在多角度影像中並未拍攝到具體資訊;而底部影像則由於其腳掌較大,導致遮擋視線,同樣不可以獲取到聖誕老人臂下的資訊。
2.2.6 模型定量描述
此處同樣藉助尺子工具對聖誕老人模型加以定量描述。
如前所述,在對模型進行測量時,需要首先明確所用定標墊的單位長度。透過測量,獲知我在拍攝聖誕老人影像時對應定標墊半徑長度為83.2mm,因此先將這一資料匯入軟體後進行測量。
經過測量,可知聖誕老人蠟燭空間三維模型高(由頂部蠟燭芯至底部皮鞋)為82.07mm,寬(由左手禮品袋至右手)為52.81mm,厚(由前胸位置至後背位置)為41.07mm。
3 問題與思考
前述操作部分已列舉部分實踐過程中自己的思考與理解,本部分則對前述未提及的問題加以探討。
3.1 底部圖片位置移動問題
如前所述,多角度影像在拍攝時,目標物體與定標墊之間不允許出現相對移動。而若需對物體底部加以拍攝,其往往需要改變物體位置(如將馬鈴薯原本朝下一面翻轉至朝上、將聖誕老人蠟燭倒置等)。這似乎看上去不滿足相對位置不移動的要求。
針對這一問題,查閱相關資料可知,頂部與底部影像並不屬於“多角度影像”範疇,因此相對位置這一限定對其而言並無要求。此外,進一步思考還可以發現,在利用頂部與底部圖片進行紋理手動匹配時,我們需要手動調整影像中目標物體與已有模型的相對位置——這一步在一些角度上可以認為是透過“人工”的方式進行了頂部或底部影像的“定標”;而之所以要求前述多角度影像相對位置不變正是由於軟體需要藉助其與定標墊的位置關係加以自動進行定標。因此,便可以解釋底部圖片(包括頂部圖片)無需規定相對位置不變的原因。亦正因如此,在發現聖誕老人蠟燭無法自主倒立後,我嘗試用手協助其自主倒立,且軟體並未報錯。
3.2 頂部與底部圖片納入建模問題
在使用馬鈴薯進行空間三維建模時,我嘗試不剔除頂部與底部圖片,而是將其納入建模圖片範圍;原本希望觀察這種操作可能會帶來何種錯誤結果,但發現軟體並未報錯,且生成的模型無異常。
針對這一問題,目前個人認為,這是由於在掩飾過程中,我並未直接選擇所有影像的批次掩飾,而是對其它角度的影像分別加以掩飾——即最終參與建模的影像分別為經過掩飾的多角度影像與未經過掩飾的頂部與底部影像。而建模時軟體可能直接不考慮未掩飾的頂部與底部影像(或軟體亦考慮頂部與底部影像,但由於其未經過掩飾,使得程式無法由這些圖片中獲取有用的資訊),從而進一步得到了無錯誤的建模結果。
3.3 閾值對掩飾效果影響問題
在調整掩飾閾值控制條時發現,有些情況下閾值大小與掩飾效果似乎並無絕對關係。例如,在實踐中,往往應當掩飾閾值控制條越大,過掩飾的可能性即越大(即目標物體被當作非目標物體的可能性越大),反之則反;而在一副馬鈴薯影像中發現,增大控制條反而可以得到較好的馬鈴薯影像掩飾結果,調小閾值控制條則使得馬鈴薯被過掩飾,僅剩餘支撐架。如下所示,左圖對應較大閾值控制條,右圖為較小閾值控制條。
針對這一問題,目前暫未完全清楚;但個人認為是由於演算法、閾值數值與對應這幅馬鈴薯影像畫素分佈特徵綜合導致的。
3.4 欠掩飾與過掩飾熱點區域問題
對若干多角度影像執行自動掩飾,往往會出現欠掩飾與過掩飾現象。操作中發現,出現這類問題的區域往往是距離目標物件較近、與目標物件顏色較類似的區域,如下所示。
由此可知,3D S.O.M.軟體的掩飾演算法應當是藉助於臨近像元之間的畫素差異及其關係等加以實現的。
3.5 紋理手動匹配配置問題
本文多次運用紋理手動匹配操作。在匹配前,需要調整對應影像與所建立模型之間的位置關係,這一步驟對應了軟體中較多選項或配置。嘗試對這些選項加以嘗試。
首先,在介面中存在“Guess Orientation”選項。結合其英文解釋與實際操作情況,個人判斷這一選項是對影像與模型之間最有可能的位置關係加以遍歷,並儲存最為接近的位置關係,從而方便使用者選擇二者最匹配的空間位置。而在影像與模型位置相差較大時這一選項不可選。如下圖。
而在二者位置相對較為吻合時,這一選項可選。如下圖。
其次,這一步驟中還包括“Optimise Alignment”選項。同樣結合英文說明與操作實際情況,個人認為這一選項是為了方便使用者在將影像與模型結合後,依據影像對模型的幾何形狀加以完善。其所對應的三個選項可分別供使用者選擇更準確的幾何物件(用以手動匹配紋理的影像更準確、已有的模型更準確、二者一樣準確),並在後期執行操作時依據使用者的選擇加以適當調整。
如下圖,可以看出影像中馬鈴薯的輪廓對原有馬鈴薯的幾何表示優於已有模型的表達,因此選用第一個選項;則後續紋理匹配過程中若遇到問題,可能將優先以影像中的幾何輪廓為準。
而這一選項下方的“Start”,則應為自動判斷影像與模型幾何孰優孰劣的按鈕。如下圖,影像與模型幾乎嚴絲合縫;其執行“Start”後程式自動選中了“the same”選項。
此外,在配置完畢後,所彈出的視窗顯示可進行的操作不單單是紋理匹配,還可以同時對幾何表面加以完善,如下圖所示。這或許可以進一步表明上述“Optimise Alignment”選項對模型的最佳化意義。
3.6 多角度影像橫、豎狀態問題
在本文實踐過程中發現,由於藉助手機拍攝多角度影像,部分影像可能會出現尺寸與其他圖片不符合的情況,尤其是影像的橫、豎狀態不一致這一問題較為容易出現。
先後嘗試修改照片屬性、利用Windows照片應用編輯等操作均無果。隨後發現,若在一個從未出現過異常尺寸影像的Project中,選擇任意影像並替換,可以使得替換影像符合該Project原有尺寸,如下圖。
將這幅原本橫向的圖片替換為一幅原本為豎向的影像“test.jpg”,可以看到進入Project的“test.jpg”自動變為橫向。
而若Project在建立後出現過異常尺寸影像,則該方法無效。如下圖,其中已含有豎向影像(打叉的三幅圖),則無論怎樣替換,進入的影像均不再自動調整為橫向。
3.7 模型底部凸起問題
在製作聖誕老人蠟燭模型完畢後,發現所得模型下部(聖誕老人腳部)具有略微凸出部分,如下圖紅線內部。
個人認為,導致這一現象的原因是由於在拍攝多角度影像過程中,對其身體下側角度的拍攝不夠充分,從而軟體對聖誕老人底部的建模更多是依據其側身角度的影像加以完成,從而在底部出現一定偏差。
針對這一問題,目前發現兩種解決方法。首先可以藉助“Alignment”,直接依據其側身影像手動對模型表面加以修改(如本文3.5部分);其次可以透過“Edit Geometry”模組“Move clip plane”與“Clip model”相結合的方式加以底部凸出部分裁剪。
首先,針對上述第一種解決方法,個人嘗試後發現利用聖誕老人蠟燭的側身影像對模型表面加以調節後,其建模效果似乎確實有所改變,但這一效果非常不明顯——甚至懷疑其有所改變可能只是自己的心理作用導致;推測這一結果同樣是由於我的拍攝照片整體角度過高(俯角偏大)導致的。因此隨後嘗試利用上述第二種解決方法。但發現,這一解決方法較之第一種,確實可以明顯實現模型底部凸出部分的裁剪(如下圖);但由於裁剪操作執行後需利用“Clip model”功能將裁剪應用至模型,而點選“Clip model”後其表面紋理將被自動抹去(若不點選“Clip model”,會出現如下下圖所示情況),因此需要重新生成紋理;而在重新生成紋理的過程中,我的軟體總是會在操作執行5%左右時停止片刻,並隨後強制退出。儘管經過多次嘗試,而這一紋理對映時強制退出的錯誤均未解決。
除上述操作之外,目前自己並未找到針對模型底部凸出部分的第三種解決方法。儘管這一問題並未得到良好解決,但自己加深了拍攝角度對側影輪廓方法影響的認識。其原理亦十分簡單,即多角度影像的拍攝角度、照片數量與質量等都將對物體的輪廓產生影響;而物體的側影輪廓是這一三維模型重建方法的核心。因此,模型最終外表與多角度影像拍攝情況密切相關。
參考文獻
[1] 欒悉道, 應龍, 謝毓湘, 等. 三維建模技術研究進展[J]. 電腦科學, 2008(02):208-210.
[2] 張建, 李宗南, 張楠, 等. 基於實測資料的作物三維資訊獲取與重建方法研究進展[J]. 華中農業大學學報, 2013,32(04):126-134.
[3] 曹煜, 陳秀宏. 基於側影輪廓的影像三維重建方法[J]. 計算機工程, 2012,38(05):224-226.
[4] 劉鋼, 彭群生, 鮑虎軍. 基於影像建模技術研究綜述與展望[J]. 計算機輔助設計與圖形學學報, 2005(01):18-27.
[5] Laurentini A. The visual hull concept for silhouette based image understanding[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 1994,16(2):150-162.
[6] 鄭國威, 高滿屯, 董巧英. 基於平面鏡的攝像機內引數線性標定方法[J]. 計算機工程與應用, 2006(28):86-88.
[7] 谷月霞, 張維忠, 王曉燕, 等. 基於未標定影像的三維重建演算法[J]. 計算機工程, 2010,36(08):214-216.
[8] Baumberg A, Lyons A, Taylor R. 3D S.O.M.—A commercial software solution to 3D scanning[J]. Graphical Models, 2005,67(6):476-495.