图像分割是将一幅图像分割成有意义区域的过程。区域可以是图像的前景与背景与背景或图像中一些单独的对象。区域可以利用一些诸如颜色、边界或近邻相似性等特征进行构建。
1、图割
图割是将一个有向图分割成两个互不相交的集合,可以用来解决很多计算机视觉方面的问题,诸如立体深度重建、图像拼接和图像分割等计算机视觉方面的不同问题。从图像像素和像素的邻近创建一个图 并引入一个能量或“代价”函数,我们有可能利用图割方法将图像分割成两个或多个区域。图割的基本思想是,相似且彼此相近的像素应该划分到同一个区域。
下面是一个用python-graph工具包计算一幅较小的图的最大流/最小割的简单例子:
代码:
from pygraph.classes.digraph import digraph
from pygraph.algorithms.minmax import maximum_flow
gr = digraph()
gr.add_nodes([0,1,2,3])
gr.add_edge((0,1), wt=4)
gr.add_edge((1,2), wt=3)
gr.add_edge((2,3), wt=5)
gr.add_edge((0,2), wt=3)
gr.add_edge((1,3), wt=4)
flows,cuts = maximum_flow(gr, 0, 3)
print ('flow is:' , flows)
print ('cut is:' , cuts)
结果:
结果输出两个python字典包含了流穿过每条边和每个节点的标记:0是包