之前看了graph cut的问题,这里有一个简单又有趣的应用,问题是这样的:
给定两幅相似或者相同图像,二者相互overlay .找到一个最好的分割,让两幅图像拼接到一起,形成最好的“混合”效果,而不使用实际的alpha blending。
这里可以使用Graph Cut解决这个问题,具体来说就是把两幅图重合的部分使用一个Graph来建模,重叠部分对应的像素点作为一个节点,每个节点赋值为两个像素颜色的absolute difference norm ,就是两个像素值向量的范数;边的权重为边所连接两个节点的值的和,Graph的左边为SOURCE节点(代表左image),Graph的右边为SINK节点(代表右image)。对这个Graph求最小割,直观上就可以知道,这个最小割就是对两幅图像重叠部分最接近的位置进行拼接。
结果:
代码包含了maxflow library http://vision.csd.uwo.ca/code/