第11章 图像处理——GraphX

本章将会介绍如何使用GraphX这个Spark图像处理库来进行图像处理。

本章包含如下内容。

  • 基本图像运算。
  • 使用PageRank。
  • 查找连通分量。
  • 相邻聚合实现。

图像分析在生活中比我们认为的更加常见。举个最通俗的例子,当我们使用GPS查找最短路径时,就在使用图像处理算法。

让我们先从理解图像开始。图是一组顶点以及顶点之间连线的展现,当这些连线具有方向性时,就被称为有向图(digraph)。

GraphX是Spark用于图像处理的API,它提供一个被称作弹性分布式属性图(resilient distributed property graph)的RDD封装。属性图是指每个顶点和边都附带属性的有向多重图。

图分为两种——有向图(digraphs)和正则图。有向图的边是有方向的,比如从顶点A到顶点B。Twitter关注是有向图的一个好例子。如果John关注David,并不意味着David也关注John。与之相对,脸书(Facebook)是正则图的一个好例子,如果John是David的朋友,那么David也是John的朋友。

多重图是允许有多重边(又叫平行边)的图。因为GraphX的每条边都有属性,所以每条边都有自己的标识符。

传统图像处理系统有两种:

  • Data parallel
  • Graph parallel

GraphX致力于将两者合二为一。GraphX API允许用户既可以将数据当作图像处理,也可以当作集合(RDD)处理,不需要做数据迁移。

在本节中,我们将会介绍如何创建图像并进行基本运算。

表11-1所示的例子中有3个顶点,每个顶点代表加州3个城市——圣克拉拉、费利蒙和旧金山的市中心。 ...

Get Spark Cookbook (中文版) now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.