张 磊,李昊勃,刘天宇,全 馨,樊冬艳,孙 海,付帅师,杨永飞
基于C#语言的数字岩心数值实验演示系统
张 磊1,李昊勃2,刘天宇2,全 馨2,樊冬艳1,孙 海1,付帅师1,杨永飞1
(1. 中国石油大学(华东) 石油工程学院,山东 青岛 266580;2. 中国石油大学(华东) 储运与建筑工程学院,山东 青岛 266580)
基于Visual Studio集成开发环境和C#语言,开发了数字岩心数值实验演示系统。该系统具有数字岩心扫描图像的输入输出、二值化处理、分形分析、孔径分布统计、数据保存等功能。系统的软件设计采用大量类实现,在具体功能实现上只需调用相应类方法,便于系统功能的增加和扩展。数字岩心图像的二值化采用Otsu算法以及改进的分形算法,可根据阈值进行二值化处理,通过调整二值化阈值观察数字岩心的孔径分布曲线的变化。进行二值化处理和边缘识别后的图像与原图并列显示以进行比较,通过调整二值化阈值观察孔径的变化。
数字岩心;实验教学;演示实验;C#语言
岩石物性是“油层物理”课程中非常重要的内容,岩石的很多物理属性(如渗透率、孔隙度、毛管力等)均取决于它的微观结构和流体的性质,其中岩石的微观结构是基础。研究岩石的微观结构至关重要。
数字岩心[1]是通过CT扫描等技术得到的油藏储层岩心样品的数字化图像。在数字岩心技术出现以前,岩石的物理属性参数通常由实验室物理实验得到,岩心内部结构是一个“黑箱”。数字岩心技术成功地把“黑箱”变为“白箱”,基于数字岩心的计算机模拟技术从而替代常规物理实验,成为研究岩石物性的一种新技术。笔者基于Visual Studio集成开发环境,采用C#语言[2]设计开发了数字岩心数值实验演示系统,并将该系统应用于教学中,可以直观地展示不同处理算法的效果,方便进行对比分析,加深学生对岩石孔隙结构的认识,增加学习的趣味性。该系统采用类设计,学生可以在此基础上进行功能扩展,进行创新项目的探索,提高创新能力。
数字岩心技术的关键是借助于计算机图像处理技术[3],对岩石的扫描图像进行处理,分析其微观孔隙结构特征,获取反映孔隙空间分布、连通性等的重要信息。在这一个过程中,涉及一系列的数字岩心扫描图像的处理过程。基于Visual Studio集成开发环境,采用C#语言编程,能够使开发人员准确、高效地编写代码,并且不会丢失当前的文件上下文,可以轻松地放大到详细信息,例如调用结构、相关函数、签入和测试状态,还可以方便地进行重构、识别和修复代码。.NET框架为C#提供了一个强大、易用、逻辑结构一致的设计环境。
数字岩心数值实验演示系统包括数字岩心图像的读入、二值化处理(自动化处理和手动处理、分形自动处理)、数据转化、分形参数分析、孔隙尺寸分析和结果保存等主要功能,并从数字岩心角度分为二维、三维数字岩心的数值实验。
数字岩心数值实验演示系统的用户界面如图1所示。根据数字岩心对象不同,该系统分为不同标签页,每一个标签页的数据相互独立,每个标签页左侧为功能按钮,右侧上方为原始图像和处理结果的对比展示,右侧下方为图像数据信息以及相关曲线的展示。
图1 系统操作界面
软件设计采用数据类的处理方式,通过按钮是否可用来实现数字岩心图像处理的流程控制。每个标签页中的数据虽然相互独立,但由于采用了数据类的处理,相同的功能不存在代码的重复,都是通过实例化同一个类,然后调用其中的成员函数来实现。
由于不同的功能之间存在先后关系,例如只有当完成了二值化处理以后才能进行图像的导出或者数据的存储,因此在软件设计中通过控件的Enable属性来控制每个功能的可用性,而且在每一个功能执行完成后,重新刷新每一个按钮控件的Enable属性,根据不同功能之间的先后关系,确定按钮是否可用,从而保证数字岩心数值实验演示系统的稳健性。
根据功能划分,数字岩心数值实验演示系统分为输入模块、数值实验模块、分析模块、曲线模块和输出功能模块,各模块的功能如图2所示。输入模块包括读原始图像和优化参数的输入;数值实验模块包括二值化处理的3种方法和边缘提取;分析模块包括分形维数、孔隙尺寸、迂曲度和孔隙度的分析;曲线模块包括灰度和孔隙尺寸分布统计曲线;输出功能包括数据、图像和曲线的存储。
数字岩心扫描图像一般为灰度图像,像素点的灰度值范围为0—255,二值化处理过程就是选择合适的灰度值(阈值),将图像像素灰度值根据大于或者小于该阈值,分成孔隙和骨架两类。由于岩石的非均质性和仪器扫描时受到光线强弱等因素影响,得到的岩石扫描图像会存在一些误差。数字岩心的二值化处理是数字岩心模拟中一个最基础的过程,因此对扫描图像进行合理、正确的分割至关重要。
图2 数字岩心数值实验岩石系统功能框架图
分割算法有迭代法[4]、简单统计法[5]、Otsu方法[6]以及改进的Otsu算法[7-8],本演示系统涉及的算法为Otsu方法和基于Otsu算法改进的分形分割算法[8]。其中二值化手动处理方法即给定某一阈值进行分割,本文不再赘述。
Otsu方法是学者Otsu于1979年提出的最大类间方差法。该方法将像素点按灰度值分割成两组,一组灰度对应孔隙,另一组灰度对应骨架,目标是使两组灰度值的类内方差最小、类间方差最大;而方差值越大,说明构成图像的两部分差别越大。
分形分割算法把Otsu方法和分形理论结合起来,通过分析岩心孔隙结构的分形特征[9-10]改进目标函数,有效提高CT图像分割的准确性。假设以某阈值对数字岩心扫描图像进行分割,通过统计孔隙数量可以得到孔隙度(),通过分析得到最大孔隙尺寸和最小孔隙尺寸分别为max和min,则有孔隙度p和孔隙尺寸分形维数f以及最大、最小孔隙尺寸的关系[11]为
式中:e为欧式维数,对于二维和三维空间分别为e=2和e=3;f是分形维数。对于二维空间,1 结合Otsu算法的目标函数(),定义新目标函数(): 遍历所有灰度值,当目标函数达到最大值时,所对应的灰度值即为分割阈值。 数字岩心数值实验演示系统采用计盒维数法[12-13]计算数字岩心孔隙或者骨架的分形维数。分形维数的计算在二值化处理完成以后的黑白图像的基础上进行,具体计算步骤如下: (1)取边长为2个像素点的正方形边框覆盖二值图像,统计覆盖到黑色像素点的盒子数(); (2)边长依次选取4、6、8个像素点,直到边长等于图像宽度的一半,统计对应边长下的盒子数; (3)利用最小二乘法线性拟合lg和lg(),拟合所得直线的斜率记为分形维数。 以人造岩心为例进行展示。图3为岩心经过CT扫描后得到的灰度图像。从图像上可以看到岩心中存在不同尺寸的颗粒以及胶结物;图4为数字岩心扫描图像灰度分布图,可以看出图像具有明显的双峰分布,说明图像中孔隙(黑色)和骨架(白色)的区分还是比较明显的。 采用Otsu算法和改进的分形算法分别进行二值化处理,处理结果如图5所示。可以看到:改进的分形算法处理结果更接近真实情况,能够准确地分辨出数字岩心图像中的固体颗粒。在此基础上,可以对岩心进行孔隙尺寸分析。图6为岩石的孔隙尺寸分布曲线图,可以看出,岩石孔隙主要宽度为5个像素。 图3 数字岩心原始扫描图像 图4 原始图像灰度分布图 图5 二值化处理结果 图6 孔隙分布曲线结果 通过参数分析结果,可以得到处理过程中的所有参数设置,以及通过数字岩心分析得到的岩石物性参数,从而进一步了解岩石的物理性质。 基于Visual Studio集成开发环境开发的数字岩心数值实验演示系统,实现了输入功能、数值实验、分析功能和输出功能等,具有良好的用户交互界面,方便对数字岩心的扫描图像进行二值化处理、分形分析等一系列操作,最终得到岩心的孔隙度、孔径分布等物理属性,对处理结果图像和相关曲线进行了实时显示。该系统在油层物理岩石物理属性的教学中达到了以下教学目的: (1)掌握数字岩心扫描图像二值化处理的基本原理和方法,原始图像和结果图像的实时对比演示展现了不同算法的实际效果,同时给出孔隙度等参数,使学生对算法和岩石的基本性质加深理解; (2)通过对处理结果图像的分析,给出孔隙半径分布曲线,有助于加深对岩石孔隙结构的认识 (3)通过对二值化图像的分形分析,使学生对岩石孔隙结构的分形特征有更深入了解。 将该演示系统应用于油层物理的课程教学和实验教学中,对学生深入理解基础理论知识和掌握相应的实验方法有积极的作用,可以激发学生的科研兴趣和创新意识,提高学生的创新能力。目前,在此教学演示系统的基础上,已培养我校校级大学生创新项目两项,取得了较好的实验教学效果。 [1] 姚军,赵秀才.数字岩心及孔隙级渗流模拟理论[M].北京:石油工业出版社,2010. [2] 匡松,张淮鑫. C#开发宝典[M].北京:中国铁道出版社,2010. [3] 冈萨雷斯.数字图像处理[M].北京:电子工业出版社,2011: 62–190. [4] PEREZ A, GONZALEZ R C. An iterative thresholding algorithm for image segmentation[J]. IEEE transactions on pattern analysis and machine intelligence, 1987, 9(6): 742–751. [5] KITTLER J, ILLING W J, FOGLEIN J. Threshold selection based on a simple image static[J]. Computer Vision, Graphics and Image Procession, 1985, 30: 125–147. [6] OTSU N. A threshold selection method from gray-level histogram[J]. IEEE Trans, 1979, 9(1): 62–66. [7] 赵秀才,姚军,房克荣.合理分割岩心微观结构图像的新方法[J].中国石油大学学报(自然科学版),2009, 33(1): 64–67, 72. [8] 张磊,姚军,王锋,等.考虑分形特征的岩心扫描图像合理分割方法[J].科学技术与工程,2015, 15(24): 57–60. [9] 赵明,郁伯铭.数字岩心孔隙结构的分形表征及渗透率预测[J].重庆大学学报,2011, 34(4): 88–94. [10] 郁伯铭.多孔介质输运性质的分形分析研究进展[J].力学进展,2003, 33(3): 333–346. [11] YU Boming, LI Jianhua. Some Fractal Characters of Porous Media[J]. Fractals, 2001, 9(3): 365–372. [12] 张怀亮,孙栓辉,刘舜尧.数字分形图像分形维数计算[J].计算机仿真,2010, 27(10): 215–217, 254. [13] 彭瑞东,杨彦从,鞠杨,等.基于灰度CT图像的岩石孔隙分形维数计算[J].科学通报,2011, 56(26): 2256–2266. Demonstration system of digital core numerical experiment based on C# language ZHANG Lei1, LI Haobo2, LIU Tianyu2, QUAN Xin2, FAN Dongyan1, SUN Hai1, FU Shuaishi1, YANG Yongfei1 (1. School of Petroleum Engineering, China University of Petroleum, Qingdao 266580, China; 2. College of Storage, Transportation and Architectural Engineering, China University of Petroleum, Qingdao 266580, China) Based on the Visual Studio integrated development environment and C# language, a demonstration system of the digital core numerical experiment is developed. This system realizes the functions of the input and output, binary processing, fractal analysis, pore size distribution statistics, data preservation of digital core scanning image, etc. This system uses a large number of class realizations in software design and only calls the corresponding class methods in the realization of the specific function, which is convenient for the increase and expansion of system functions. The Otsu algorithm and improved fractal algorithm are used for binarization of digital core image. According to the threshold value, binarization can be carried out, and the change of pore size distribution curve of digital core can be observed by adjusting the threshold value. The image after binarization and edge recognition is displayed side by side with the original image for comparison. digital core; experimental teaching; demonstration experiment; C# language TE319 A 1002-4956(2019)10-0127-04 10.16791/j.cnki.sjg.2019.10.030 2019-03-18 国家自然科学基金面上项目(51674280);中央高校基本科研业务费专项资金项目(18CX02031A);中国石油大学(华东)教学改革项目(QN201706,JY-B201812);山东省本科教改项目重点项目(Z2018B118),山东省高等学校教学改革立项项目(B2016M008) 张磊(1984—),男,山东滨州,博士,讲师,主要研究方向为数字岩心技术及微观流动模拟。E-mail: zhlei84@163.com2.3 分形维数计算原理
2.4 结果演示
3 结语