matlab处理数字岩心图像,一种用神经网络进行高质量数字岩心图像处理的方法与流程...

matlab处理数字岩心图像,一种用神经网络进行高质量数字岩心图像处理的方法与流程..._第1张图片

所属技术领域

本创发明涉及ct图像处理领域和神经网络领域,特别涉及边缘检测技术和bp神经网络,通过二值图像来研发一种新的边缘检测算子来减小边缘监测图像的误差,从而使bp神经网络预测的边缘图像更加准确。

背景技术:

石油是一种重要的不可再生能源,也是当今世界上重要的战略资源,这体现在日常生活、经济、工业生产乃至军事医学等方方面面,所以石油的开采和利用十分重要。而随着图像处理技术的发展,将岩心ct图像转化成数字图像进行处理,来获得边缘检测图像和建立岩心图像的三维孔道,这更便于观察孔道的内部结构,从而可以更好地指导提高原油采收率的工业实践。

而在利用现有的边缘检测算子所得到的岩心边缘图像中,经常会出现孔洞边缘的0像素点堆叠和断连情况,这对建立三维孔道和观察岩心内部结构都会造成误差,所以研发新的边缘检测算子来减少误差显得十分必要。同时,bp神经网络算法在现如今的科研项目中应用普遍,所以将其用于边缘检测技术可以为数字岩心图像处理技术开辟一条新的道路。

技术实现要素:

针对现有的边缘检测算子所检测的边缘图像会出现的0像素点堆叠和断连情况,本发明会采取一种新边缘检测的算法,来减少边缘检测图像的误差,并结合bp神经网络技术准确的预测岩心孔洞的边缘。

本发明解决传统边缘检测算法存在的问题的技术方法为:

通过micro-ct设备对真实岩心进行扫描获得岩心ct图像;因为我们所得到的岩心ct图片数量很多,如果一张一张进行处理会比较繁琐,而imagej可以对图像批量进行操作,大大的节省了对图像预处理所需要的时间,将所得的岩心ct图像导入imagej图像处理软件中,对原始图像进行一系列的处理,具体的操作包括:利用中值滤波器对原始图像进行降噪处理来较少噪声对图像的影响、设置合适的阈值来准确并明显的将岩石和孔洞区分开来、让1像素值代表岩石0像素值代表孔洞的二值化处理、通过分割来获得获得尺寸得当的二值图像以便排除背景对图像的影响、将各个部分所得的图像以.gif格式保存下来。将上一步所得的二值图像导入matlab中,将图像转化为矩阵,把对图像处理的操作转换为对数字矩阵的操作更便于我们编写程序,利用新的边缘检测算法对图像边缘进行检测,与利用传统边缘检测算子所得的边缘检测图像作细节对比可以看出新的算法会明显的减少孔洞边缘0像素点的堆叠和边缘的断连情况。

将bp神经网络与边缘检测技术现结合的具体步骤为:

在matlab中建立bp神经网络,将二值图像作为训练输入集,分割图像作为训练输出集来对网络进行训练。训练结束后将再将二值图像和二值图像的转置图像分别作为测试集来对分割图像进行预测,得到预测结果后再对预测结果进行运算得到最后的边缘预测图像,再对预测结果进行优化后,与实际预测图像对比可以发现优化后的预测图像对边缘的定位比较准确。分别利用实际分割图像和预测分割图像分别建立三维网格,具体方法是:分别标记每一层像素值为0像素点的坐标值,然后通过描点的方法将孔道一层层的复原出来。通过对比,可以看出通过预测分割图像得到的三维孔道和通过实际分割图像建立的三维孔道十分接近。说明新的边缘检测算子能够很好的还原出岩心ct图像的边缘,并且bp神经网络可以对岩心ct图像的边缘进行效果较好的预测,便于我们观察孔道的内部结构和分析连通性。

附图说明

图1所示为micro-ct扫描所得的岩心ct图像。

图2所示为经过imagej降噪后的图像。

图3所示为阈值设置后的图像。

图4所示为二值化后的图像。

图5所示为切割后的图像。

图6所示为利用canny算子得到的边缘检测图像。

图7所示为利用prewitt算子得到的边缘检测图像。

图8所示为利用roberts算子得到的边缘检测图像。

图9所示为利用sobel算子得到的边缘检测图像。

图10所示为利用新算子得到的边缘检测图像。

图11所示为测试集样本。

图12所示为利用新算子得到测试集的分割图像。

图13所示为利用神经网络预测的分割图像。

图14所示为经过处理的预测分割图像。

图15所示为孔道对比图。

图16为新边缘检测算子的算法流程图。

图17为建立网格算法流程图。

具体实施方式

新边缘检测算子编写的具体步骤:

(1)我们要先确定二值图像中四个角的像素点是否是边缘,之所以要单独进行这一步,是因为四个角的像素点的相邻项只有两个。例如左上角的像素点,与它相邻的项只有两个,它的下相邻项和右相邻项。若该点的像素值为1,它的下相邻项和右相邻项有一个为0,则可标记确定该点为边缘点。同理,我们可以检测出右上角、左下角和右下角是否为边缘点。

(2)确定完四个角是否为边缘后,需要检测二值图像四个边(除去已确定四个角)是否为边缘点。拿图像的顶边举例,我们循环遍历顶边的每一个像素点,并与其相邻三项做对比来确定它是否为边缘点。若该点的像素值为1,并且它的左、右、下相邻项有一个限速值为0,则可确定该点为边缘点。同理,我们可以检测确定出图像左边、右边、底边上的所有边缘点。

(3)在检测确定出图像四个角和四个边的所有边缘点后,其他的像素点均有四个相邻项,我们需要循环遍历剩下所有的像素点,若该像素点的像素值为1,其上、下、左、右四个相邻项的像素值有一个为0,则可检测确定该点为边缘点。

在matlab建立神将网络的步骤为:

(1)创建训练集和测试集。

(2)对训练集和测试集进行数据归一化。

(3)创建bp神经网络。

(4)设置网络的训练参数。

(5)利用创建的训练集训练网络。

(6)对测试集进行训练测试。

(7)对测试结果进行优化对比。

在matlab中建立三维网格的步骤为:

(1)根据图像构建三维立体矩阵。

(2)标记每一层像素值为0点的坐标值。

(3)利用plot3()函数,以描点的方法一层层将三维图像构建出来。

(4)根据需要利用索引修改网格参数。

以上实施方案仅用于说明而非限制本创新型专利的技术方案。不脱离本创新型专利精神的任何修改或局部替换,均应涵盖在本创新型专利的权利要求范围当中。

你可能感兴趣的:(matlab处理数字岩心图像)