最低成本图像分割算法

时间:2018-04-21 14:19:25

标签: image algorithm graph-algorithm

我很难尝试用最低成本解决图像分割问题的算法。以这种方式计算图像的成本:

第一个计划中像素的权重+第二个计划中像素的权重+连接不同计划中像素的边缘的权重。 (如果2个像素在同一个计划中,我们不计算连接它们的边缘的成本)

我的问题的输入遵循以下模式:

两个Numbers.First数字表示行数,第二个数字表示列数

5 5

第一个计划(P)上的像素权重

8 7 9 9 7
6 2 2 8 7
9 1 2 1 8
2 1 3 1 7
1 3 2 1 9

第二个计划(C)上的像素权重

2 1 2 3 2
1 9 9 1 3
1 7 7 9 3
8 7 9 7 2
7 9 8 9 1

水平连接像素的边缘权重

8 9 7 6
1 9 0 8
1 8 9 2
8 7 9 1
9 8 7 2

垂直连接像素的边缘权重

8 2 1 7 9
7 8 7 1 8
2 8 7 7 8
9 7 8 9 8

目标是找到成本最低的分段,并返回一个矩阵,显示哪些像素属于第一和第二个计划。

此案例的输出:

57

C C C C C 
C P P C C 
C P P P C 
P P P P C 
P P P P C

Image that represents the problem:

Here is an image that shows why the answer is this:

在我的课程中,我的老师告诉我们Edmund-Karps将解决这个问题,但我不知道如何在我们想要找到最大通量的地方建模这个问题。

1 个答案:

答案 0 :(得分:0)

这是一个经典的最大流量问题。将每个像素视为一个节点。创建两个新节点ST。对于每个像素x,添加有向边(S, x),其成本等于(P)中x的权重。同样,添加有向边(x, T),其成本等于(C)中x的权重。最后,使用给定边的权重在相邻像素之间添加双向边。

然后,您可以显示此图表中的任何S - T剪切对应于图像细分。特别是,这种切口有3种边缘:

  • S与像素x之间的边距,对应于将x放入平面(P)
  • 像素xT之间的边距,对应于将x放入平面(C)
  • 两个像素xy之间的边,对应于平面之间的边。

因此,此图中的最小切割精确对应于最佳图像分割。

通过最小切割最大流定理,可以使用最大流算法(例如Edmonds-Karp)找到最小切割。