1. 算法介绍
Graph Cut(图形切割)应用于计算机视觉领域用来有效的解决各种低级计算机视觉问题,例如图像平滑(image smoothing)、立体应对问题(stereo correspondence problem)、图像分割(image segmentation)等等。此类方法把图像分割问题与图的最小割(min cut)问题相关联,在计算机视觉的很多类似的问题中,最小能量(minimum energy)方案对应解决方案的最大后验估计(maximum posterior estimate)。
友情链接:图像分割经典算法(最小割最大流)
使用Graph Cut的方法可以精确的解决”二进制问题“(binary problem),例如对二进制图像进行去噪。可以用两个以上不同的标签(例如立体对应(stereo correspondence)或灰度图像的去噪)标记像素的问题不能精确解决,但产生的解决方案通常能够接近全局最优的效果。
2. GraphCut
GraphCut利用最小割最大流算法进行图像的分割,可以将图像分割为前景和背景。使用该算法时需要在前景和背景处各画几笔作为输入,算法将建立各个像素点与前景背景相似度的赋权图,并通过求解最小切割区分前景和背景。算法效果图如下:
原始图片
标注图片
分割后的图片
相关论文及python实现代码:
PAPER:
1.Fast approximate energy minimization via graph cuts
2.Graph based algorithms for scene reconstruction from two or more views
3.What energy functions can be minimized via graph cuts?
4.Interactive Graph Cuts for Optimal Boundary & Region Segmentation of Objects in N-D Images
CODE
https://github.com/cm-jsw/GraphCut
参考项目:https://github.com/NathanZabriskie/GraphCut
3.GrabCut
GrabCut的详细解释参考博客:
图像分割之(三)从Graph Cut到Grab Cut
图像分割之(四)OpenCV的GrabCut函数使用和源码解读
GrabCut
GrabCut是对其的改进版,是