[GRASS-user] interpolating intensity points & r.in.xyz

I have some lidar data, that has return strength or intensity values for an infrared beam.

the lidar data points have a density to support at least a 3 foot cell size (thanks to the results of r.in.xzy using meth=n and r.report - a great tool!).

Because I’m working with about a 10 square mile area of interest, I found 25 foot cells to work great for watershed delineation based on a time trade off on larger cells. Now I want to interpolate the intensity value from lidar for the 10 sq mile area, starting at a 25 foot cell size, then working down to smaller cells for greater detail to extract smaller sized features (still working towards extracting impervious features like roads and houses). I suspect the intensity data may be better for house extraction, because the roofs are mostly all uniform in intensity clusters values, where with RGB the roof shingles are far to varied for it to classify them cleanly without other classes of non-roofs appearing all over the map in scattered clusters.

Using r.xyz.in, I am wondering which method is the most appropriate for getting an intensity value per cell. Then end result is image clustering/classification from this data (comparing to the multiband true color).

Would “method=mean” make the most sense to use to assign intensity values to the cells with r.in.xyz?
and
which method of interpolation would be best suited to develop a high contrast ‘intensity’ map?

Mark

Mark wrote:

I suspect the intensity data may be better for house extraction,
because the roofs are mostly all uniform in intensity clusters
values, where with RGB the roof shingles are far to varied for it
to classify them cleanly without other classes of non-roofs appearing
all over the map in scattered clusters.

Hi,

an idea about extracting roofs from LIDAR data- create a slope map from r.in.xyz DEM and run i.cluster etc. on that to extract areas of constant slope. Then threshold that to remove small area noise* (say under 25 sq-m) and large areas (roads, etc).

[*] in vectors this would be 'v.clean tool=rmarea', not quite sure about cluster data, maybe r.grow/r.buffer the null cells then back the other direction and use that as a mask??

Not sure how to separate "big box" Walmarts from parking lots, maybe if you set high slopes to NULL you can turn flat areas into islands, then test each island (r.to.vect areas?) for height departure from the surrounding DEM?? perhaps something with r.neighbors?

Hamish

Thanks for the great ideas. Those sound promising. I’ll give them a whirl and report the results!

Mark

On Mon, Jun 2, 2008 at 4:56 AM, Hamish <hamish_b@yahoo.com> wrote:

Mark wrote:

I suspect the intensity data may be better for house extraction,
because the roofs are mostly all uniform in intensity clusters
values, where with RGB the roof shingles are far to varied for it
to classify them cleanly without other classes of non-roofs appearing
all over the map in scattered clusters.

Hi,

an idea about extracting roofs from LIDAR data- create a slope map from r.in.xyz DEM and run i.cluster etc. on that to extract areas of constant slope. Then threshold that to remove small area noise* (say under 25 sq-m) and large areas (roads, etc).

[*] in vectors this would be ‘v.clean tool=rmarea’, not quite sure about cluster data, maybe r.grow/r.buffer the null cells then back the other direction and use that as a mask??

Not sure how to separate “big box” Walmarts from parking lots, maybe if you set high slopes to NULL you can turn flat areas into islands, then test each island (r.to.vect areas?) for height departure from the surrounding DEM?? perhaps something with r.neighbors?

Hamish