skimage.future.graph.cut_normalized (labels, rag) | Perform Normalized Graph cut on the Region Adjacency Graph. |
skimage.future.graph.cut_threshold (labels, ...) | Combine regions separated by weight less than threshold. |
skimage.future.graph.merge_hierarchical (...) | Perform hierarchical merging of a RAG. |
skimage.future.graph.ncut (labels, rag[, ...]) | Perform Normalized Graph cut on the Region Adjacency Graph. |
skimage.future.graph.rag_boundary (labels, ...) | Comouter RAG based on region boundaries |
skimage.future.graph.rag_mean_color (image, ...) | Compute the Region Adjacency Graph using mean colors. |
skimage.future.graph.show_rag (labels, rag, img) | Show a Region Adjacency Graph on an image. |
skimage.future.graph.RAG ([label_image, ...]) | The Region Adjacency Graph (RAG) of an image, subclasses |
skimage.future.graph.cut_normalized(labels, rag, thresh=0.001, num_cuts=10, in_place=True, max_edge=1.0)
[source]
Perform Normalized Graph cut on the Region Adjacency Graph.
Given an image’s labels and its similarity RAG, recursively perform a 2-way normalized cut on it. All nodes belonging to a subgraph that cannot be cut further are assigned a unique label in the output.
Parameters: |
labels : ndarray The array of labels. rag : RAG The region adjacency graph. thresh : float The threshold. A subgraph won’t be further subdivided if the value of the N-cut exceeds num_cuts : int The number or N-cuts to perform before determining the optimal one. in_place : bool If set, modifies max_edge : float, optional The maximum possible value of an edge in the RAG. This corresponds to an edge between identical regions. This is used to put self edges in the RAG. |
---|---|
Returns: |
out : ndarray The new labeled array. |
[R283] | Shi, J.; Malik, J., “Normalized cuts and image segmentation”, Pattern Analysis and Machine Intelligence, IEEE Transactions on, vol. 22, no. 8, pp. 888-905, August 2000. |
>>> from skimage import data, segmentation >>> from skimage.future import graph >>> img = data.astronaut() >>> labels = segmentation.slic(img, compactness=30, n_segments=400) >>> rag = graph.rag_mean_color(img, labels, mode='similarity') >>> new_labels = graph.cut_normalized(labels, rag)
skimage.future.graph.cut_threshold(labels, rag, thresh, in_place=True)
[source]
Combine regions separated by weight less than threshold.
Given an image’s labels and its RAG, output new labels by combining regions whose nodes are separated by a weight less than the given threshold.
Parameters: |
labels : ndarray The array of labels. rag : RAG The region adjacency graph. thresh : float The threshold. Regions connected by edges with smaller weights are combined. in_place : bool If set, modifies |
---|---|
Returns: |
out : ndarray The new labelled array. |
[R284] | Alain Tremeau and Philippe Colantoni “Regions Adjacency Graph Applied To Color Image Segmentation” http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.11.5274 |
>>> from skimage import data, segmentation >>> from skimage.future import graph >>> img = data.astronaut() >>> labels = segmentation.slic(img) >>> rag = graph.rag_mean_color(img, labels) >>> new_labels = graph.cut_threshold(labels, rag, 10)
skimage.future.graph.merge_hierarchical(labels, rag, thresh, rag_copy, in_place_merge, merge_func, weight_func)
[source]
Perform hierarchical merging of a RAG.
Greedily merges the most similar pair of nodes until no edges lower than thresh
remain.
Parameters: |
labels : ndarray The array of labels. rag : RAG The Region Adjacency Graph. thresh : float Regions connected by an edge with weight smaller than rag_copy : bool If set, the RAG copied before modifying. in_place_merge : bool If set, the nodes are merged in place. Otherwise, a new node is created for each merge.. merge_func : callable This function is called before merging two nodes. For the RAG weight_func : callable The function to compute the new weights of the nodes adjacent to the merged node. This is directly supplied as the argument |
---|---|
Returns: |
out : ndarray The new labeled array. |
skimage.future.graph.ncut(labels, rag, thresh=0.001, num_cuts=10, in_place=True, max_edge=1.0)
[source]
Perform Normalized Graph cut on the Region Adjacency Graph.
Given an image’s labels and its similarity RAG, recursively perform a 2-way normalized cut on it. All nodes belonging to a subgraph that cannot be cut further are assigned a unique label in the output.
Parameters: |
labels : ndarray The array of labels. rag : RAG The region adjacency graph. thresh : float The threshold. A subgraph won’t be further subdivided if the value of the N-cut exceeds num_cuts : int The number or N-cuts to perform before determining the optimal one. in_place : bool If set, modifies max_edge : float, optional The maximum possible value of an edge in the RAG. This corresponds to an edge between identical regions. This is used to put self edges in the RAG. |
---|---|
Returns: |
out : ndarray The new labeled array. |
[R285] | Shi, J.; Malik, J., “Normalized cuts and image segmentation”, Pattern Analysis and Machine Intelligence, IEEE Transactions on, vol. 22, no. 8, pp. 888-905, August 2000. |
>>> from skimage import data, segmentation >>> from skimage.future import graph >>> img = data.astronaut() >>> labels = segmentation.slic(img, compactness=30, n_segments=400) >>> rag = graph.rag_mean_color(img, labels, mode='similarity') >>> new_labels = graph.cut_normalized(labels, rag)
skimage.future.graph.rag_boundary(labels, edge_map, connectivity=2)
[source]
Comouter RAG based on region boundaries
Given an image’s initial segmentation and its edge map this method constructs the corresponding Region Adjacency Graph (RAG). Each node in the RAG represents a set of pixels within the image with the same label in labels
. The weight between two adjacent regions is the average value in edge_map
along their boundary.
labels : ndarray
edge_map : ndarray
labels
. For all pixels along the boundary between 2 adjacent regions, the average value of the corresponding pixels in edge_map
is the edge weight between them.connectivity : int, optional
connectivity
from each other are considered adjacent. It can range from 1 to labels.ndim
. Its behavior is the same as connectivity
parameter in scipy.ndimage.filters.generate_binary_structure
.>>> from skimage import data, segmentation, filters, color >>> from skimage.future import graph >>> img = data.chelsea() >>> labels = segmentation.slic(img) >>> edge_map = filters.sobel(color.rgb2gray(img)) >>> rag = graph.rag_boundary(labels, edge_map)
skimage.future.graph.rag_mean_color(image, labels, connectivity=2, mode='distance', sigma=255.0)
[source]
Compute the Region Adjacency Graph using mean colors.
Given an image and its initial segmentation, this method constructs the corresponding Region Adjacency Graph (RAG). Each node in the RAG represents a set of pixels within image
with the same label in labels
. The weight between two adjacent regions represents how similar or dissimilar two regions are depending on the mode
parameter.
Parameters: |
image : ndarray, shape(M, N, [..., P,] 3) Input image. labels : ndarray, shape(M, N, [..., P]) The labelled image. This should have one dimension less than connectivity : int, optional Pixels with a squared distance less than mode : {‘distance’, ‘similarity’}, optional The strategy to assign edge weights. ‘distance’ : The weight between two adjacent regions is the , where and are the mean colors of the two regions. It represents the Euclidean distance in their average color. ‘similarity’ : The weight between two adjacent is where , where and are the mean colors of the two regions. It represents how similar two regions are. sigma : float, optional Used for computation when |
---|---|
Returns: |
out : RAG The region adjacency graph. |
[R286] | Alain Tremeau and Philippe Colantoni “Regions Adjacency Graph Applied To Color Image Segmentation” http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.11.5274 |
>>> from skimage import data, segmentation >>> from skimage.future import graph >>> img = data.astronaut() >>> labels = segmentation.slic(img) >>> rag = graph.rag_mean_color(img, labels)
skimage.future.graph.show_rag(labels, rag, img, border_color='black', edge_width=1.5, edge_cmap='magma', img_cmap='bone', in_place=True, ax=None)
[source]
Show a Region Adjacency Graph on an image.
Given a labelled image and its corresponding RAG, show the nodes and edges of the RAG on the image with the specified colors. Edges are displayed between the centroid of the 2 adjacent regions in the image.
Parameters: |
labels : ndarray, shape (M, N) The labelled image. rag : RAG The Region Adjacency Graph. img : ndarray, shape (M, N[, 3]) Input image. If border_color : color spec, optional Color with which the borders between regions are drawn. edge_width : float, optional The thickness with which the RAG edges are drawn. edge_cmap : Any matplotlib colormap with which the edges are drawn. img_cmap : Any matplotlib colormap with which the image is draw. If set to in_place : bool, optional If set, the RAG is modified in place. For each node ax : The axes to draw on. If not specified, new axes are created and drawn on. |
---|---|
Returns: |
lc : A colection of lines that represent the edges of the graph. It can be passed to the |
>>> from skimage import data, segmentation >>> from skimage.future import graph >>> img = data.coffee() >>> labels = segmentation.slic(img) >>> g = graph.rag_mean_color(img, labels) >>> lc = graph.show_rag(labels, g, img) >>> cbar = plt.colorbar(lc)
class skimage.future.graph.RAG(label_image=None, connectivity=1, data=None, **attr)
[source]
Bases: networkx.classes.graph.Graph
The Region Adjacency Graph (RAG) of an image, subclasses networx.Graph
Parameters: |
label_image : array of int An initial segmentation, with each region labeled as a different integer. Every unique value in connectivity : int in {1, ..., The connectivity between pixels in data : networkx Graph specification, optional Initial or additional edges to pass to the NetworkX Graph constructor. See **attr : keyword arguments, optional Additional attributes to add to the graph. |
---|
__init__(label_image=None, connectivity=1, data=None, **attr)
[source]
add_edge(u, v, attr_dict=None, **attr)
[source]
Add an edge between u
and v
while updating max node id.
See also
networkx.Graph.add_edge()
.
add_node(n, attr_dict=None, **attr)
[source]
Add node n
while updating the maximum node id.
See also
networkx.Graph.add_node()
.
copy()
[source]
Copy the graph with its max node id.
See also
networkx.Graph.copy()
.
edges_iter(*args, **kwargs)
[source]
Iterate over edges
For compatibility with older versions of networkx. Versions <= 1.11 have an edges_iter
method, but later versions return an iterator from the edges method, and lack edges_iter
.
merge_nodes(src, dst, weight_func=<function min_weight>, in_place=True, extra_arguments=[], extra_keywords={})
[source]
Merge node src
and dst
.
The new combined node is adjacent to all the neighbors of src
and dst
. weight_func
is called to decide the weight of edges incident on the new node.
Parameters: |
src, dst : int Nodes to be merged. weight_func : callable, optional Function to decide the attributes of edges incident on the new node. For each neighbor in_place : bool, optional If set to extra_arguments : sequence, optional The sequence of extra positional arguments passed to extra_keywords : dictionary, optional The dict of keyword arguments passed to the |
---|---|
Returns: |
id : int The id of the new node. |
If in_place
is False
the resulting node has a new id, rather than dst
.
next_id()
[source]
Returns the id
for the new node to be inserted.
The current implementation returns one more than the maximum id
.
Returns: |
id : int The |
---|
nodes_iter(*args, **kwargs)
[source]
Iterate over nodes
For compatibility with older versions of networkx. Versions <= 1.11 have an nodes_iter
method, but later versions return an iterator from the nodes method, and lack nodes_iter
.
© 2011 the scikit-image team
Licensed under the BSD 3-clause License.
http://scikit-image.org/docs/0.13.x/api/skimage.future.graph.html