1
$\begingroup$

I have an image which looks like

from How to convert an image to a graph and get the positions of the edges?

which by using MorphologicalGraph becomes a graph that is a collections of polygons:

i = Import["https://i.sstatic.net/cET4A.png"]; g = MorphologicalGraph[i, EdgeStyle -> Directive[Orange, Opacity[.5], Thickness[.01]], GraphStyle -> "ThickEdge"]; Show[ColorNegate@Dilation[i, 1], g] 

I am wondering if, for each polygon, it is possible to extract the number of edges?

$\endgroup$

2 Answers 2

4
$\begingroup$

There are some stray lines in the image which may be difficult to handle. You can remove these using Pruning. Use MorphologicalGraph after this. Now your problem is reduced to finding the faces of the planar graph you obtained. You'll find complete code for that in the answer to this question:

$\endgroup$
2
$\begingroup$

You have a few lines pointing out here and there, suggesting that it's actually only lines, not polygons.

coords = VertexCoordinates /. AbsoluteOptions[g, VertexCoordinates]; con = (ArrayRules@AdjacencyMatrix[g])[[1 ;; -2, 1]]; Graphics@GraphicsComplex[coords, Line[Union[Sort /@ con]]] 

lines

If you right click your original graph and Convert to Graphics that is also composed of Lines and a bit of styling.

$\endgroup$

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.