雷曉榮
(中煤科工集團西安研究院有限公司,西安 710054)
鉆孔成像技術是一種利用光學成像原理的成像測井技術,經過多年的發展,該種技術由最初以觀察為主的鉆孔照相和鉆孔攝像(鉆孔電視),發展成為結合視頻采集和圖像處理的綜合式全景攝像系統,提前觀測以及了解煤礦井下地質條件能夠有效掌握煤礦井下巷道的圍巖、工作面的斷層構造以及上覆巖層導水裂隙帶等地質情況,對巷道的支護設計、巷道修復和圍巖注漿加固等工作提供真實且有效數據支持[1-10].早期的鉆孔成像儀只有攝像頭模塊,近兩年加入了鉆孔軌跡測量模塊和深度計數模塊,對地面軌跡顯示和處理軟件提出了新的要求:把精確的深度信息、測量點的鉆孔偏差信息、鉆孔璧圖像信息的深度融合并借助數據庫管理并兼容多種儀器成為主要的研究方向.
文章借助軟件工程的設計理念,給出了軟件的總體架構設計框圖,并基于Visual Studio+SQLite 技術實現了礦井鉆孔成像儀軌跡顯示軟件.
CXK12 礦用本安型鉆孔成像儀由CXK12-Z 礦用本安型鉆孔成像儀主機、CXK-5S 礦用本安型鉆孔深度計數器、CXK-26T 礦用本安型鉆孔成像儀探頭、CXK-42T 礦用本安型鉆孔成像儀探頭、煤礦用聚乙烯絕緣編織屏蔽聚氯乙烯護套通信軟電纜、聚乙烯絕緣銅網屏蔽聚氨酯護套綜合抗拉電纜組成,總體組成框架如圖1所示.

圖1 成像儀組成框架
圖1中,深度計數器的核心是光電編碼器.測量時探頭通過電纜送入鉆孔內部,探頭進入鉆孔的深度可通過間接測量進入鉆孔內部的電纜長度進行測量.儀器中將深度計數器和滾輪相結合,輸送電纜時通過計數器滾輪連接即可實現對鉆孔深度的測量;主機包括嵌入式OMAP4460 模塊[11]、顯示模塊、深度采集模塊和電源模塊,搭載Android 系統實現采集的軌跡數據和圖像數據井下及時處理;探頭由電子羅盤、攝像模組和光源組成,電子羅盤用于測量包含方位角、傾角、工具面向角參數的姿態信息,攝像模組記錄鉆孔的圖像和視頻信息;探頭測量的姿態信息和圖形、視頻信息通過特制的電纜傳輸主機進行處理和存儲.該儀器具有體積小、重量輕、功耗低以及便攜性強等優點.
CXK12 礦用本安型鉆孔成像儀進行一次測量后包含的數據:鉆孔軌跡測量數據、鉆孔錄制視頻數據、鉆孔視頻展開圖片元數據3 部分.
(1)鉆孔軌跡測量數據,該數據的保存格式為TXT 格式(文本文件),數據按照FileStream(文件流)寫入,寫入順序:序號、深度、傾角、方位角、工具面向角,每輸出一組上述姿態信息后加一個回車換行符,重復上述寫入方式直到結束.
(2)鉆孔視頻展開圖片元數據,該數據為一系列PNG 格式圖片的組合,每個圖片的命名規則為初始展開鉆孔深度數據和結束展開鉆孔深度數據的組合,中間加“_”組成,類似“0.5_0.9”的組合,0.5 和0.9 嚴格對應(1)中0.5 米和0.9 米出的鉆孔軌跡測量數據(方位角、傾角、工具面向角).
(3)鉆孔錄制視頻數據,該視頻為通用的視頻格式,常見的視頻播放器可以打開,本文所述的軟件不做處理.
軟件架構設計遵從軟件工程的設計理念,采用自頂向下的分層設計策略,根據成像儀數據處理涉及的相關數據和客戶方的實際需求導向,在軟件需求層次化劃分的基礎上對軟件功能進行模塊化的細分,各業務模塊遵從“高耦合、低內聚”的原則.最終設計的軟件總體架構包括:數據庫、數據管理模塊、圖形繪制模塊、數據處理模塊和柱狀圖5大模塊,如圖2所示.

圖2 軟件功能框架
每個功能模塊根據業務需求和業務類別細分為不同的細分子功能.
為了便于礦方進行數據管理和生產報告編制,CXK12礦用本安型鉆孔成像儀測量的鉆孔軌跡測量數據和鉆孔視頻展開圖片元數據設計采用SQLite 數據庫作為數據存儲載體.
SQLite 是一款輕型的遵守ACID 的關系型數據庫管理系統,開源免費與支持嵌入式,它占用資源非常的低,支持多數SQL92 標準:多數據表、事務、索引、觸發、視圖及一系列應用程序接口,其所有信息包含在一個文件內,核心引擎不依賴第三方軟件,直接編譯鏈接后即可使用[12].
分析1.2 節中鉆孔成像儀數據源并結合SQLite 語法的基礎上,每個鉆場設計一個DataTable,數據字段設計如表1所示.

表1 數據庫字段設計
SQLite 中存取圖片采用MemoryStream 的方式,保存和讀取圖片的關鍵代碼如下:
//保存圖片
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 集成開發環境Winform 架構C#語言開發,編譯依賴項為.NET Framework 4.5.1,SQLite 版本為:sqlite-netFx451-setupbundle-x86-2013-1.0.110.0,設計完成的軟件功能實現如下:
(1)數據管理模塊,實現了Txt 數據文件導入、XML(eXtensible Markup Language)數據文件導入、Excel 數據文件導入、Excel 導出和數據錄入功能,如圖3所示.其中Txt 格式數據為西安院成像儀姿態信息,采用System.IO 下的Stream 流同步方式讀取;XML 格式數據和Excel 格式數據為其他廠家的數據(按照約定的數據格式導入軟件),XML 格式數據采用System.Xml下的XmlDocument 實現數據讀取和寫入,Excel 格式數據采用COM 組件Microsoft.Office.Interop.Excel 進行讀取和寫入;數據錄入為把導入的姿態信息、經過重新計算的偏差信息、圖片源數據導入到SQLite 數據庫中,如3.1 節中所述.

圖3 數據管理界面
(2)數據處理模塊,實現了地磁偏角設置、開孔參數設置(設計開孔傾角和方位角)、軌跡計算和坐標轉化功能.地磁偏角設置當地的地磁偏差用于鉆孔軌跡計算,以便把基于磁方位角的鉆孔偏差轉化到基于地理方位角的鉆孔偏差,便于礦方把生成的偏差信息加載到礦區地質圖.軌跡計算公式如下:

式中,θi、θi?1分別為當前測量點和上一次測量點的傾角:αi、αi?1別為當前測量點和上一次測量點的方位角;Ai為當前測量點的測量深度;Ai?1為上一次測量點的測量深度;Xn為 當前測點在X 軸上的累計投影長度;Yn為當前測點的累計左右偏差;Zn為當前測點的累計上下偏差[13];開孔參數設置鉆孔的開孔傾角和方位角,根據開孔參數可以計算出設計軌跡和實際測量軌跡的偏離距離,如圖4中的顯示效果.

圖4 圖形繪制界面
(3)圖形繪制模塊,實現了鉆孔軌跡圖的二維和三維繪制及相關的操作,生成的二維圖和三維圖如圖4(a)和圖4(b)所示.
二維圖采用Visual Studio 2013 自帶的MSchart 組件繪制,添加兩個Series 分別表示設計軌跡和實際軌跡,Chart Type 設計為Line.圖4(a)上下兩幅圖分別表示水平面圖和剖面圖,其中曲線表示實際鉆孔軌跡,而直線表示設計鉆孔軌跡,二維軌跡圖右上角紅色字為設計軌跡和實際軌跡的偏離距離.
三維圖繪制采用OpenTK(OpenGL 圖形庫的C#封裝庫)圖形庫繪制,關鍵繪圖代碼片段實現如下:
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 個坐標;GL.Vertex3 直線繪制語句.
(4)柱狀圖模塊,實現了圖形文件瀏覽、生成柱狀圖、圖形放大和縮小、取消縮放圖形和圖形導出等功能.柱狀圖的生成按照1.2 中數據源的分析進行解析,對于數據源中的每張圖片進行邊界特征點的提取,根據生成的特征描述符進行特征匹配,然后采用加權平滑算法解決了圖片拼接時縫隙問題(算法的優化和平滑系數的選擇決定了拼接的質量),最后對所有完成拼接的圖片進行圖像邊界融合和鉆孔深度匹配[14-16],圖5中縱坐標表示鉆孔深度(向下遞增,單位:米),橫坐標E、N、S、W、E 表示圓形柱狀圖的展開方向:東、北、南、西、東.

圖5 柱狀圖界面
該軟件開發完成后,利用CXK12 礦用本安型鉆孔成像儀進行了室內模擬鉆孔測量驗證(直徑55 mm 的PVC 管道)、禾草溝煤礦水文觀測鉆孔、榆林某在建煤礦掉鉆鉆孔打撈作業觀察、陽煤集團某礦巖性觀察等大量的室內外測量、處理驗證.典型的應用如禾草溝煤礦水文觀測鉆孔,該鉆孔為地面垂直鉆孔,手工下放鎧裝線纜的方式進行測量,每隔0.5 m 測量一次,總測量鉆孔深度64 m.測量數據導入文章中開發的軟件后生成的鉆孔柱狀圖如圖6所示.

圖6 實際柱狀圖界面
從圖6可以明顯看出巖層的分界線和孔壁的裂縫,圖像中拼接縫處有黑色的分界線但不影響鉆孔的觀察效果.鉆孔柱狀圖的實時無縫拼接也是下一步的研究重點.
(1)文章在詳細分析鉆孔成像儀數據源的基礎上,從軟件工程的思路出發,給出了軟件的整體架構設計;
(2)基于Visual Studio+SQLite 設計了兼容多款鉆孔成像儀的軌跡顯示軟件,并詳細介紹了鉆孔姿態數據和圖形數據的多源數據管理,鉆孔軌跡二維、三維圖生成和圖形操作,鉆孔柱狀圖的生成和操作等功能的詳細實現流程和關鍵代碼;
(3)大量的室內模擬試驗和礦井實際應用表明,該軟件功能設計合理、操作簡單明了、處理速度塊,作為幾款成像儀的配套軟件已服務于國內多個礦井,取得了一定的應用效果.