[GRASS-dev] [GRASS GIS] #3210: r.texture: bug when non continuous series of values
GRASS GIS
trac at osgeo.org
Tue Nov 15 07:41:47 PST 2016
#3210: r.texture: bug when non continuous series of values
--------------------------+-------------------------
Reporter: mlennert | Owner: grass-dev@…
Type: defect | Status: new
Priority: normal | Milestone: 7.2.0
Component: Raster | Version: svn-trunk
Resolution: | Keywords: r.texture
CPU: Unspecified | Platform: Unspecified
--------------------------+-------------------------
Comment (by mlennert):
Replying to [comment:3 mlennert]:
> Just one question:
>
>
> The manual says:
>
> r.texture assumes grey levels ranging from 0 to 255 as input. The
input is automatically rescaled to 0 to 255 if the input map
> range is outside of this range.
>
>
> But when I rescale the above (second) matrix to 0,255 I get a different
result:
>
>
> {{{
> r.in.ascii --o in=- out=test_matrix <<EOF
> north: 3
> south: 0
> east: 3
> west: 0
> rows: 3
> cols: 3
> 1 1 1
> 3 0 0
> 0 0 3
> EOF
> r.texture -s test_matrix out=text method=idm --o
> r.stats -1n text_IDM_90
> 0.40000007
>
> r.rescale test_matrix out=test_matrix_rescaled to=0,255
> r.texture -s test_matrix_rescaled out=text_rescaled method=idm --o
> r.stats -1n text_rescaled_IDM_90
> 0.16672371
> }}}
>
> I would have thought that the result should be the same ?
I see this comes from lines 277ff in main.c:
{{{
inscale = 0;
if (min < 0 || max > 255) {
inscale = 255. / (max - min);
}
/* input has 0 - 1 range */
else if (max <= 1.) {
inscale = 255. / (max - min);
}
}}}
So, as long as the data does not contain a value above 255 we just assume
that it is scaled to 255, unless the max is < 1.
So, data with 0, 1, 2, 3 is just considered as already being scaled to
0,255...
Don't know, yet, what to think of this.
--
Ticket URL: <https://trac.osgeo.org/grass/ticket/3210#comment:4>
GRASS GIS <https://grass.osgeo.org>
More information about the grass-dev
mailing list