[GRASS-dev] i.segment: possible to cache results of open_files() for several runs of i.segment ?

Moritz Lennert mlennert at club.worldonline.be
Wed Aug 2 05:52:34 PDT 2017


Hi MarkusM,

Working on segmentation parameter optimization with fairly large images 
we have stumbled upon some questions (ISTR that we've discussed this 
before, but I cannot find traces of that discussion). As a reminder, 
i.segment.uspo works by looping through a series of threshold parameter 
values, segmenting a series of test regions at each parameter value and 
then comparing the results in order to identify the "optimal" threshold.

Two issues have popped up:

- One approach we tried was to optimize thresholds separately for 
different types of morphological zones. For each type we have several 
polygons distributed across the image. These polygons are used as input 
for a mask. However, it does seem that even if most of the image is 
masked, open_files() takes a long time, as if it does read the entire 
image. Is this expected / normal ? Would it be possible to reduce the 
read time when most of the area is masked ?

- More generally: for every i.segment call, open_files() goes through 
the reading of the input files and, AFAIU, checks for min/max values and 
creates the seglib temp files (+ possibly other operations). When 
segmenting the same image several times just using different thresholds, 
it would seem that most of what open_files() does is repeated in exactly 
the same manner at each call. Would it be possible to cache that 
information somehow and to instruct i.segment to reuse that info each 
time it is called on the same image and region ?

Just trying to crunch larger and larger images... :-)

Moritz


More information about the grass-dev mailing list