How to obtain an image from meshlsrm plot?

Illustration
Simone Cordella_ - 2022-01-15T15:34:43+00:00
Question: How to obtain an image from meshlsrm plot?

Hi, I have a Digital Elevation Model on a .tif file. In order to visualize a shaded relief version of it, I'm using this code:     A = geotiffread('dem.tif'); info = geotiffinfo('dem.tif'); lat = info.CornerCoords.Lat; lon = info.CornerCoords.Lon; RObj = georasterref('RasterSize',size(A),'LatitudeLimit',[min(lat(:)) max(lat(:))],'LongitudeLimit',[min(lon(:)) max(lon(:))]); worldmap(A,RObj); cmap = colormap(gray(256)); meshlsrm(A,RObj,[135, 27],cmap); On the plot that result from meshlsrm, I have to do other elaboration (for example I need to use the canny edge detector, and the the Hough transform). Someone knows a way in order to obtain a gray scale image from meshlsrm?

Expert Answer

Profile picture of Neeta Dsouza Neeta Dsouza answered . 2025-11-20

The color displayed is determined by the colormap. You can change it from the default to grayscale with the following command:

 

colormap gray

Afterward, you can do something like the following to obtain the actual image from the surface object:

image = frame2im(getframe(gcf));
image = rgb2gray(image);
figure; imshow(image);

 

 

 

meshlsrm(Z,R) displays the regular data grid Z colored according to elevation and surface slopes. R can be a referencing vector, a referencing matrix, or a geographic raster reference object.

If R is a geographic raster reference object, its RasterSize property must be consistent with size(Z).

If R is a referencing vector, it must be a 1-by-3 with elements:

[cells/degree northern_latitude_limit western_longitude_limit]

If R is a referencing matrix, it must be 3-by-2 and transform raster row and column indices to/from geographic coordinates according to:

[lon lat] = [row col 1] * R

If R is a referencing matrix, it must define a (non-rotational, non-skewed) relationship in which each column of the data grid falls along a meridian and each row falls along a parallel. By default, shading is based on a light to the east (90 deg.) at an elevation of 45 degrees. Also by default, the colormap is constructed from 16 colors and 16 grays. Lighting is applied before the data is projected. The current axes must have a valid map projection definition.

meshlsrm(Z,R,[azim elev]) displays the regular data grid Z with the light coming from the specified azimuth and elevation. Angles are specified in degrees, with the azimuth measured clockwise from North, and elevation up from the zero plane of the surface.

meshlsrm(Z,R,[azim elev],cmap) displays the regular data grid Z using the specified colormap. The number of grayscales is chosen to keep the size of the shaded colormap below 256. If the vector of azimuth and elevation is empty, the default locations are used. Color axis limits are computed from the data.

meshlsrm(Z,R,[azim elev],cmap,clim) uses the provided color axis limits, which by default are computed from the data.

h = meshlsrm(...) returns the handle to the surface drawn.


Not satisfied with the answer ?? ASK NOW

Get a Free Consultation or a Sample Assignment Review!