并行计算图像的直方图

时间:2012-05-14 12:52:22

标签: image-processing mpi parallel-processing

如何使用并行计算计算图像的直方图?串行图像的直方图很容易,但我不知道并行计算它。

任何想法,算法,源代码或有用的链接都将不胜感激。

我正在使用MPI。

2 个答案:

答案 0 :(得分:6)

这是一个想法:

首先,您使用MPI_Scatter()MPI_Scatterv()按行(如果使用C编程)或按列(如果使用Fortran编程)分散图像(使用scatterv可以将图像分发到多个进程)这不是行/列数的整数除数。

然后每个过程计算其图像部分的直方图。让直方图存储在256个元素的整数数组local_histogram中(我假设图像是灰度)。

在最后一步,使用MPI_Reduce()

执行求和的全局缩减
MPI_Reduce(local_histogram, histogram, 256, MPI_INT, MPI_SUM, 0, MPI_COMM_WORLD);

之后,完整的全局直方图将位于{0}进程中的histogram数组中。

答案 1 :(得分:1)

我只能猜到你正在寻找什么。让我给你一个算法的简要概述:

每个节点计算直方图。在最后一步中,通过将它们加在一起来减少所有这些。最终的总和可以再次拆分,一次又一次,取决于工作量。

此方法类似于map/reduce