[GRASS-user] Fwd: How to obtain selected adjacent pixel values?

Yasser Said Lopez de Olmos Reyes biolyasser at gmail.com
Sun Jun 30 13:01:04 PDT 2013


Sorry, I just need to tell you I'm gonna work on this next week, but I
really don't want to discourage you waiting with no news.

Thank you all.


2013/6/30 Markus Metz <markus.metz.giswork at gmail.com>

> On Sun, Jun 30, 2013 at 3:31 PM, Nikos Alexandris
> <nik at nikosalexandris.net> wrote:
> > (cc-ing @MarkusMetz)
> >
> > Yasser Said Lopez de Olmos Reyes wrote:
> >
> >> > How could I obtain the differences between central pixel values and
> >> > cardinal directions pixel values related with a central pixel?
> >> > Or in a different manner, how to do this in grass gis?
> >
> >> > RASTER_OUT= round(abs((RASTER_IN - RASTER_IN_PUSHED_ONE_ROW_UP) +
> >> > (RASTER_IN - RASTER_IN_PUSHED_ONE_ROW_DOWN) + (RASTER_IN -
> >> > RASTER_IN_PUSHED_ONE_COLUMN_LEFT) + (RASTER_IN -
> >> > RASTER_IN_PUSHED_ONE_COLUMN_RIGHT))
> >
> > Nikos Alexandris wrote:
> >> This boils down to calculating
> >> (RASTER_IN - RASTER_IN_PUSHED_ONE_ROW_UP) +
> >> (RASTER_IN - RASTER_IN_PUSHED_ONE_ROW_DOWN) +
> >> (RASTER_IN - RASTER_IN_PUSHED_ONE_COLUMN_LEFT) +
> >> (RASTER_IN - RASTER_IN_PUSHED_ONE_COLUMN_RIGHT)
> >>
> >> Please check the manual of r.mapcalc.  There is
> >>
> >> --%<---
> >> THE NEIGHBORHOOD MODIFIER
> > ..
> >> --->%--
> >
> >> which I think can be used to obtain what is asked.
> >> So, for each of the off-current pixel, the modifiers would be like
> >
> >> RASTER_IN_PUSHED_ONE_ROW_UP:  map[-1,0]
> >> RASTER_IN_PUSHED_ONE_ROW_DOWN:  map[1,0]
> >> RASTER_IN_PUSHED_ONE_COLUMN_LEFT:  map[0,-1]
> >> RASTER_IN_PUSHED_ONE_COLUMN_RIGHT:  map[0,1]
> >>
> >> I am not exactly sure about the implementation though.
>
> r.mapcalc "RASTER_OUT=round(abs((RASTER_IN - RASTER_IN[0,-1]) + \
>                                                        (RASTER_IN -
> RASTER_IN[0,1]) + \
>                                                        (RASTER_IN -
> RASTER_IN[-1,0]) + \
>                                                        (RASTER_IN -
> RASTER_IN[1,0])))"
>
> Note that this is the same like round(abs(4 * RASTER_IN -
> (RASTER_IN[0,-1] + RASTER_IN[0,1] + RASTER_IN[-1,0] +
> RASTER_IN[1,0])))
>
> If you are interested in the sum of the absolute differences, you will
> need to use abs() for each difference.
>
> >
> > @Yasser, if you implement this and think it is something that can be
> justified
> > as generically useful, why not ask @MarkusMetz if it is easy to include
> in
> > "r.neighbors" as yet another method?
>
> # prepare a weights file with the contents
> 0 1 0
> 1 0 1
> 0 1 0
>
> r.neighbors in=raster_in out=raster_cardinalsum weight=weights method=sum
>
> r.mapcalc "RASTER_OUT = round(abs(4 * RASTER_IN - raster_cardinalsum))"
>
> HTH,
>
> Markus M
>



-- 
Saludos,

Yasser
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/grass-user/attachments/20130630/299f9147/attachment.html>


More information about the grass-user mailing list