Net of points over edge offsets (new feature)

Is it possible for some gmic developer create a new filter which -starting from the existing “edge offsets”- creates a series of dots each one with a distance equal to the same value used for generating the edge offsets lines, replacing the lines themselves?
This would generate a sort of “net of dots” following the edges directions to be further used as input to the “skeleton” function in creating Roman style mosaics (so called Opus Vermiculatum).
Both Lyle and myself (“stroking” the lines converted to paths) followed this approach in our experiments.

It sounds a bit like replacing lines with dotted lines - do you have a very simple example to look at?

Thanks for your interest, Garagecoder,

I show you the main steps of my Mosaic filter:- source

  • poster
  • Rob Antonischen’s Borders Inward Repeat (a kind of predecessor in Gimp of Edge Offsets)
  • dots layer created stroking the path w/a brush of 1-2 pixels and a 10x distance
  • skeleton generated by G’mic skeleton filter
  • outcome
    Hence, as you say, I use the “lines” converted to path and stroked with a brush defined with a distance close (but in this case not equal) to the distance among the lines.
    Hence, what I assume can be dopne in Gmic is:
  • creating the lines with Edge Offsets flow
  • replacing the lines in “dotted lines” as you said
    so that I can
    use this new Gmic filter instead of (RobA BIR + selection to path + defining a brush + stroking path)
    Hope to have explained clearly

PS I’ve seen that th RobA path is not visible (dots are, if you enlarge the image because dots are very small)
So I attach the step before Selection to Path

I must admit I can’t think of an obvious and easy way with an existing command, although I bet there is one! I’ll have a think (but hoping somebody else has an idea).

What about trying “slic” ?
From “gmic help slic”

in +srgb2lab slic[-1] 64 +blend shapeaverage f[-2] “j(1,0)==i && j(0,1)==i” *[-1] [-2] out

KaRo, thanks for the info, but it is not a Roman Mosaic (look at my previous post - outcome).
Also Superpixel creates a similar mosaic, and I used it in another filter.
You may “google” about Opus Vermiculatum, to see what “Roman Style Mosaic” means.

At this point, we are brainstorming. It is useful to note methods that yield similar-but-not-quite results.

If memory serves, @Reptorian was doing something that had hairline line artifacts between segments. Maybe he could lean into the artifacts to section off the contours, which is pretty much how the Roman Mosaic is expressed. So I see the following steps, not necessarily in order of operation:

1 Cartooning (removal of texture while preserving the structure).
2 Posterization.
3 Contouring (perhaps using distance).
4 Segmenting the contours.

I don’t really remember something like that, and I wasn’t working on anything with application similar to this.

My guided filter has this interesting property of smoothing out smooth areas while sharpening structures.

It doesn’t do well with any noise or repetitive detail, but in your case, this may be a good thing. Deteriorated with noise, then guided filtered. You can see small segments. If you choose a larger radius, the segments grow accordingly. The problem with my guided filter is that it becomes much slower with large radii, so it isn’t very practical, unless you have a beast of a machine or are incredibly patient.

@Reptorian @Joan_Rake1 Your cubism discussion.


Here is a mosaic test created with G’MIC with squares aligned horizontally along the contours :

Original image :

Thanks a lot for your experiment, Sylvie.
But I just feel necessary for all the readers to underline that my request is NOT finding a method to create A mosaic, but a G’mic filter to simplify the steps used in the process of creating a ROMAN STYLE mosaic, which uses the G’mic Skeleton starting from a set of points placed around the contours/edges of the image, simplified thru a posterizing step. An “Opus Vermiculatum” is a specific type of mosaic.
Attached is just an example found on the Internet.


Bonjour Dinasset,

In this example squares are placed horizontally according to the white lines representing ‘Edges Offsets’.
There is no difference between placing dots or squares.
If the squares are large enough we get a mosaic.
The difficulty is to use tangents to the curves to correctly position the non-circular elements.
I believe placing dots along lines was already done a few years ago :


I think that it is theoretically possible, but one would need to create the lines as series of dot, then automatically connect lines excluding lines that cross the center of dots. It’s not as simple as create this or that. One actually has to do some researches and theorizing, and then take their time making the filter. We do have some theories so far. I would like to do this, but I’m working on my transformation filter now.

Bonjour Reptorian,

It is surely a good idea to put points.
It will be easier with this method to find an angle.

The method I propose doesn’t find angle. It merely involves connecting lines to dots via coordinates info, and exclude dots.

So your lines inter- / extrapolate between points?

Yes. That’s how it works. The problem here is speed if anything.