雷曉榮
(中煤科工集團西安研究院有限公司,西安 710054)
鉆孔成像技術(shù)是一種利用光學(xué)成像原理的成像測井技術(shù),經(jīng)過多年的發(fā)展,該種技術(shù)由最初以觀察為主的鉆孔照相和鉆孔攝像(鉆孔電視),發(fā)展成為結(jié)合視頻采集和圖像處理的綜合式全景攝像系統(tǒng),提前觀測以及了解煤礦井下地質(zhì)條件能夠有效掌握煤礦井下巷道的圍巖、工作面的斷層構(gòu)造以及上覆巖層導(dǎo)水裂隙帶等地質(zhì)情況,對巷道的支護設(shè)計、巷道修復(fù)和圍巖注漿加固等工作提供真實且有效數(shù)據(jù)支持[1-10].早期的鉆孔成像儀只有攝像頭模塊,近兩年加入了鉆孔軌跡測量模塊和深度計數(shù)模塊,對地面軌跡顯示和處理軟件提出了新的要求:把精確的深度信息、測量點的鉆孔偏差信息、鉆孔璧圖像信息的深度融合并借助數(shù)據(jù)庫管理并兼容多種儀器成為主要的研究方向.
文章借助軟件工程的設(shè)計理念,給出了軟件的總體架構(gòu)設(shè)計框圖,并基于Visual Studio+SQLite 技術(shù)實現(xiàn)了礦井鉆孔成像儀軌跡顯示軟件.
CXK12 礦用本安型鉆孔成像儀由CXK12-Z 礦用本安型鉆孔成像儀主機、CXK-5S 礦用本安型鉆孔深度計數(shù)器、CXK-26T 礦用本安型鉆孔成像儀探頭、CXK-42T 礦用本安型鉆孔成像儀探頭、煤礦用聚乙烯絕緣編織屏蔽聚氯乙烯護套通信軟電纜、聚乙烯絕緣銅網(wǎng)屏蔽聚氨酯護套綜合抗拉電纜組成,總體組成框架如圖1所示.
圖1 成像儀組成框架
圖1中,深度計數(shù)器的核心是光電編碼器.測量時探頭通過電纜送入鉆孔內(nèi)部,探頭進入鉆孔的深度可通過間接測量進入鉆孔內(nèi)部的電纜長度進行測量.儀器中將深度計數(shù)器和滾輪相結(jié)合,輸送電纜時通過計數(shù)器滾輪連接即可實現(xiàn)對鉆孔深度的測量;主機包括嵌入式OMAP4460 模塊[11]、顯示模塊、深度采集模塊和電源模塊,搭載Android 系統(tǒng)實現(xiàn)采集的軌跡數(shù)據(jù)和圖像數(shù)據(jù)井下及時處理;探頭由電子羅盤、攝像模組和光源組成,電子羅盤用于測量包含方位角、傾角、工具面向角參數(shù)的姿態(tài)信息,攝像模組記錄鉆孔的圖像和視頻信息;探頭測量的姿態(tài)信息和圖形、視頻信息通過特制的電纜傳輸主機進行處理和存儲.該儀器具有體積小、重量輕、功耗低以及便攜性強等優(yōu)點.
CXK12 礦用本安型鉆孔成像儀進行一次測量后包含的數(shù)據(jù):鉆孔軌跡測量數(shù)據(jù)、鉆孔錄制視頻數(shù)據(jù)、鉆孔視頻展開圖片元數(shù)據(jù)3 部分.
(1)鉆孔軌跡測量數(shù)據(jù),該數(shù)據(jù)的保存格式為TXT 格式(文本文件),數(shù)據(jù)按照FileStream(文件流)寫入,寫入順序:序號、深度、傾角、方位角、工具面向角,每輸出一組上述姿態(tài)信息后加一個回車換行符,重復(fù)上述寫入方式直到結(jié)束.
(2)鉆孔視頻展開圖片元數(shù)據(jù),該數(shù)據(jù)為一系列PNG 格式圖片的組合,每個圖片的命名規(guī)則為初始展開鉆孔深度數(shù)據(jù)和結(jié)束展開鉆孔深度數(shù)據(jù)的組合,中間加“_”組成,類似“0.5_0.9”的組合,0.5 和0.9 嚴(yán)格對應(yīng)(1)中0.5 米和0.9 米出的鉆孔軌跡測量數(shù)據(jù)(方位角、傾角、工具面向角).
(3)鉆孔錄制視頻數(shù)據(jù),該視頻為通用的視頻格式,常見的視頻播放器可以打開,本文所述的軟件不做處理.
軟件架構(gòu)設(shè)計遵從軟件工程的設(shè)計理念,采用自頂向下的分層設(shè)計策略,根據(jù)成像儀數(shù)據(jù)處理涉及的相關(guān)數(shù)據(jù)和客戶方的實際需求導(dǎo)向,在軟件需求層次化劃分的基礎(chǔ)上對軟件功能進行模塊化的細分,各業(yè)務(wù)模塊遵從“高耦合、低內(nèi)聚”的原則.最終設(shè)計的軟件總體架構(gòu)包括:數(shù)據(jù)庫、數(shù)據(jù)管理模塊、圖形繪制模塊、數(shù)據(jù)處理模塊和柱狀圖5大模塊,如圖2所示.
圖2 軟件功能框架
每個功能模塊根據(jù)業(yè)務(wù)需求和業(yè)務(wù)類別細分為不同的細分子功能.
為了便于礦方進行數(shù)據(jù)管理和生產(chǎn)報告編制,CXK12礦用本安型鉆孔成像儀測量的鉆孔軌跡測量數(shù)據(jù)和鉆孔視頻展開圖片元數(shù)據(jù)設(shè)計采用SQLite 數(shù)據(jù)庫作為數(shù)據(jù)存儲載體.
SQLite 是一款輕型的遵守ACID 的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),開源免費與支持嵌入式,它占用資源非常的低,支持多數(shù)SQL92 標(biāo)準(zhǔn):多數(shù)據(jù)表、事務(wù)、索引、觸發(fā)、視圖及一系列應(yīng)用程序接口,其所有信息包含在一個文件內(nèi),核心引擎不依賴第三方軟件,直接編譯鏈接后即可使用[12].
分析1.2 節(jié)中鉆孔成像儀數(shù)據(jù)源并結(jié)合SQLite 語法的基礎(chǔ)上,每個鉆場設(shè)計一個DataTable,數(shù)據(jù)字段設(shè)計如表1所示.
表1 數(shù)據(jù)庫字段設(shè)計
SQLite 中存取圖片采用MemoryStream 的方式,保存和讀取圖片的關(guān)鍵代碼如下:
//保存圖片
SQLiteParameter myPara=new SQLiteParameter("@myPic",DbType.Binary);
MemoryStream myStr=new MemoryStream();
byte[] byData=new Byte[myStr.Length];
myStr.Position=0;
myStr.Read(byData,0,byData.Length);
myPara.Value=byData;
myStr.Close();
//讀取圖片
MemoryStream myStr=new MemoryStream(sqlReader["myPic"] as byte[]);
myStr.Close();
軟件采用微軟Visual Studio 2013 集成開發(fā)環(huán)境Winform 架構(gòu)C#語言開發(fā),編譯依賴項為.NET Framework 4.5.1,SQLite 版本為:sqlite-netFx451-setupbundle-x86-2013-1.0.110.0,設(shè)計完成的軟件功能實現(xiàn)如下:
(1)數(shù)據(jù)管理模塊,實現(xiàn)了Txt 數(shù)據(jù)文件導(dǎo)入、XML(eXtensible Markup Language)數(shù)據(jù)文件導(dǎo)入、Excel 數(shù)據(jù)文件導(dǎo)入、Excel 導(dǎo)出和數(shù)據(jù)錄入功能,如圖3所示.其中Txt 格式數(shù)據(jù)為西安院成像儀姿態(tài)信息,采用System.IO 下的Stream 流同步方式讀取;XML 格式數(shù)據(jù)和Excel 格式數(shù)據(jù)為其他廠家的數(shù)據(jù)(按照約定的數(shù)據(jù)格式導(dǎo)入軟件),XML 格式數(shù)據(jù)采用System.Xml下的XmlDocument 實現(xiàn)數(shù)據(jù)讀取和寫入,Excel 格式數(shù)據(jù)采用COM 組件Microsoft.Office.Interop.Excel 進行讀取和寫入;數(shù)據(jù)錄入為把導(dǎo)入的姿態(tài)信息、經(jīng)過重新計算的偏差信息、圖片源數(shù)據(jù)導(dǎo)入到SQLite 數(shù)據(jù)庫中,如3.1 節(jié)中所述.
圖3 數(shù)據(jù)管理界面
(2)數(shù)據(jù)處理模塊,實現(xiàn)了地磁偏角設(shè)置、開孔參數(shù)設(shè)置(設(shè)計開孔傾角和方位角)、軌跡計算和坐標(biāo)轉(zhuǎn)化功能.地磁偏角設(shè)置當(dāng)?shù)氐牡卮牌钣糜阢@孔軌跡計算,以便把基于磁方位角的鉆孔偏差轉(zhuǎn)化到基于地理方位角的鉆孔偏差,便于礦方把生成的偏差信息加載到礦區(qū)地質(zhì)圖.軌跡計算公式如下:
式中,θi、θi?1分別為當(dāng)前測量點和上一次測量點的傾角:αi、αi?1別為當(dāng)前測量點和上一次測量點的方位角;Ai為當(dāng)前測量點的測量深度;Ai?1為上一次測量點的測量深度;Xn為 當(dāng)前測點在X 軸上的累計投影長度;Yn為當(dāng)前測點的累計左右偏差;Zn為當(dāng)前測點的累計上下偏差[13];開孔參數(shù)設(shè)置鉆孔的開孔傾角和方位角,根據(jù)開孔參數(shù)可以計算出設(shè)計軌跡和實際測量軌跡的偏離距離,如圖4中的顯示效果.
圖4 圖形繪制界面
(3)圖形繪制模塊,實現(xiàn)了鉆孔軌跡圖的二維和三維繪制及相關(guān)的操作,生成的二維圖和三維圖如圖4(a)和圖4(b)所示.
二維圖采用Visual Studio 2013 自帶的MSchart 組件繪制,添加兩個Series 分別表示設(shè)計軌跡和實際軌跡,Chart Type 設(shè)計為Line.圖4(a)上下兩幅圖分別表示水平面圖和剖面圖,其中曲線表示實際鉆孔軌跡,而直線表示設(shè)計鉆孔軌跡,二維軌跡圖右上角紅色字為設(shè)計軌跡和實際軌跡的偏離距離.
三維圖繪制采用OpenTK(OpenGL 圖形庫的C#封裝庫)圖形庫繪制,關(guān)鍵繪圖代碼片段實現(xiàn)如下:
GL.BlendFunc (BlendingFactorSrc.SrcAlpha,BlendingFactorDest.OneMinusSrcAlpha);
GL.Enable (EnableCap.LineSmooth);
GL.Hint (HintTarget.LineSmoothHint,HintMode.Nicest);
GL.Begin (PrimitiveType.LineStrip);
GL.Enable (EnableCap.DepthTest);
GL.Enable (EnableCap.Blend);
GL.Clear (ClearBufferMask.ColorBufferBit |ClearBufferMask.DepthBufferBit);
Vector3 vec=new Vector3();
vec.X=yy+y_fact * float.Parse (zy[i].ToString());
vec.Y=xx+x_fact * float.Parse (sd[i].ToString());
vec.Z=zz+z_fact * float.Parse (sx[i].ToString());
GL.Vertex3 (list[i]);
其中,Vector3 表示OpenTK 語法中的三維向量,包含X、Y、Z 3 個坐標(biāo);GL.Vertex3 直線繪制語句.
(4)柱狀圖模塊,實現(xiàn)了圖形文件瀏覽、生成柱狀圖、圖形放大和縮小、取消縮放圖形和圖形導(dǎo)出等功能.柱狀圖的生成按照1.2 中數(shù)據(jù)源的分析進行解析,對于數(shù)據(jù)源中的每張圖片進行邊界特征點的提取,根據(jù)生成的特征描述符進行特征匹配,然后采用加權(quán)平滑算法解決了圖片拼接時縫隙問題(算法的優(yōu)化和平滑系數(shù)的選擇決定了拼接的質(zhì)量),最后對所有完成拼接的圖片進行圖像邊界融合和鉆孔深度匹配[14-16],圖5中縱坐標(biāo)表示鉆孔深度(向下遞增,單位:米),橫坐標(biāo)E、N、S、W、E 表示圓形柱狀圖的展開方向:東、北、南、西、東.
圖5 柱狀圖界面
該軟件開發(fā)完成后,利用CXK12 礦用本安型鉆孔成像儀進行了室內(nèi)模擬鉆孔測量驗證(直徑55 mm 的PVC 管道)、禾草溝煤礦水文觀測鉆孔、榆林某在建煤礦掉鉆鉆孔打撈作業(yè)觀察、陽煤集團某礦巖性觀察等大量的室內(nèi)外測量、處理驗證.典型的應(yīng)用如禾草溝煤礦水文觀測鉆孔,該鉆孔為地面垂直鉆孔,手工下放鎧裝線纜的方式進行測量,每隔0.5 m 測量一次,總測量鉆孔深度64 m.測量數(shù)據(jù)導(dǎo)入文章中開發(fā)的軟件后生成的鉆孔柱狀圖如圖6所示.
圖6 實際柱狀圖界面
從圖6可以明顯看出巖層的分界線和孔壁的裂縫,圖像中拼接縫處有黑色的分界線但不影響鉆孔的觀察效果.鉆孔柱狀圖的實時無縫拼接也是下一步的研究重點.
(1)文章在詳細分析鉆孔成像儀數(shù)據(jù)源的基礎(chǔ)上,從軟件工程的思路出發(fā),給出了軟件的整體架構(gòu)設(shè)計;
(2)基于Visual Studio+SQLite 設(shè)計了兼容多款鉆孔成像儀的軌跡顯示軟件,并詳細介紹了鉆孔姿態(tài)數(shù)據(jù)和圖形數(shù)據(jù)的多源數(shù)據(jù)管理,鉆孔軌跡二維、三維圖生成和圖形操作,鉆孔柱狀圖的生成和操作等功能的詳細實現(xiàn)流程和關(guān)鍵代碼;
(3)大量的室內(nèi)模擬試驗和礦井實際應(yīng)用表明,該軟件功能設(shè)計合理、操作簡單明了、處理速度塊,作為幾款成像儀的配套軟件已服務(wù)于國內(nèi)多個礦井,取得了一定的應(yīng)用效果.