2014-10-10 10 views
3

Я хочу использовать алгоритм вырезания графа на изображениях в моем проекте, я использую python 2.7.
Я нашел pymaxflow implementation, но документация не кажется настолько ясной. я сделать пример, вот мой 5 * 5 Матрица:График с питоном: как правильно настроить график?

>>> A 
array([[ 0, 1, 2, 3, 4], 
     [ 5, 6, 7, 8, 9], 
     [10, 11, 12, 13, 14], 
     [15, 16, 17, 18, 19], 
     [20, 21, 22, 23, 24]]) 

Виртуальные терминальные узлы, S (источник) и Т (приемник) должен быть связан с бесконечным весом дуг на все пиксели левый и правый столбцы матрицы соответственно. Вот что я хотел бы получить:

Graph rapresentation to obtain

Вот мой код, чтобы получить это, но он не работает

left_most = concatenate((np.zeros((1, A.shape[0])), np.arange(A.shape[0]).reshape(1, A.shape[0]))).astype(np.uint64) 
left_most = np.ravel_multi_index(left_most, A.shape) 
right_most = concatenate((np.ones((1, A.shape[0])) * size(A, 1) - 1, np.arange(A.shape[0]).reshape(1, A.shape[0]))).astype(np.uint64) 
right_most = np.ravel_multi_index(right_most, A.shape) 
g.add_grid_tedges(left_most, np.ones(left_most.shape) * np.inf, np.zeros(left_most.shape)) 
g.add_grid_tedges(right_most, np.zeros(right_most.shape), np.ones(right_most.shape) * np.inf) 

g.maxflow() делает консоль питона в бесконечном цикле , Я не уверен в моей реализации: как создать правильный граф, который можно использовать в алгоритме сокращения графа?

Спасибо!

P.s. Если вы знаете, что решение с другой библиотекой сообщит мне, любое предложение будет действительно оценено.

ответ