基于單幅圖像文化遺存遺址的三維重建方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及計(jì)算機(jī)虛擬現(xiàn)實(shí)、圖像建模技術(shù)、計(jì)算機(jī)視覺(jué)以及攝影測(cè)量領(lǐng)域,特別 是一種基于單幅圖像文化遺存遺址的三維重建方法。
【背景技術(shù)】
[0002] 文化遺存遺址是古代勞動(dòng)人民偉大創(chuàng)造和聰明智慧的結(jié)晶,是歷史高度、文化厚 度、自然生命的沉淀,是研宄古代歷史、文化、藝術(shù)、科學(xué)技術(shù)發(fā)展的及其重要的實(shí)物資料。 它們經(jīng)歷了長(zhǎng)時(shí)間的風(fēng)化侵蝕、歷史變迀,遭遇著由于現(xiàn)代社會(huì)經(jīng)濟(jì)的高速發(fā)展、人類頻繁 活動(dòng)的破壞和沖擊,其中一部分已損壞或不復(fù)存在。然而隨著社會(huì)對(duì)文化遺存遺址保護(hù)意 識(shí)的增強(qiáng)及現(xiàn)代旅游業(yè)的迅猛發(fā)展,人們渴望恢復(fù)重建這些老舊的遺址文物,以便能夠讓 其繼續(xù)存留下來(lái),提高文化遺存和文化內(nèi)涵的形象,更大范圍的向世人展示這些文化遺存 遺址獨(dú)特的文化、科學(xué)、藝術(shù)價(jià)值,以此來(lái)促進(jìn)人們對(duì)文化的理解,提高傳播和弘揚(yáng)文化的 能力。所以在現(xiàn)有數(shù)據(jù)的基礎(chǔ)上如何恢復(fù)重建出這些已破壞或不復(fù)存在的文化遺存遺址是 文化遺產(chǎn)保護(hù)和文化旅游宣傳共同需要解決的重要問(wèn)題。
[0003] 目前,文化遺存遺址的三維模型的獲取要有三種方式:第一種是組織人力進(jìn)行現(xiàn) 場(chǎng)采集測(cè)量,以此積累的建筑工程測(cè)繪圖紙和文檔資料;第二種是基于現(xiàn)代激光掃描設(shè)備 所采集的高精度離散點(diǎn)云數(shù)據(jù);第三種是借助數(shù)碼相機(jī)獲取的古建筑二維影像數(shù)據(jù)。對(duì)應(yīng) 于三種不同的數(shù)據(jù)源有三種不同的遺存遺址三維模型構(gòu)建方式:1)基于3DMAX、AUTOCAD、 CREATOR等建模軟件的參數(shù)化建模技術(shù),這種方法雖在一定程度上構(gòu)建了精細(xì)的古建筑三 維模型,但該技術(shù)建模周期長(zhǎng)、操作過(guò)程復(fù)雜、需要專業(yè)熟練的操作人員,對(duì)于非專業(yè)人員 的實(shí)時(shí)獲取三維模型就顯得尤為困難。2)基于深度數(shù)據(jù)的三維建模技術(shù),該方法雖可以獲 取高精度的三維模型,但需要借助高昂的掃描設(shè)備,數(shù)據(jù)自動(dòng)化處理程度低,工作量大。3) 基于圖像的三維重建技術(shù)是以計(jì)算機(jī)視覺(jué)和數(shù)字?jǐn)z影測(cè)量理論為依托,運(yùn)用單幅圖像或多 幅圖像,通過(guò)圖像匹配、相機(jī)標(biāo)定、三維重構(gòu)等一系列步驟重構(gòu)三維模型。該方法不需要專 業(yè)的建模人員,重建成本低、周期短,自動(dòng)化程度高,且可以構(gòu)造出照片級(jí)真實(shí)感的三維模 型。
[0004] 基于圖像的三維重建技術(shù)根據(jù)所利用的圖像的數(shù)目不同可以分為基于多張圖像 的三維重建及基于單張圖片的三維重建。研宄人員對(duì)于多張圖片的三維重建(又稱為基于 圖像序列的三維重建)多采用從運(yùn)動(dòng)中恢復(fù)和從輪廓中恢復(fù)兩大主要方法?;诙鄰垐D片 的三維重建需要在多張圖片中尋找特征點(diǎn),計(jì)算量大、過(guò)程復(fù)雜且易受拍攝角度及成像過(guò) 程的影響,當(dāng)僅存一張圖片時(shí)無(wú)法采用該方法進(jìn)行三維重建。基于單張圖片的三維重建可 以根據(jù)單張圖片中的信息利用不同約束重建三維場(chǎng)景,這里的約束有透視變形約束、反射 模型約束兩種。
[0005] 專利號(hào)為CZ103824323A,發(fā)明名稱為"一種基于單幅二維圖像的三維重建方法" 的專利提出了一種利用反射模型約束從單幅圖形重建三維場(chǎng)景的方法,通過(guò)二維灰度圖像 計(jì)算朗伯體表面反射模型(ambertiansurfacereflectionmodel),將模型進(jìn)行逆求解解 算像點(diǎn)深度信息。這種方法快速且適用廣泛,但重建精度較低且對(duì)圖像拍攝要求較高,對(duì)于 凹凸面不能實(shí)現(xiàn)唯一重建,所以對(duì)于規(guī)則形體的單張三維重建不太適用。
[0006] 專利號(hào)為CN1453740A,發(fā)明名稱為"由單幅圖像測(cè)量場(chǎng)景及場(chǎng)景內(nèi)物體幾何信息 的方法"的專利提出了一種基于單幅圖像的場(chǎng)景測(cè)量方法,該方法可以對(duì)場(chǎng)景內(nèi)任意平面 的信息進(jìn)行度量,但要利用這些測(cè)量信息進(jìn)行三維重建需要借助第三方軟件,沒(méi)有形成一 個(gè)完整的單幅三維重建系統(tǒng)。
[0007] 專利號(hào)為CN104143211A發(fā)明名稱為"基于單幅圖像的三維自由形體生成方法" 和專利號(hào)為CN102855665A發(fā)明名稱為"從單幅圖像重建三維建筑模型的方法"分別介紹從 單幅圖像恢復(fù)曲面形體的方法,但方法都僅適用于非規(guī)則形體,忽略了規(guī)則形體的三維重 建。
【發(fā)明內(nèi)容】
[0008] 有鑒于此,本發(fā)明的目的是提出一種基于單幅圖像文化遺存遺址的三維重建方 法,可以借助本發(fā)明在同一系統(tǒng)內(nèi)完成規(guī)則形體及非規(guī)則形體的三維重建,整個(gè)重建過(guò)程 以面為單元,重建過(guò)程更為靈活。
[0009] 本發(fā)明采用以下方案實(shí)現(xiàn):一種基于單幅圖像文化遺存遺址的三維重建方法,具 體包括以下步驟實(shí)現(xiàn): 步驟S1 :將一張待重建文化遺存遺址場(chǎng)景的圖像或相片輸入計(jì)算機(jī); 步驟S2 :采用手動(dòng)或自動(dòng)的方法從步驟S1中所述圖像中提取尤7、Z三個(gè)垂直方向的 平行直線簇,并將提取的直線簇分成三組; 步驟S3 :利用步驟S2提取的Z、7、2方向的三組平行直線簇計(jì)算Z、7、Z三個(gè)主方向滅 點(diǎn),得到三個(gè)主滅點(diǎn); 步驟S4 :利用步驟S3計(jì)算的尤7、Z三個(gè)主滅點(diǎn),根據(jù)三個(gè)主滅點(diǎn)計(jì)算相機(jī)內(nèi)參數(shù)矩陣 (沿及外參數(shù)矩陣(兄完成相機(jī)標(biāo)定,即求取投影矩陣(灼; 步驟S5 :在三維空間中設(shè)定參考平面及參考方向,其中所述參考平面為空間直角坐標(biāo) 系的刀平面,所述參考方向?yàn)榭臻g直角坐標(biāo)系的2方向,在所述參考方向上建立多個(gè)平行 于參考平面的平行平面,利用反投影射線與平行平面的交點(diǎn)完成三維點(diǎn)重建,得到點(diǎn)云; 步驟S6 :對(duì)步驟S5重建的點(diǎn)云進(jìn)行點(diǎn)云網(wǎng)格化及紋理映射完成真實(shí)感三維模型重建。
[0010] 進(jìn)一步的,所述步驟S1中的圖像為照片或圖片的數(shù)字化影像,圖像的數(shù)字化分辨 率為 600dpi~1200dpi。
[0011] 進(jìn)一步的,所述步驟S2中的手動(dòng)方法具體為:用戶可根據(jù)輸入的圖像選取建筑骨 架線,運(yùn)用交互式方法分別在X、Y、Z三個(gè)垂直方向上繪制三條或四條直線,根據(jù)用戶繪制 的直線方向,依據(jù)空間直角坐標(biāo)系三個(gè)坐標(biāo)軸方向完成直線分組。
[0012] 進(jìn)一步的,所述步驟S2中的自動(dòng)方法具體包括以下步驟: 步驟S21:對(duì)待提取的圖像進(jìn)行圖像預(yù)處理,具體包括:利用Ostu閾值分割算法對(duì)圖像 進(jìn)行分割用以提取待重建建筑物目標(biāo)區(qū)域,利用數(shù)學(xué)形態(tài)學(xué)原理清除圖像中的孤立點(diǎn),對(duì) 圖像進(jìn)行細(xì)化處理; 步驟S22:利用步驟S21預(yù)處理完成的圖像,采用Canny邊緣檢測(cè)算法提取目標(biāo)區(qū)域的 邊緣圖像; 步驟S23 :利用步驟S22提取的邊緣圖像,采用累計(jì)概率霍夫變換,通過(guò)將同方向、間隔 短的直線段合并為一條直線提取長(zhǎng)直線; 步驟S24 :利用步驟S23提取的長(zhǎng)直線,采用角度和距離的共同限制,將提取的直線分 成與空間坐標(biāo)系三個(gè)坐標(biāo)軸對(duì)應(yīng)的三組。
[0013]進(jìn)一步的,所述步驟S3具體包括以下步驟:具體包括以下步驟: 步驟S31 :假設(shè)兩條非平行直線Li=[aihc