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.stack.imgur.com/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$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.