mirror of
https://github.com/wassname/scikit-image.git
synced 2026-07-08 02:25:14 +08:00
31 lines
677 B
Python
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)
|