opencv中图像一种相似性度量方法-------EMD

EMD算法是用来比较两幅图像相似性的方法。在颜色直方图中,由于光线等的变化会引起图像颜色值的漂移,它们会引起颜色值位置的变化,从而导致直方图匹配失效。EMD的思想是求得从一幅图像转化为另一幅图像的代价,用直方图来表示就是求得一个直方图转化为另一个直方图的代价,代价越小,越相似。

计算 EMD 的方法来源于有名的运输问题的解决方案,其实质是双向网络最优路径的选择问题。运输问题是假设有几个供货商,每个供货商都有一定数量的货物,需要供货给几个消费商, 每个消费商都有一个购货能力上限,在任何供货商与消费商之间运输一个单位货物的成本给定传输问题就是寻找最小代价货物流,货物从供货商流向消费商, 这些货物能满足消费商的要求。运输问题的目的就是找到一组路径F=[fij],也就是供货商与消费商之间的对应关系, 当使用这种双向对应关系时,能够最小化运输货物所要付出的代价,

opencv中图像一种相似性度量方法-------EMD_第1张图片

opencv中图像一种相似性度量方法-------EMD_第2张图片

若直方图经过归一化处理,则分母为1,所以EMD的公式只管的表示可以理解为:直方图A转化为直方图B时,需要把A中的每一个bin进行分割给B中的每一个bin,在乘上bin之间的代价。(以下是个人理解)假如:AB都有两个bin,且AB的距离代价分别为0.40.7Abin10.5,且分成0.10.4Bbin1bin2,同样,Abin2分成0.30.2B,EMD=0.4*0.1+0.7*0.4+0.4*0.3+0.7*0.2 


你可能感兴趣的:(算法,opencv)