#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>
_______________________________________________ grass-dev mailing list grass-dev@lists.osgeo.org https://lists.osgeo.org/mailman/listinfo/grass-dev