金田
摘要:岩心图像是指地壳中的沉积岩层在地壳运动的影响下,改变了原有形状,使原来水平岩层结构变成了各种各样的弯曲形状。在岩层中沿断面而未出现明显的相对位移的断层结构称为裂缝,可以成为石油储藏空间和石油运移的主要通路。由于信息能量的匮乏,油田的勘查与开发将显得越来越关键,对测井岩心裂缝的深入研究也将成为今后石油勘探与开发中的重点课题,但传统岩心裂缝计算的方式,大多是靠人工观测数据计算得到的,因此其计算往往偏差很大。该文目的是研究针对岩心图像中裂缝目标特征的自动提取的算法,把图片分割为若干个互不交叉的区域,将带有高度一致性和相似性的特征分配到同一个地方,并在不同区域间体现出显著的区别。
关键词:油气开采;岩心图像;裂缝计算;模型实现
中图分类号: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