您有 60 片像素(总共256x256
约 4G 体素),即slices
一个256
逐个数组。一旦你进入你的网络(一个接一个或分批- 任何最适合你的),你就有可能获得大小的概率。
我建议您使用第三个构造函数来构建您的图形以进行优化。
为此,您首先需要定义一个稀疏图。使用:256
60
slices
prob
256
256
60
4
GCMex
sparse_adj_matrix
[ii jj] = sparse_adj_matrix([256 256 60], 1, 1); % 6-connect 3D grid
n = prod([256 256 60]); % num voxels
wij = exp(-((slices(ii)-slices(jj)).^2)/(2*sig2)); % -|Ii-Ij|^2/2\sig^2
W = sparse(ii, jj, wij, n, n); % sparse grid graph
一旦你有了图表,一切就从这里开始了:
Dc = -reallog(reshape(prob, n, 4)).'; %' unary/data term
lambda = 2; % relative weight of the smoothness term
gch = GraphCut('open', Dc, lambda*(ones(4)-eye(4)), W); % construct the graph
[gch L] = GraphCut('expand', gch); % minimize using "expand" method
gch = GraphCut('close', gch); % do not forget to de-allocate
要查看输出标签,您需要reshape
output = reshape(L, size(slices));
PS,
如果切片之间的空间距离大于同一切片中相邻体素之间的间隙,则可能需要使用不同sig2
的 forii
和jj
that 在同一切片中和 forii
和jj
在不同的切片上。这需要一点努力。