Spark的并行处理技术在岩石薄片图像的研究与应用

2019-05-16 01:40
智能计算机与应用 2019年2期
关键词:薄片预处理图像处理

王 康

(西安石油大学 计算机学院,西安710065)

0 引 言

随着岩石图像规模的不断增长,在岩石图像处理中很容易会遇到数百张序列图像、甚至是上千张高分辨率的岩石图像的情况,尤其是特征点的提取、构建描述符算法比较复杂,导致计算量非常大[1]。在有效利用当下提出的岩片图像处理手段的前提下,结合云计算和大数据处理技术的发展,快速有效的岩片图像处理和应用即已成为亟待解决的问题之一。

大数据时代的到来使得数据平台处理技术能够应用于更多领域,包括各种日志分析、行为分析和流量分析。在大数据应用中,Hadoop和Spark[2]是最活跃的。在Hadoop架构下的图像处理方法是基于MapReduce的批处理方式实现图像并行处理的。其具有高吞吐量和高延迟,但是缺乏任务和资源分配的公平性,也未能考虑到对多任务与少量任务的区分,影响分割后图像效果[3]。同时处理效率太低,并且要进行各种岩石薄片图像处理算法间的转换,在代码编写上任务较为繁重。与Hadoop体系下的MapReduce相比,Spark提供了更好的数据共享抽象,解决了 MapReduce的高延迟缺陷,并给出了Scala、Java、Python三种编程接口。这3个API可与其它程序有效集成,从而合理分配任务和资源,最终提高图像处理效率。

本文利用分布式文件系统HDFS和图像处理界面,通过传递函数与Spark平台集成,可以编写各种图像处理算法,实现图像的并行处理[4]。实验证明,该方法可以实现图像的并行处理,适应大规模的图像处理。

1 Spark平台

Spark是伯克利大学的AUMPAB实验室推出的一个热门实验项目,代码很少,且是一个轻量级框架。Spark是一个类似于Hadoop[5]的开源集群计算环境,但两者之间存在一些差异。这些设计上的差异使Spark在某些工作负载上表现更好,换句话说,Spark已启用了更为出色的架构机制。除了提供交互式查询外,Spark还优化了迭代工作负载。Spark以Scala语言为研发基础,使用Scala作为其应用程序框架。与Hadoop不同,Spark和Scala紧密集成,Scala可以像本地集合对象一样轻松地运行分布式数据集。

Spark提出了一种新的弹性分布式数据集(Resilient Distributed Datasets,RDD)。 RDD 是一个并行、容错的数据结构,方便用户将数据集显式地存储于内存中。RDD与Hadoop不一样的地方在于这些数据集是缓存在内存中,因而尤其利于数据的迭代计算。RDD操作类型可以分为转换操作(Transformation)和控制操作(Actions)。 其中,转换操作是惰性求值,即通过在RDD之间构造相互依赖的非循环图(DAG),最后传递动作。该操作会触发任务以返回结果。Spark中的任务运行过程如图1所示。

图1 Spark任务运行流程Fig.1 Spark task running process

2 基于Spark的处理架构与流程

基于Spark的岩石薄片图像分割处理可分为3个部分:HDFS、Spark集群和图像处理接口。整体架构如图2所示。对每一部分的设计功能可阐释如下。

图2 整体架构Fig.2 Overall architecture

(1)分布式文件系统HDFS。负责预处理图像和各种输出结果的存储,并支持根据图像大小增加存储节点,以确保读取速度和存储规模。

(2)Spark集群。图像数据读取、并行化处理和集群上的作业调度和资源分配。

(3)图像处理接口。用于与Spark主驱动器集成的图像预处理、转换操作和图像处理算法。

2.1 图像的预处理与转换

在现有的大规模岩石薄片图像中,由于不同的岩石图像存储在不同的服务器文件系统中,因此存在大量不同类型的图像数据。同时,Spark不支持直接读取JPEG、JPG等格式的图像数据源。为了使每个worker节点能够访问不同格式的图像数据并通过Spark成功读取,本文运用程序代码将每个图像转换为二进制文本文件,并将其写入HDFS。

对于远程图像数据源,Spark Streaming[6]可用于通过读取网络流来处理和转换远程图像。Spark Streaming预处理依赖于Spark集群,未经预处理的图像数据可通过流传输直接传输到Spark集群。不同区域的岩石图像数据不能得到有效的处理和集成,对网络带宽的要求也越来越高,不可避免地增加了图像处理的难度。

通过将图像转换为二进制文本文件、再进行存储,而且每个worker节点都可以方便地访问图像,解决了图像源数据同构的问题。在确定编码模式的情况下,通过读取二进制流可以将二进制值文本文件恢复为图像,并将图像存储在许多图像数据库中。

2.2 岩石图像并行处理的实现

Spark具有用于文本文件的统一数据源文本接口,并将整个文本文件读取为一组行,这些行定义了基本RDD,然后执行一系列RDD操作。

将预处理后的岩石薄片图像读取到Spark平台中。读入后,每个二进制文件对应于基本RDD,即每个图像对应于一个RDD,并且图像处理操作可以被视为简单的RDD转换操作。

Spark中RDD的转换操作可以视为已建立方法下的集合或类型转换操作。本文提出转移所需的图像处理算法函数来构造RDD转换操作,实现各个区域的岩石图像操作。岩石薄片图像与Spark平台并行算法的结合过程如图3所示。

图3 函数传递过程Fig.3 Function transfer flow

通过功能转换和集成,图像处理界面将图像处理算法传输到Spark Big Data平台。在RDD转换完成之后,触发操作执行实例,Spark通过预处理输入图像。此数字决定了任务的数量,并且取决于集群的大小,任务负载均衡并分发到每个工作节点。处理完工作节点后,结果将写入分布式文件系统(HDFS)或分布式数据库(HBase[7])。 这样,确保了图像与任务之间的一一对应关系,同时,当执行图像并行处理时,需要对图像进行序列化,并且能够快速有效地读取每个图像。

3 基于Spark的并行处理技术在岩石薄片图像的应用

将本文提出的基于Spark的并行图像处理技术应用在岩石图像分析领域,通过粒度分析和矿物识别实现岩石薄片图像分割。本文将基于密度的算法添加到图像处理界面,即 DBSCN图像分割[8]。图像处理方法的主要思想是使用粒子中心来表示以简化模型,然后使用DBSCAN算法聚类目标中心以标记不同的粒子目标。最后,结合改进的数学形态学方法,近似了粒子边界。实验结果表明,该方法对粒子分割和边界提取具有良好的效果,为粒子边界表征提供了有效途径。

3.1 实验环境及数据来源

基于Spark的岩石薄片图像并行处理方法在搭建的Spark集群中实现。实验集群由1个主节点和5个从属节点构成。其中,主节点在Spark中担任Master,从节点担任 Worker。操作系统均为Centos7.5,硬件配置均为 Intel(R) Core(TM)i7-8700 CPU @ 3.20 GHz 3.19 GHz内存。 所有节点均已成功配置Spark2.3.0并行处理框架、Java以及各类Java下的图像处理包,如 JMagick,Sanselan等。实验中使用Spark的Java接口,通过Java语言撰写Spark主驱动程序及岩石薄片图像实现方法,任务部署模式采用Spark on Yarn。

本文中所有的图像数据来自鄂尔多斯盆地砂岩薄片。薄片图像均用高分辨率显微镜拍摄,每个图像都是以JPEG格式存储,并且图像大小是10 M内。在本文中,从每个区域选择相似大小的1 000张图像用于处理。

3.2 实验设计与分析

实验拟通过利用DBSCAN分割方法的Java研发算法来设计展开,并根据实验的目的选取若干岩石薄片图像作为样本进行实验。实验运行结果及分析详见如下。

3.2.1 与传统方法的性能对比

比较传统的物理机的方法,本文提出的并行处理方法速度较快。在5个节点的情况下,基于不同的岩石图像数,实验运行后绘制得到的时间结果曲线如图4所示。

图4 传统处理方法与并行处理方法测试结果Fig.4 Test results between traditional processing and parallel processing

图4 显示伴随图像的增加,基于Spark的并行处理方法的优点变得越来越明显,并且可以实现图片的快速处理。

3.2.2 多节点下的分割效率

本文在拍摄的各地区岩石薄片图像中选取1 000张、2 000张、5 000张图像的情况作为数据源进行实验,通过改变集群工作节点数目,将1 000张、2 000张和5 000张图像选择作为每个区域的岩石图像中的数据源,研究得到的基于Spark的并行处理方法实验结果如图5所示。

图5 不同节点数目的处理时间Fig.5 Multi-node processing time

由图5可以看到,在单个工作节点对于5 000张的图像共需要16 h的处理时间,而在5个节点情况下却只需2 h的处理时间,这就极大地减少了处理相同图像的时间。而当节点的数目增加时,图像的处理速度也在逐渐提升。

4 结束语

基于Spark的岩石薄片图像处理架构有效地解决了岩石薄片图像处理算法在不同区域对不同种类岩石图像的快速并行处理,集群节点数量越多,就越能提升并行处理图像的速度。本文提出了一种基于Spark的并行图像处理体系结构,通过预处理后的分布式图像进行存储和转换,可以将岩石薄片图像读取到Spark平台中,并应用传递函数方法避免MapReduce转换。实验表明,在该平台下可以增加任何图像处理算法,实现并行处理,适应于大规模的图像处理。

猜你喜欢
薄片预处理图像处理
KR预处理工艺参数对脱硫剂分散行为的影响
求解奇异线性系统的右预处理MINRES 方法
手术器械预处理在手术室的应用
人工智能辅助冠状动脉CTA图像处理和诊断的研究进展
基于图像处理与卷积神经网络的零件识别
趣味英语听力:Say No to Bad Social Habits
来自森林的植物薄片
污泥预处理及其在硅酸盐制品中的运用
基于ARM嵌入式的关于图像处理的交通信号灯识别
基于图像处理的废有色金属自动分选算法研究