丁亞杰,鮑秀武
(常州市測(cè)繪院,江蘇 常州 213003)
隨著城市發(fā)展智慧化進(jìn)程的加快,從數(shù)字城市到智慧城市,城市的規(guī)劃、建設(shè)、管理逐步走向科學(xué)化、精細(xì)化、智能化。數(shù)字孿生城市、元宇宙等概念相繼提出,一個(gè)虛實(shí)相交的世界正在逐步成為現(xiàn)實(shí)。
傾斜攝影測(cè)量技術(shù)是近年來(lái)發(fā)展起來(lái)的一項(xiàng)高新技術(shù),可通過在同一飛行平臺(tái)上搭載多臺(tái)傳感器,多角度同步曝光采集影像,處理后的數(shù)據(jù)可以用于構(gòu)建實(shí)景三維模型[1]。實(shí)景三維能夠更直觀、更真實(shí)、更精細(xì)地展現(xiàn)空間位置和地理地貌,是新型基礎(chǔ)測(cè)繪標(biāo)準(zhǔn)化產(chǎn)品,可以為經(jīng)濟(jì)社會(huì)發(fā)展和政府部門信息化提供統(tǒng)一的空間基底。
常州市2021年開展了全市域航空攝影項(xiàng)目,搭載AIMS航攝儀,獲取了主城區(qū) 5 cm和市域 10 cm傾斜影像數(shù)據(jù),原始數(shù)據(jù)量多達(dá) 300 TB,后期準(zhǔn)備開展實(shí)景三維建模工作。根據(jù)自然資源和規(guī)劃管理工作需要,有些區(qū)域需要先行開展實(shí)景三維建模工作。面對(duì)海量的傾斜影像數(shù)據(jù),如何快速、準(zhǔn)確地將建模范圍涉及的所有鏡頭影像挑選出來(lái),是亟須解決的問題。目前常用的傾斜影像挑片方法主要有目視挑片和建模范圍外擴(kuò)進(jìn)行挑片等兩種,前者費(fèi)時(shí)費(fèi)力,后者挑片后冗余影像數(shù)量過多。本文針對(duì)此種情況進(jìn)行研究,提出基于POS數(shù)據(jù)的自動(dòng)挑片方法,實(shí)現(xiàn)了對(duì)目標(biāo)區(qū)域傾斜影像的自動(dòng)挑片、自動(dòng)拷貝功能,極大地提高了建模影像準(zhǔn)備效率,剔除無(wú)效影像后的影像數(shù)量明顯降低,為后期實(shí)景三維建模效率的提升提供了有效支撐。
傾斜攝影數(shù)據(jù)獲取設(shè)備一般由4個(gè)傾斜攝影相機(jī)和1個(gè)垂直攝影相機(jī)構(gòu)成,與GPS接收機(jī)、高精度IMU進(jìn)行高度集成。攝影相機(jī)用來(lái)提供影像信息,GPS、IMU分別提供位置和姿態(tài)信息。獲取的航空傾斜影像不僅能夠真實(shí)地反映地物情況,高精度地獲取物方紋理信息,還可通過先進(jìn)的定位、融合、建模等技術(shù),生成真實(shí)的三維城市模型[2]。
常州全市域航空攝影項(xiàng)目采用AIMS航攝儀進(jìn)行影像數(shù)據(jù)獲取,航攝儀如圖1所示,下視鏡頭采用飛思(Phase One)公司推出的IXM-RS280F相機(jī),為雙拼相機(jī),像素?cái)?shù) 20 150×14 118(約2.8億),像元尺寸 3.76 μm,鏡頭焦距 90 mm,傾斜鏡頭采用IXH-150相機(jī),像素?cái)?shù) 14 204×10 652(約1.5億),像元尺寸 3.76 μm,鏡頭焦距 110 mm。
圖1 AIMS航空集成多傳感器航攝儀
項(xiàng)目范圍為常州市全域,中心城區(qū)范圍 900 km2,獲取地面分辨率 0.05 m影像,設(shè)計(jì)絕對(duì)航高為 900 m;其他區(qū)域 3 472 km2,獲取 0.1 m影像,設(shè)計(jì)絕對(duì)航高為 2 100 m。航向重疊度為80%,旁向重疊度為60%。航攝作業(yè)使用大棕熊100有人飛機(jī)搭載AIMS航攝儀執(zhí)行航攝任務(wù),飛行22個(gè)架次、132.78 h,完成了整個(gè)測(cè)區(qū)的航飛數(shù)據(jù)獲取任務(wù)。
利用航空攝影POS(即IMU/GNSS)信息和5個(gè)鏡頭方向相對(duì)固定的規(guī)律,將所有傾斜攝影5鏡頭影像覆蓋范圍標(biāo)識(shí)在對(duì)應(yīng)空間位置上,將建模范圍線與之疊加,利用程序進(jìn)行分析與判讀,自動(dòng)獲取建模范圍涉及的所有影像列表,將影像列表中的所有影像自動(dòng)拷貝至目標(biāo)路徑,用于實(shí)景三維建模,傾斜影像自動(dòng)挑片思路如圖2所示。
圖2 傾斜影像自動(dòng)挑片思路
(1)5個(gè)鏡頭影像覆蓋范圍確定
根據(jù)傾斜攝影數(shù)據(jù)獲取情況,選定一個(gè)攝站同步拍攝的5張影像(下視和傾斜影像)作為樣片,以正射影像為底圖,標(biāo)繪出5個(gè)鏡頭影像覆蓋范圍,如圖3所示,所選樣片(下視)旋偏角(Kappa值)接近0°,飛行方向?yàn)椤拔?東”,紅色線為前視鏡頭影像范圍,影像名稱以“A”開頭,如“A210501027077”(2105為攝區(qū)代號(hào),01為航攝分區(qū)號(hào),027為航帶號(hào),077為影像編號(hào));綠色線為右視鏡頭影像范圍,影像名稱以“B”開頭,如“B210501027077”;藍(lán)色線為后視鏡頭影像范圍,影像名稱以“C”開頭;黃色線為左視鏡頭影像范圍,影像名稱以“D”開頭;品紅色線為下視鏡頭影像范圍,影像名稱以“E”開頭。
圖3 5個(gè)鏡頭影像覆蓋范圍
(2)5個(gè)鏡頭覆蓋范圍CAD塊符號(hào)制作
CAD中根據(jù)各個(gè)鏡頭影像覆蓋范圍,分別制作塊符號(hào),圖層名“QXFW”,如圖4所示。
圖4 5個(gè)鏡頭覆蓋范圍塊符號(hào)
(3)POS像主點(diǎn)展到二維圖面
利用VBA程序?qū)⒑娇諗z影POS成果(下視鏡頭)展繪到CAD二維圖面,根據(jù)旋偏角(Kappa值)確定像主點(diǎn)塊符號(hào)的旋轉(zhuǎn)角度,將POS信息寫入像主點(diǎn)擴(kuò)展屬性中。程序根據(jù)Kappa值,自動(dòng)判斷航飛方向,Kappa值為0°左右表示飛行方向?yàn)椤拔?東”,180°左右飛行方向?yàn)椤皷|-西”,同時(shí)根據(jù)影像首字母判斷鏡頭類別。像主點(diǎn)展點(diǎn)情況,如圖5、圖6所示。
圖5 航空攝影POS數(shù)據(jù)
圖6 展繪到二維圖面的POS像主點(diǎn)及其擴(kuò)展屬性
(4)確定實(shí)景三維建模范圍
在已有地形圖或影像圖基礎(chǔ)上,確定實(shí)景三維建模范圍,如圖7所示,加粗的黑線為三維建模范圍,范圍線可以是矩形或任意多邊形。
圖7 確定實(shí)景三維建模范圍
(5)根據(jù)建模范圍進(jìn)行傾斜影像自動(dòng)挑片,導(dǎo)出影像列表
本步驟功能全部由VBA程序自動(dòng)實(shí)現(xiàn)??紤]到傾斜影像存在攝影角度情況,程序首先將建模范圍線進(jìn)行外擴(kuò),將外擴(kuò)后范圍涉及的所有像主點(diǎn)選中,自動(dòng)生成5鏡頭影像范圍。程序會(huì)對(duì)當(dāng)前像主點(diǎn)航高“HEIGHT”值與制作塊符號(hào)模板的像主點(diǎn)“HEIGHT”值進(jìn)行比較,獲取比率,對(duì)各個(gè)鏡頭影像范圍塊符號(hào)進(jìn)行相應(yīng)比例縮放,另外塊符號(hào)的方向與Kappa值保持一致,保證展繪到CAD對(duì)應(yīng)空間位置上的傾斜影像覆蓋范圍與實(shí)際情況基本一致。
所有鏡頭影像覆蓋范圍標(biāo)識(shí)在對(duì)應(yīng)空間位置上,將建模范圍線與之疊加,利用程序進(jìn)行空間判讀,將不涉及建模區(qū)域的鏡頭影像范圍剔除,讀取所有保留下來(lái)的鏡頭影像范圍的擴(kuò)展屬性,輸出挑片后影像列表,程序運(yùn)行結(jié)果如圖8~圖10所示。
圖8 建模區(qū)域涉及的鏡頭影像范圍得到保留
圖9 建模區(qū)域涉及的前視鏡頭影像范圍及其擴(kuò)展屬性
圖10 輸出挑片后影像列表
(6)根據(jù)影像列表進(jìn)行傾斜影像自動(dòng)拷貝
目前所有傾斜影像數(shù)據(jù)(TIF格式)是按鏡頭類別、航線編號(hào)以文件夾的形式存放的,手工拷貝影像比較麻煩,本文基于.NET Framework框架和C#編程語(yǔ)言開發(fā)實(shí)現(xiàn)了傾斜影像自動(dòng)拷貝程序,程序運(yùn)行界面如圖11所示,點(diǎn)擊“添加”按鈕,提取挑出的影像列表,再指定源文件路徑(首級(jí)文件夾)和目標(biāo)文件路徑,程序自動(dòng)遍歷源文件路徑下的所有路徑,將之記錄到數(shù)組中,自動(dòng)搜索影像文件,進(jìn)行拷貝操作。
圖11 傾斜影像自動(dòng)拷貝程序
此程序除了可以自動(dòng)拷貝原始航飛影像外,還可按照影像列表對(duì)正射影像分幅成果(tif+tfw格式)進(jìn)行自動(dòng)搜索拷貝,另外也支持JPEG格式影像數(shù)據(jù)。
(7)實(shí)景三維建模
利用Context Capture Center軟件平臺(tái),添加挑片后的傾斜影像數(shù)據(jù)和POS數(shù)據(jù),進(jìn)行實(shí)景三維建模,保留下來(lái)的所有鏡頭影像均指向目標(biāo)區(qū)域,如圖12所示。用傳統(tǒng)的建模范圍外擴(kuò)進(jìn)行影像挑片,挑出像片 1 700多張,使用本方法挑出像片數(shù)為377張,數(shù)量明顯縮減,挑片更精準(zhǔn),采用同樣的硬件設(shè)備進(jìn)行三維模型重建,后者耗時(shí)約為前者的1/5,大大節(jié)省了后期實(shí)景三維建模所用算力。
圖12 實(shí)景三維建模界面
實(shí)景三維模型效果,如圖13所示,模型效果沒有因?yàn)樘羝艿饺魏斡绊?,體現(xiàn)了挑片程序的正確性。
圖13 實(shí)景三維模型效果
為了檢驗(yàn)挑片程序運(yùn)行效果,在中心城區(qū)選定 0.2 km2~50 km2的建模范圍進(jìn)行實(shí)驗(yàn),分別采用建模范圍外擴(kuò)挑片和本文提到的程序挑片方法,進(jìn)行傾斜影像挑片。建模范圍外擴(kuò)挑片是將落在外擴(kuò)區(qū)域內(nèi)的所有攝站點(diǎn)拍攝的5鏡頭影像選中,作為實(shí)景三維建模用影像數(shù)據(jù),外擴(kuò)距離在此與程序挑片同樣設(shè)置為 1 500 m,可以保證涉及建模區(qū)域的最遠(yuǎn)處傾斜影像能夠被選中,外擴(kuò)距離已經(jīng)過實(shí)際驗(yàn)證。按建模區(qū)域外擴(kuò)進(jìn)行挑片與程序挑片結(jié)果對(duì)比,如表1所示。
表1 建模范圍外擴(kuò)挑片與程序挑片結(jié)果對(duì)比
從表1中可以看出,自動(dòng)挑片程序選片結(jié)果相對(duì)于單純的建模范圍外擴(kuò)選片,影像數(shù)據(jù)量明顯降低,并且建模區(qū)域面積越小效果越顯著。
(1)自動(dòng)展繪5鏡頭影像覆蓋范圍關(guān)鍵代碼(VBA程序)
'根據(jù)下視像主點(diǎn),在二維圖面插入5鏡頭范圍塊符號(hào)
insPt(0)= objBlock.InsertionPoint(0)
insPt(1)= objBlock.InsertionPoint(1)
insPt(2)= 0
'計(jì)算相對(duì)比例
dblHeight = objBlock.InsertionPoint(2) '航高
BL = Round(dblHeight/dblHeightCK,3)'比例=航高/參考航高
angle1 = objBlock.Rotation '航飛Kappa角度
'將5鏡頭范圍塊符號(hào)插入到對(duì)應(yīng)空間位置
Set Block1 = ThisDrawing.ModelSpace.InsertBlock(insPt,BlockName,BL,BL,BL,0)
Block1.Rotation = angle1 '設(shè)置鏡頭范圍塊符號(hào)旋轉(zhuǎn)角度
Block1.Layer = LayerNameJTName '將鏡頭范圍塊符號(hào)放入相應(yīng)圖層
'將塊符號(hào)炸開
ThisDrawing.SendCommand "explode(handent" & Chr(34)& Block1.Handle & Chr(34)& ")" & vbCrLf
'塊炸開后的4條邊線保留在“QXFW”層,讀取其坐標(biāo),放入“Points_QXFW”數(shù)組中
'生成鏡頭影像覆蓋范圍線
Set PLine2 = ThisDrawing.ModelSpace.AddLightWeightPolyline(Points_QXFW)
PLine2.SetXData XType1,XData1 '將擴(kuò)展屬性賦到范圍線上
PLine2.Layer = LayerNameJTName '將鏡頭影像覆蓋范圍線放入相應(yīng)圖層
PLine2.Color = acByLayer
PLine2.Update
(2)根據(jù)三維建模范圍自動(dòng)挑片關(guān)鍵代碼(VBA程序)
'建模范圍線坐標(biāo)放入Points數(shù)組中
'根據(jù)三維建模范圍,將涉及的鏡頭影像范圍線進(jìn)行標(biāo)識(shí)
Set sset1 = ThisDrawing.SelectionSets.Add("this1")'添加選擇集
FilterType1(0)= 0
FilterData1(0)= "LWPOLYLINE"
sset1.SelectByPolygon acSelectionSetCrossingPolygon,Points,F(xiàn)ilterType1,F(xiàn)ilterData1 '將建模范圍涉及所有多段線添加到選擇集中
For j = 0 To sset1.Count-1 '遍歷選擇集內(nèi)的多段線
Set objPL_JTYXFW = sset1.Item(j)'鏡頭影像范圍
If objPL_JTYXFW.Layer = "A鏡頭前視" Or objPL_JTYXFW.Layer = "B鏡頭右視" Or _
objPL_JTYXFW.Layer = "C鏡頭后視" Or objPL_JTYXFW.Layer = "D鏡頭左視" Or _
objPL_JTYXFW.Layer = "E鏡頭下視" Then
If objPL_JTYXFW.Thickness <> 1 Then
objPL_JTYXFW.Thickness = 1 '將選中的鏡頭影像范圍線,Thickness賦值1
objPL_JTYXFW.Lineweight = acLnWt030 '加粗顯示
objPL_JTYXFW.Update
End If
End If
Next j
'將未標(biāo)識(shí)的鏡頭影像范圍線刪除
sset1.Clear '清空選擇集
sset1.Select acSelectionSetAll,,,F(xiàn)ilterType1,F(xiàn)ilterData1 '將所有多段線添加到選擇集中
For j = 0 To sset1.Count-1
Set objPL_JTYXFW = sset1.Item(j)'鏡頭影像范圍
If objPL_JTYXFW.Layer = "A鏡頭前視" Or objPL_JTYXFW.Layer = "B鏡頭右視" Or _
objPL_JTYXFW.Layer = "C鏡頭后視" Or objPL_JTYXFW.Layer = "D鏡頭左視" Or _
objPL_JTYXFW.Layer = "E鏡頭下視" Then
If objPL_JTYXFW.Thickness <> 1 Then 'Thickness未賦值1的鏡頭影像范圍線
objPL_JTYXFW.Delete '鏡頭影像范圍刪除
objPL_JTYXFW.Update
End If
End If
Next j
(3)傾斜影像自動(dòng)搜索拷貝關(guān)鍵代碼(C#程序)
//源文件路徑下所有路徑,放入pathList數(shù)組中
//自動(dòng)搜索,進(jìn)行影像拷貝
for(int i = 0;i < this.listView_imagefiles.Items.Count;i++)
{
string file = this.listView_imagefiles.Items[i].SubItems[1].Text;
if(imagepath.Equals("")) //影像路徑為空
{
//遍歷pathList列表,獲取影像路徑
imagepath = imagecopy.GetPath(file,imagesuffix,pathList);
}
imagefullname1 = imagepath + "\" + file + imagesuffix;
imagefullname2 = targetFolder + "\" + file + imagesuffix;
if(File.Exists(imagefullname1)) //影像存在
{
File.Copy(imagefullname1,imagefullname2,true);//影像拷貝
}
else
{
//搜索不到文件,需重新遍歷pathList列表,獲取影像路徑
imagepath = "";
imagepath = imagecopy.GetPath(file,imagesuffix,pathList);
imagefullname1 = imagepath + "\" + file + imagesuffix;
imagefullname2 = targetFolder + "\" + file + imagesuffix;
if(File.Exists(imagefullname1))//影像存在
{
File.Copy(imagefullname1,imagefullname2,true);//影像拷貝
}
}
}
本文提出并實(shí)現(xiàn)了一種傾斜影像自動(dòng)挑片方法,將技術(shù)人員從煩瑣的傾斜影像挑片工作中解放出來(lái),只要確定三維建模范圍,即可實(shí)現(xiàn)傾斜影像的快速精準(zhǔn)挑片及自動(dòng)搜索拷貝,極大地降低了人工選片及數(shù)據(jù)拷貝工作量,提升了建模影像數(shù)據(jù)準(zhǔn)備效率。剔除無(wú)效影像后的影像數(shù)量明顯降低,有助于后期實(shí)景三維建模效率的提升,使建模工作更高效。
本方法對(duì)于無(wú)人機(jī)傾斜攝影進(jìn)行實(shí)景三維建模也有較強(qiáng)的參考意義。本方法已成功應(yīng)用于實(shí)景三維常州數(shù)據(jù)建設(shè)(一期)、溧陽(yáng)市三維數(shù)字城市建設(shè)、天寧區(qū)實(shí)景三維數(shù)據(jù)庫(kù)建設(shè)等項(xiàng)目中,自動(dòng)化程度很高,處理速度極快,為實(shí)現(xiàn)實(shí)景三維常州全域覆蓋提供了技術(shù)支撐。