王皎
(山東省國(guó)土測(cè)繪院,山東 濟(jì)南 250101)
近年來無(wú)人機(jī)傾斜攝影技術(shù)得到了迅猛的發(fā)展,利用無(wú)人機(jī)傾斜攝影進(jìn)行實(shí)景三維重建已成為自然資源調(diào)查監(jiān)測(cè)、建筑施工、高精度農(nóng)村房產(chǎn)一體化測(cè)量的創(chuàng)新技術(shù)手段。特別是消費(fèi)級(jí)無(wú)人機(jī)傾斜攝影[1],在不依賴于POS精度的軟件環(huán)境下,結(jié)合LiDar融合、環(huán)繞拍攝等多源數(shù)據(jù)融合技術(shù)[2-3],不僅能夠真實(shí)地反映地物情況,而且能提供一系列地物信息。國(guó)外較早研制成功的大型傾斜航攝儀有德國(guó)的Penta-DigiCam、美國(guó)的AOS和以色列的A3等系統(tǒng),隨后國(guó)內(nèi)相繼研發(fā)了SWDC-5、AMC580、TOPDC-5等系統(tǒng)[4],但主要用于大面積傾斜實(shí)景三維重建。由于航速及航高限制,精度一般在±20cm~±60cm,較難滿足高精度測(cè)繪要求。隨著國(guó)內(nèi)多旋翼無(wú)人機(jī)及小型傾斜相機(jī)的發(fā)展,模型精度得到極大提高,但普通多旋翼無(wú)人機(jī)體積大、操作難度高、價(jià)格昂貴限制了其使用范圍,而目前消費(fèi)級(jí)無(wú)人機(jī)多配備三軸自穩(wěn)云臺(tái)相機(jī),具有操作簡(jiǎn)便、小巧靈活價(jià)格低廉等特點(diǎn)。已成為一種新型的快速獲取對(duì)地光學(xué)影像的平臺(tái)[5]。但消費(fèi)級(jí)無(wú)人機(jī)高精度傾斜攝影,數(shù)據(jù)量大,冗余復(fù)雜的多視角、影像數(shù)據(jù)帶來了較大的人工內(nèi)業(yè)整理工作量,為解決這一難題,該文提出了一種傾斜影像區(qū)塊化自動(dòng)整理方法,以解決繁雜的前期工序。
普通無(wú)人機(jī)傾斜攝影一般搭載五鏡頭、搖擺式兩鏡頭,通過執(zhí)行單一航飛設(shè)計(jì)來獲取多視角傾斜影像。傾斜影像一般存儲(chǔ)于不同視角相機(jī)的內(nèi)存卡上,通常帶有低精度POS。而消費(fèi)級(jí)無(wú)人機(jī)則搭載單鏡頭通過執(zhí)行多個(gè)航線設(shè)計(jì)來獲取多個(gè)視角傾斜影像,所有影像存儲(chǔ)于一張數(shù)據(jù)卡上,沒有單獨(dú)的POS信息,影像名稱按序遞增排列。但傾斜影像整理規(guī)范要求,應(yīng)按攝區(qū)代號(hào)(5位)+分區(qū)號(hào)(2位)+航線號(hào)(3位)+相機(jī)號(hào)(2位)+影像航線流水號(hào)(4位),共計(jì)16位組成,后續(xù)數(shù)據(jù)整理面臨著按規(guī)范命名、無(wú)效片剔除、航線號(hào)賦值、送審片選取、影像旋轉(zhuǎn)、片號(hào)注記、十字絲標(biāo)記等繁雜工序。傳統(tǒng)傾斜影像整理需要人工將下載照片、分類(如前視、后視、左視、右視、下視),然后通過第三方軟件提取照片拍攝點(diǎn)位,制作曝光點(diǎn)軌跡,但消費(fèi)級(jí)無(wú)人機(jī)像幅小、無(wú)單獨(dú)POS文件,如要在ContextCapture下制作高精度實(shí)景三維模型,為避免影像名稱沖突和便于像控點(diǎn)片規(guī)范選取,對(duì)海量的多視角影像進(jìn)行分類、重命名、挑片選片的工作更加復(fù)雜,人工勞動(dòng)強(qiáng)度大,容易疏漏,數(shù)據(jù)整理更加繁瑣。
Context Capture是基于圖形運(yùn)算單元GPU快速三維建模軟件,可以將多種源數(shù)據(jù)、分辨率、任意數(shù)據(jù)量的照片轉(zhuǎn)化為高分辨率帶有圖像紋理的三維網(wǎng)格模型。該文通過研究消費(fèi)級(jí)無(wú)人機(jī)傾斜攝影特點(diǎn)及ContextCapture建模步驟[6]發(fā)現(xiàn),利用傾斜影像Excel信息表可方便地將傾斜影像數(shù)據(jù)導(dǎo)入ContextCapture進(jìn)行空三解算,具體包含影像名稱、路徑、類型、GPS信息、視角分類、拍攝姿態(tài)等信息。通過精心的研究和試驗(yàn),該文基于C#編制了區(qū)塊化傾斜影像信息表批量自動(dòng)化整理程序,將前期多項(xiàng)工序通過程序自動(dòng)實(shí)現(xiàn),關(guān)鍵技術(shù)如下:
(1)多視角傾斜影像自動(dòng)分類及重命名。消費(fèi)級(jí)無(wú)人機(jī)所有視角照片按拍攝流水號(hào)依次存儲(chǔ)于一張內(nèi)存卡上,海量照片無(wú)法同大型傾斜攝影裝備,自動(dòng)按視角分類,該文利用消費(fèi)級(jí)無(wú)人機(jī)照片內(nèi)嵌EXIF信息,主要包含曝光點(diǎn)GPS位置信息、飛行器X、Y軸速度、拍攝云臺(tái)姿態(tài)信息等,以及視角切換曝光拐點(diǎn)與斷點(diǎn)續(xù)航曝光拐點(diǎn)的空間、時(shí)間邏輯關(guān)系實(shí)現(xiàn)海量多視角航片的自動(dòng)分類。規(guī)范化的高精度傾斜攝影航片曝光間隔一般在秒級(jí),視角切換或是斷點(diǎn)續(xù)航間隔一般在分鐘級(jí),因而可根據(jù)曝光點(diǎn)之間的時(shí)間間隔篩選出傾斜攝影視角切換及斷點(diǎn)續(xù)航拐點(diǎn),然后再利用曝光點(diǎn)與上下幀之間的空間位置關(guān)系,剔除斷點(diǎn)續(xù)航拐點(diǎn),保留視角切換拐點(diǎn),記錄片號(hào),完成影像自動(dòng)分組。視角切換與斷點(diǎn)續(xù)航拐點(diǎn)航線邏輯關(guān)系如圖1所示:
圖1 傾斜攝影視角切換與斷點(diǎn)續(xù)航拐點(diǎn)時(shí)空關(guān)系邏輯示意圖
自動(dòng)分類后傾斜影像組名及重命名主要代碼實(shí)現(xiàn)如下:
……
switch (dinfo.Name) {
case "前視":CameraFlag = "A"; break;
case "右視":CameraFlag = "B"; break;
case "左視":CameraFlag = "C"; break;
case "后視":CameraFlag = "D"; break;
case "下視":CameraFlag = "E"; break; }
Computer my_computer = new Computer();
string newname = CameraFlag + string.Format("{0:D4}", i);
……
my_computer.FileSystem.RenameFile(finfo.FullName, my_newname)
(2)傾斜影像GPS信息讀取。消費(fèi)級(jí)無(wú)人機(jī)影像GPS信息存儲(chǔ)于Exif中,不同于名稱、大小、類型等屬性通過程序可直接讀取,該文基于VS 2019創(chuàng)建了Exif讀取類庫(kù),以便讀取傾斜影像Exif-GPS屬性,關(guān)鍵語(yǔ)句如下:
public String FGPS(String PicPath,out string _lat,out string _lon,out string _alt)
//定義Exif-GPS讀取語(yǔ)句
……
case 0x0006:
if (objItem.Value.Length == 8){
double dblAltitude = BitConverter.ToUInt32(objItem.Value, 0) * 1.0d / BitConverter.ToUInt32(objItem.Value, 4);
alt = dblAltitude.ToString();}//高程讀取語(yǔ)句
……
(3)Excel傾斜影像信息表。將自動(dòng)分組及重命名后的傾斜影像信息按特定格式寫入傾斜影像信息表模板,關(guān)鍵代碼如下:
if (folder is DirectoryInfo)//如果是文件夾{
DirectoryInfo dinfo = new DirectoryInfo(folder.FullName);
FileSystemInfo[] fsinfos = dinfo.GetFileSystemInfos();
nub = 0;
for (int i = 0; i < (fsinfos.Count()); i++){
if (fsinfos[i] is DirectoryInfo) {
string modelExcel = folder.FullName + "" + "BlockImport_WURENJI.xlsx";//模板路徑
excel.Application excel = new excel.Application();
object missing = System.Reflection.Missing.Value;
excel.Workbook wookbook = excel.Application.Workbooks.Open(modelExcel, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing);
excel.Worksheet worksheet = (excel.Worksheet)wookbook.Worksheets[2]; //調(diào)用模板
DirectoryInfo my_info = new DirectoryInfo(fsinfos[i].FullName);
switch (my_info.Name) {//視角分類
case "前視":CameraFlag = "A";break;
case "右視":CameraFlag = "B";break;
case "左視":CameraFlag = "C";break;
case "后視":CameraFlag = "D";break;
case "下視":CameraFlag = "E";break;}
FileSystemInfo[] fs = my_info.GetFileSystemInfos("*.JPG");
for (int j = 0; j < (fs.Count()); j++){
FileInfo finfo = new FileInfo(fs[j].FullName);
……
FGPS(PicPath, out string my_lat, out string my_lon, out string my_alt);//EXIF類調(diào)用
worksheet.Cells[nub + 2, 1] = my_newname.Substring(0, my_newname.LastIndexOf("."));
worksheet.Cells[nub + 2, 2] = my_pitch;
worksheet.Cells[nub + 2, 3] = my_roll;
worksheet.Cells[nub + 2, 4] = my_heading;
worksheet.Cells[nub + 2, 5] = my_alt;
worksheet.Cells[nub + 2, 6] = my_lat;
worksheet.Cells[nub + 2, 7] = my_lon;
worksheet.Cells[nub + 2, 8] = CameraFlag;
worksheet.Cells[nub + 2, 9] = my_info.FullName;
worksheet.Cells[nub + 2, 10]= finfo.Extension;
……
nub = nub + 1;
this.toolStripProgressBar1.Value = nub; }
(4)曝光點(diǎn)軌跡制作。為了控制片選取方便及外業(yè)像控點(diǎn)導(dǎo)航需求,該文創(chuàng)建并引用了帶有影像鏈接、片號(hào)、特定圖標(biāo)的模板,自動(dòng)生成曝光點(diǎn)軌跡,效果如圖2所示。在移動(dòng)設(shè)備上不僅可查看點(diǎn)位信息還可同時(shí)瀏覽對(duì)應(yīng)影像,示例代碼如下:
圖2 前楊崗村高精度實(shí)景三維及控制片自動(dòng)選取
string modelpath = path + "" + "Model.kml";//引用模板
……
model[8 * (t + 1) + 34]= "
//定義點(diǎn)位圖片對(duì)應(yīng)的傾斜影像 ……model[8 * (t + 1) + 38]= " ";//寫入點(diǎn)位坐標(biāo)信息
File.WriteAllLines(M_path,model);
前期多次探索的基礎(chǔ)上,在滕州前楊崗村,采用大疆精靈4 Pro V2.0消費(fèi)級(jí)無(wú)人機(jī)成功進(jìn)行了高精度傾斜攝影。前楊崗村100余戶,面積約0.1km2,村貌良好,戶型較一般村莊復(fù)雜,檐廊、連戶房較多。首先,根據(jù)實(shí)地情況進(jìn)行航攝方案設(shè)計(jì)[7],采用單鏡頭超低空五航線航拍(下視、前視、后視、左視、右視),航高44m,影像分辨率約1.2cm(據(jù)下視計(jì)算),旁向重疊度85%,航向重疊度85%[8],然后進(jìn)行靶標(biāo)布設(shè)。靶標(biāo)控制點(diǎn)采用“L”設(shè)計(jì),容易區(qū)分內(nèi)外角等特征信息,布設(shè)于村莊主路面,間距100~150m,大小20cm×20cm。采用簡(jiǎn)易三腳架對(duì)中桿,萊卡RTK進(jìn)行30秒觀測(cè),統(tǒng)一采集外角。因影像分辨率較高,必要時(shí)也可采集村莊地面其他特征信息。再者在Context Capture軟件下進(jìn)行高精度實(shí)景三維建模。數(shù)據(jù)導(dǎo)入ContextCapture建模軟件之前,需要對(duì)航片進(jìn)行視角分類、無(wú)效片剔除、按規(guī)范重命名、影像信息表、曝光點(diǎn)軌跡制作等。
前楊崗村共獲取高分辨率多視角影像4026張,分別采用了人工及自動(dòng)化整理程序進(jìn)行整理。其中人工耗時(shí)1d,主要耗時(shí)集中在海量數(shù)據(jù)的視角分類、無(wú)效片剔除以及區(qū)塊化影像信息表人工信息錄入等工序,而自動(dòng)化整理程序耗時(shí)30min,自動(dòng)完成前期多項(xiàng)工序,效率對(duì)比如表1所示,整理程序及影像信息表如圖3所示:
表1 傾斜影像整理效率對(duì)比
為驗(yàn)證經(jīng)傾斜影像區(qū)塊化自動(dòng)整理方法整理后的數(shù)據(jù)是否對(duì)實(shí)景三維建模精度帶來的影響,該文利用萊卡免棱鏡全站儀實(shí)測(cè)了共計(jì)44個(gè)房屋角點(diǎn)及分戶界址點(diǎn),與實(shí)景三維解析同名點(diǎn)進(jìn)行了精度比對(duì),如表2所示:
圖3 傾斜影像區(qū)塊化自動(dòng)整理程序及傾斜影像信息表
表2 三維測(cè)圖精度統(tǒng)計(jì)
注:X檢,Y檢為全站儀實(shí)測(cè)坐標(biāo);X圖,Y圖為實(shí)景三維解析坐標(biāo);ΔX,ΔY為實(shí)測(cè)坐標(biāo)與解析坐標(biāo)偏差值。
綜上所述,基于消費(fèi)級(jí)無(wú)人機(jī)的傾斜影像區(qū)塊化自動(dòng)整理方法,實(shí)景三維建模質(zhì)量可以滿足高精度三維測(cè)圖精度要求,相比傳統(tǒng)人工手動(dòng)信息錄入模式,工作強(qiáng)度極大減少,錯(cuò)誤率得到有效控制[9-11]。利用輕型無(wú)人機(jī)航空攝影系統(tǒng)實(shí)現(xiàn)三維全景地圖生產(chǎn),生產(chǎn)方式方便、高效且質(zhì)量較好,為三維地籍系統(tǒng)建設(shè)、農(nóng)村區(qū)域房地一體化建設(shè)及地理省情監(jiān)測(cè)與基礎(chǔ)測(cè)繪帶來了創(chuàng)新途徑[12-15]。輕小型消費(fèi)級(jí)無(wú)人機(jī)低空操控、靈活性強(qiáng)[16],且自動(dòng)避障和失聯(lián)返航功能都相對(duì)成熟,結(jié)合多源數(shù)據(jù)融合及實(shí)景三維模型處理技術(shù)[17],有效提高了實(shí)景三維建模的效率和精細(xì)程度[18]。
傾斜影像區(qū)塊化自動(dòng)整理程序簡(jiǎn)化了冗余復(fù)雜的傾斜影像整理過程,縮短了高精度實(shí)景三維建模周期,滿足高精度測(cè)繪要求,不僅適用于消費(fèi)級(jí)無(wú)人機(jī)傾斜攝影,對(duì)大型旋翼、固定翼無(wú)人機(jī)傾斜攝影、正射影像的整理、丟片查找同樣適用,并可實(shí)現(xiàn)多區(qū)塊批量處理,極大降低了人工勞動(dòng)強(qiáng)度,而且數(shù)據(jù)整理減小了對(duì)外業(yè)航攝人員的依賴程度,更容易實(shí)現(xiàn)內(nèi)外業(yè)分離,規(guī)?;鳂I(yè),將為“實(shí)景三維中國(guó)”建設(shè)提供強(qiáng)有力技術(shù)支撐。