[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