我不熟悉你链接到的FEX的图形实现,
但是我会用
GCMex matlab wrapper(适当的披露:我实现了这个包装)来显示一个例子.
假设你有一个具有n个像素的尺寸大小(S)的图像,并且K是尺寸为n×n的稀疏矩阵,K(ii,jj)表示ii和jj像素连接的程度(对于相邻的ii和jj).
此外,您有一个前景像素的掩码和背景像素的掩码v被视为硬约束.
首先,使用u和v构建数据项:
Dc = 1000*[u(:), v(:)]; %// assign very large cost for picking FG pixel to label zero and vice versa
正如你可以看到数据项Dc,是n-by-2数组,其中将标号l(0或1)分配给像素ii的成本存储在Dc(ii,l 1)中.因此,对于前景中的像素(u(ii))为1)分配标签l = 0(即背景),您支付的成本为1000.背景中的像素也相同(v(ii))为1)将其分配给前景(即,1 = 1)是成本1000.因此,数据项Dc给种子像素(前景或背景)获得错误标签的非常高的成本.
构建图形切割对象
gch = GraphCut('open'), Dc, [0 1; 1 0], K );
[gch L] = GraphCut('expand',gch);
gch = GraphCut('close',gch);
L = reshape(L, size(u));
figure; imshow(L,[]); title('the resulting mask');
请注意,要使用GCMex,您需要按照安装说明进行编译,以使其正常工作.