EMD(Earth Mover's Distance)概念及代码

最近在做一点图像分割的工作。有一种做法是先对图像做过分割,然后再对分割后的小区域进行合并。合并时就需要衡量两个区域之间色彩分布的相似程度,这时就碰到了EMD(Earth Mover’s Distance,中文似乎是地动距离


根据这个帖子,EMD是一种距离度量的定义,可以用来测量某两个分布之间的距离。EMD主要应用在图像处理和语音信号处理领域,在自然语言处理上很少有听说。


跟EMD有关的数学推导略去不表,直观地说,EMD实际上是线性规划运输问题的最优解,即:已有的货物存在于仓库P1…PN中,存量分别是p1…pn,需要将货物运输至仓库Q1……QM中,其存量分别为q1…qm。从仓库P到仓库Q的距离用矩阵[d_ij]来描述。根据其物理意义,每个仓库Pi的出货量不能超过其存量,每个仓库Qj的进货量不能大于其容量,运输的货物总量不能超过p1…pn之和,也不能超过q1…qm之和。在此约束下,求代价最小的运输方案[f_ij],实际上就是求矩阵F,使得sum( sum( F .* D ) )最小(csdn编辑公式不便,这里用了MATLAB的语法)。我觉得比较有趣的一点是,这里的N和M不需要相等。


如果我们考察的不是货物的存量,而是概率分布,那么上面的不等式约束可以直接写成等式约束,库存就是特征取不同值时的概率分布,矩阵D是我们在两个特征之间定义的某种距离。这就是我遇到的问题。


这种线性规划的问题解法貌似不难,但是涉及到数值计算的话总是有很多麻烦事儿。幸好又有人造福大众了,地址在这里:FastEMD。作者提供了C、MATLAB、Java三种接口,只是要求如果你用这个工具包做实验,文章里需要引用他们的论文。

你可能感兴趣的:(MATLAB,计算机视觉,图像处理,matlab)