金田



摘要:巖心圖像是指地殼中的沉積巖層在地殼運動的影響下,改變了原有形狀,使原來水平巖層結構變成了各種各樣的彎曲形狀。在巖層中沿斷面而未出現明顯的相對位移的斷層結構稱為裂縫,可以成為石油儲藏空間和石油運移的主要通路。由于信息能量的匱乏,油田的勘查與開發將顯得越來越關鍵,對測井巖心裂縫的深入研究也將成為今后石油勘探與開發中的重點課題,但傳統巖心裂縫計算的方式,大多是靠人工觀測數據計算得到的,因此其計算往往偏差很大。該文目的是研究針對巖心圖像中裂縫目標特征的自動提取的算法,把圖片分割為若干個互不交叉的區域,將帶有高度一致性和相似性的特征分配到同一個地方,并在不同區域間體現出顯著的區別。
關鍵詞:油氣開采;巖心圖像;裂縫計算;模型實現
中圖分類號:TP391? ? ? 文獻標識碼:A
文章編號:1009-3044(2022)15-0055-03
1 引言
隨著能源的稀缺,油田的勘探和開采將變得日益重要,裂縫性儲集層是火山巖、變質巖、碳酸鹽巖中最發育的,而裂縫在儲集空間中一般處于次要地位,但其對儲集層滲透率的貢獻普遍高達90%甚至99%以上[1]。因此對巖心裂縫的研究將成為今后油氣勘探和開采的重要課題,而傳統巖心裂縫計算的方法,主要是靠人工觀察統計計算獲取的, 其計算結果往往誤差較大,因此在圖像領域中,研究針對巖心圖像中裂縫目標的自動提取算法具有重要意義[1-2]。本文對巖心圖像中的裂縫計算模型進行研究,并開發巖心圖像裂縫檢測系統。
2 巖心圖像裂縫計算模型過程論述
2.1 可行性分析
巖心圖像裂縫計算模型的核心功能是對巖心圖像的處理,最終能夠較為準確地識別出裂縫的信息。從當前的技術水平上來看完全擁有較為成熟的技術來完成此功能,本系統可以結合當前已有的技術加上自身選擇算法來進一步優化,使得此計算模型系統完全能夠順利完成。
巖心圖像裂縫計算模型的功能性需求包括:巖心圖像導入、巖心圖像處理、巖心圖像裂縫計算報表導出等功能。
因此,巖心圖像裂縫計算模型應該具有的功能如下:
①能夠方便簡潔的導入圖像并處理圖像,并將每一步的圖像處理結果展示出來。
②通過點擊導出按鈕可以直接將巖心圖像裂縫計算報表導出。
2.2 數據流圖
巖心圖像裂縫計算模型的應用邏輯較為簡單,其中包含的數據交互信息較為清晰,檢測人需要首先選擇原圖(巖心圖像)導入系統中,然后依照次序進行圖像的多次處理,最終可以得到裂縫檢測計算結果圖和對應的裂縫信息,我們需要將裂縫信息傳給導出模塊,將這些裂縫信息在表格中展示出來即可。巖心圖像裂縫計算模型的數據流圖如圖1所示:
2.3巖心圖像處理
對巖心圖像進行粗處理要求將3通道的巖心圖像轉為單通道的灰色圖像,同時還要對背景色進行處理,將亮度不一致的背景色閾值二值化到較灰的色調上保證背景色像素相近,好方便下面的處理;再進行對比度增強,通過提升巖心圖像的背景、邊緣、裂縫等黑色域的對比度,使得待檢測的裂縫變得更加突出,為之后的裂縫檢測計算提升準確性[3-4]。故對巖心圖像粗處理的目的如下。
1)灰度化
2)閾值二值化,將灰度圖像的背景色調統一,減少背景帶來的不必要的干擾
3)提升對比度
對巖心圖像細處理過程,要求將較為明顯的裂縫展現出來。可以先通過Canny邊緣檢測來檢測出裂縫部分,同時也會檢測出圖像輪廓、孔洞等干擾對象;然后利用形態學變換將檢測出的對象突出,并消除模糊的小干擾部分[5-6]。巖心圖像細處理的目的如下。
1)邊緣檢測,獲取所有的邊緣部分,包含裂縫、輪廓、孔洞等;
2)形態學變換(去噪)將檢測出的邊緣增強白色域,同時減少干擾。
2.4 巖心圖像裂縫檢測
巖心圖像裂縫檢測是整個算法的核心部分,通過連通白色域,將巖心圖像中的所有的白色待檢測部分識別出來,然后利用minAreaRect和boundingRect函數來判斷連通域的長度和寬度,當連通域的長度和長寬比達到要求的時候就可以認定此連通域是裂縫,否則為干擾對象抹除即可。巖心圖像裂縫檢測的目的如下。
1)獲取連通域,連通域中包含裂縫和干擾對象,只有得到連通域才能進行下一步的檢測;
2)裂縫邊緣檢測,利用OpenCV的庫函數來檢測符合要求的對象,并將干擾對象抹除。
2.5 巖心圖像裂縫實現
本系統將通過調用某些通用算法對圖像進行復雜處理,使得巖心圖像中的裂縫更加容易被識別檢測。其中使用到的算法如下:
1)threshold閾值二值化
將圖像上的像素點的灰度值設置為指定值是圖像閾值化,也就是將整個圖像呈現出明顯的視覺效果。其中使用到的THRESH_TRUNC是保證大于threshold閾值的像素點始終等于該閾值,進而消除了背景色差帶來的亮暗的影響,保證了背景的色調一致性。THRESH_TRUNC的實現原理如圖2所示:
2)Canny邊緣檢測
Canny算法的目的在于達到三個主要標準:良好的定位、最小響應、低錯誤率[7]。
Canny的實現分為以下幾步:
第一步,濾掉噪聲,比如高斯濾波。高斯核e = 5 的一個例子可能使用的內容如下矩陣(1)所示:
第二步,計算梯度,我們遵循類似于Sobel的過程。在x和y方向應用一對卷積蒙版矩陣如下(2)(3)所示:
使用以下公式(4)(5)找到梯度強度和方向,方向舍入為四個可能的角度之一(即0、45、90或135)。
第三步,為了掉很多非邊緣的像素點,我們通過nms把非極大值的點的灰度都置為0。8308A0F7-E324-4974-BC57-1A42DF3979B2
第四步,雙閾值檢測和連接邊緣,經過非極大值抑制以后,和真實邊緣相差不大了,但還是有一些由于噪聲或者其他原因造成的假的邊緣。我們通過兩個閾值來做進一步的過濾。
3)dilate膨脹算法
采用特定結構元素并利用dilate()函數對輸入圖像進行膨脹操作,膨脹操作過程中的鄰域形狀由該結構元素決定,對應鄰域上的最大值替代各點像素值。使用的公式如下公式(6):
4)morphologyEx形態學變換
5)利用侵蝕和膨脹等基本操作通過morphologyEx函數來進行高級形態轉換。任何操作都可以實時完成,在多通道圖像的情況下,每個通道都是單獨的。
6)medianBlur中值濾波
通過中值濾波器利用medianBlur函數來平滑(模糊)處理一張圖片,使目標圖像中每個值在ksize矩陣中都是源圖像中對應位置窗口像素的中間值。中值濾波對椒鹽噪聲有很好的抑制作用。
7)BFS算法是最簡便的圖的搜索算法之一,很多圖的算法都是在這一算法上改進優化的。
3 巖心圖像裂縫計算模型過程實現
3.1 總體設計
在巖心圖像裂縫計算模型的總體設計中分為算法模塊設計、客戶端界面模塊設計、PDF導出模塊設計、基礎類模塊設計共4個模塊獨立設計完成。在保證4個模塊功能完成后,進行相應的整合就可以形成一套完整的巖心圖像裂縫計算模型系統。這樣做還有利于之后的系統測試,方便進行各個模塊單獨測試,更加容易找出系統的問題便于改正提升系統。下面將從這4個模塊設計和整合設計進行概括說明。
1)客戶端界面模塊詳細設計
客戶端界面模塊詳細設計分為界面整體設計和面板設計,界面整體設計是為了保證整個客戶端布局和菜單簡單易用,而面板設計是為了展示處理過程中的巖心圖像。在面板設計時,核心是圖片的顯示,這里通過重載JPanel類中paintComponent方法來自動響應圖片顯示事件,通過drawImage方法來繪制上巖心圖像。需要注意的是巖心圖像的大小,由于巖心圖像的大小比例比較大,所以這里顯示的時候必須進行等比例縮放來顯示,不然圖像就顯示不完全。
客戶端界面詳細設計類圖如圖3所示:
2)PDF導出模塊詳細設計
在PDF導出模塊詳細設計中,分為3個部分:PDF水印、PDF頁眉頁腳、PDF主體內容。通過3個部分的分工可以比較明確地得出其意圖,于是可以分為3個類來分別表示這3個部分。在PDF水印部分主要是繼承itext中的PdfPageEventHelper類,然后重載onEndPage方法,在一頁加載完成后,觸發onEndPage方法來使用itext已有的showTextAligned方法來向PDF中添加水印,為了使PDF水印類更加靈活,可以對PDF水印類的構造方法進行設計,將要水印的字符串直接傳遞過來,然后在onEndPage方法中將此字符串水印上即可;在PDF頁眉頁腳部分主要是繼承itext中的PdfPageEventHelper類,由于頁眉頁腳需要考慮總頁數和當前頁數,當前頁數比較容易獲得,而總頁數只有整個PDF加載完畢才能確認,所以這里使用itext提供的策略,在PDF文檔打開時先創建一個模板,等每一頁加載完畢時將這個模板放置上去來代替總頁數,等到PDF全部加載完畢關閉的時候,這時就可以讀取含有的總頁數,然后將總頁數寫入模板,這樣每一頁添加的模板就是總頁數了;在PDF主體內容布局就顯得比較容易了,將主體內容、水印、頁眉頁腳加入document就行了,其中關鍵的是表格的布局,需要保證表格的美觀工整[8]。PDF導出模塊詳細設計類圖如圖4所示:
3)基礎類模塊詳細設計
基礎類模塊就是裂縫信息的封裝,包含裂縫的位置、長度、寬度信息。其基礎類模塊詳細設計類圖如圖5所示:
4)模塊整合詳細設計
模塊整合詳細設計在于每個模塊類圖中公有的成員變量和公用的方法,各個模塊間通過調用其他模塊的公有成員變量或公有方法來實現模塊間整合。詳細設計見以上各個模塊類圖所示。需要注意的是模塊整合過程中需要從客戶端界面模塊出發來做整合,從檢測者的邏輯進行整合更符合操作邏輯,也更加貼合實際的使用。
3.2 模型實現
在巖心圖像裂縫計算模型算法初步實現的過程中,為了方便就直接使用面向過程的開發,并沒有面向對象,這樣可以大大節省時間而提高開發效率。按照設計思想:粗處理、細處理、裂縫檢測的過程進行開發編寫代碼。算法初步實現運行結果如圖6所示:
通過面向對象將算法整合在AlgorithmProcess類中,根據設計的類圖來做詳細實現。在實現的過程中,始終有巖心圖像邊框的干擾,為了消除這個煩擾因素,通過自上而下遍歷和自下而上遍歷消除第一個連通域就比較方便去除巖心圖像邊框的干擾,使結果更具說服力。測試運行結果如圖7所示:
PDF導出結果報表實現如圖8所示:
4 小結
巖心圖像裂縫計算模型系統的各個功能模塊均已通過Java Junit單元測試,通過系統的整體使用,各個功能模塊都能配合完成整套巖心圖像處理檢測和導出,并且系統運行正常。但是巖心圖像處理過程性能還有待加強,檢測并計算裂縫的算法還不夠成熟,會出現一定的誤差,整套系統還有待繼續完善加強。
參考文獻:
[1] 祁昭林.塔中地區碳酸鹽巖儲層裂縫描述與預測研究[D].北京:中國地質大學(北京),2013.
[2] 童亨茂.儲層裂縫描述與預測研究進展[J].新疆石油學院學報,2004(2):1,9-13.
[3] 邵永軍,王小雄,任曉輝,等.基于計算機視覺的橋梁裂縫半自動檢測方法[J].公路交通科技(應用技術版),2019,15(11):176-179.
[4] 劉寧.巖心裂縫圖像分析技術及應用[J].油氣地質與采收率,2010,17(5):17-19,111.
[5] 鄒家喻.基于圖像處理技術的裂縫檢測綜述[J].電子世界,2020(7):21-22.
[6] 李朝輝,蔣宜勤,卿粼波,等.改進相位一致的巖心圖像裂縫提取方法[J].計算機與數字工程,2015,43(4):695-699.
[7] 孫先達,黃其坤,王璞珺.Canny算法在巖心圖像邊緣檢測中應用[J].長江大學學報(自然科學版)理工卷,2009,6(2):268-270.
[8] 王麗萍,秦永平.基于iText的PDF報表設計[J].電腦知識與技術(學術交流),2007,3(8):492-493,574.
【通聯編輯:梁書】8308A0F7-E324-4974-BC57-1A42DF3979B2