Files
scikit-image/skimage/graph/_ncut.py
T
Vighnesh Birodkar 997d4a3a68 cleaned up _ncut.py
2014-08-05 23:33:22 +05:30

31 lines
677 B
Python

import networkx as nx
import numpy as np
from scipy import sparse
def DW_matrix(graph):
W = nx.to_scipy_sparse_matrix(graph, format='csc')
entries = W.sum(0)
D = sparse.dia_matrix((entries, 0), shape=W.shape).tocsc()
return D, W
def ncut_cost(mask, D, W):
mask = np.array(mask)
mask_list = [np.logical_xor(mask[i], mask) for i in range(mask.shape[0])]
mask_array = np.array(mask_list)
cut = float(W[mask_array].sum() / 2.0)
assoc_a = D.data[mask].sum()
assoc_b = D.data[np.logical_not(mask)].sum()
return (cut / assoc_a) + (cut / assoc_b)
def normalize(a):
mi = a.min()
mx = a.max()
return (a - mi) / (mx - mi)