[GRASS-dev] [GRASS GIS] #3545: i.superpixels.slic: behaviour of step parameter confusing

GRASS GIS trac at osgeo.org
Wed Apr 18 08:10:02 PDT 2018


#3545: i.superpixels.slic: behaviour of step parameter confusing
--------------------------+-------------------------------------
  Reporter:  mlennert     |      Owner:  grass-dev@…
      Type:  defect       |     Status:  new
  Priority:  minor        |  Milestone:
 Component:  Addons       |    Version:  unspecified
Resolution:               |   Keywords:  i.superpixels.slic step
       CPU:  Unspecified  |   Platform:  Unspecified
--------------------------+-------------------------------------

Comment (by mmetz):

 Replying to [comment:5 mlennert]:
 > Replying to [comment:4 mmetz]:
 > > Replying to [comment:2 mlennert]:
 > > > Replying to [comment:1 mmetz]:
 > > > > Replying to [ticket:3545 mlennert]:
 > > > > > The behavior of the step parameter in i.superpixels.slic is a
 bit confusing:
 > > > > >
 > > > > > [...]
 > > > > >
 > > > > > Normally, one would expect a larger number of seeds with step=2
 than step=20. This behavior comes from lines 277ff of main.c, which read:
 > > > > >
 > > > > >
 > > > > > {{{
 > > > > > superpixelsize = step * step;
 > > > > > if (step < 5) {
 > > > > >     superpixelsize = 0.5 + (double)nrows * ncols /
 n_super_pixels;
 > > > > >
 > > > > >     step = sqrt((double)superpixelsize) + 0.5;
 > > > > > }
 > > > > >
 > > > > > Why this limit at 5 ? If it is really necessary, it should at
 least be documented in the man page to avoid confusion.
 > > > > >
 > > > > > }}}
 > > > > >
 > > > > The reason is that with small step sizes, you would get mini-
 superpixels, mostly squares. The SLIC algorithm likes a somewhat larger
 distance between superpixel centers in order to produce reasonable
 results. You can modify the condition to `step < 2` and see what happens.
 > > >
 > > > Doing this and asking for a step of 2 both on my VISNIR aerial
 photos and on the BW NC orthophoto, I get tiny superpixels of divers
 shapes. I don't find them very useful for my particular application, but
 this should be up to the user to decide, not imposed by the module.
 > >
 > > OK, I changed the condition to `step < 2` and updated the option
 description in r72634.
 >
 >
 > Thanks, but this will lead to the same issue for step = 1. Why do you
 want to make this into such a special case ?

 Because ...

 > When I comment out everything between l277 and l281, and launch the
 module with step=1 on the NC orthophoto I get as many "superpixels" as
 original pixels.

 effictively a unique ID for each pixel. Regarding a superpixel as a group
 of neighboring pixels with similar spectral characteristics, there are no
 superpixels with step=1 and it is easier to use r.mapcalc.

 > Again, I cannot imagine a use case for this, but why should the module
 artificially replace this with a calculation the origin of which is not
 really clear.
 >
 > I would plead for respecting the user's choice of step, with a mention
 in the man page that a step below 5 will lead to extremely small
 superpixels.

 I would leave it as it is now and mention in the manual that step=1 would
 not generate any superpixels, but instead a unique ID for each pixel.

-- 
Ticket URL: <https://trac.osgeo.org/grass/ticket/3545#comment:6>
GRASS GIS <https://grass.osgeo.org>



More information about the grass-dev mailing list