Convert any image into its Region Adjacency Graph which can be used for either image segmentation or to create a graph embedding of the image.
Simply run pip install img2rag
Given an image, we segement it into perceptually significant regions using first Felzenszwalb segmentation followed by a threshold-cut. We then use the segmented regions to construct the following graph:
- Each node corresponds to a segmented region.
- We connect two regions if they are adjacent.
This is the so-called region adjacency graph. Furthermore, we add the following node-attributes to each region:
- Location of the region centeriod
- Orientation of the region
- Mean and total color of the region
- Size in px
The edges contain the mean-color difference between the two regions
Simply import the RAGimage
class and initiate with any image. Then use the build in methods to access various properties.
from img2rag import RAGimage
# We assume the image is given as a numpy array or tf.Tensor with either 2 or 3 dimensions
# where the third dimension is the optional channel dimension.
img_tensor = [...]
# initiate RAGimage instance
image_rag = RAGimage(img_tensor)
# RAG as a networkx attributed DiGraph
image_rag.rag
# Scikit style labels of the image segementation
image_rag.labels
# Adjacency matric of the RAG
image_rag.adjacency
# Graph feature matrix of the RAG
# (Nodes x Node-Features)
image_rag.signal