我很难尝试用最低成本解决图像分割问题的算法。以这种方式计算图像的成本:
第一个计划中像素的权重+第二个计划中像素的权重+连接不同计划中像素的边缘的权重。 (如果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将解决这个问题,但我不知道如何在我们想要找到最大通量的地方建模这个问题。
答案 0 :(得分:0)
这是一个经典的最大流量问题。将每个像素视为一个节点。创建两个新节点S
和T
。对于每个像素x
,添加有向边(S, x)
,其成本等于(P)中x
的权重。同样,添加有向边(x, T)
,其成本等于(C)中x
的权重。最后,使用给定边的权重在相邻像素之间添加双向边。
然后,您可以显示此图表中的任何S
- T
剪切对应于图像细分。特别是,这种切口有3种边缘:
S
与像素x
之间的边距,对应于将x
放入平面(P)x
和T
之间的边距,对应于将x
放入平面(C)x
和y
之间的边,对应于平面之间的边。因此,此图中的最小切割精确对应于最佳图像分割。
通过最小切割最大流定理,可以使用最大流算法(例如Edmonds-Karp)找到最小切割。