Reconstructing a 3D Surface from a 2D Surface using Mesh surface plot in Matlab

11 views (last 30 days)
I am not good at this and I need your help to display a 3D RGB or true color surface from a 2D or single image surface using Mesh surface plot function.
Here's what I did:
I = imread('2d_test_image.png');
figure, imshow(I); title('2D RGB surface')
I = rgb2gray(I);
I = im2double(I);
figure, imshow(I);
shading interp
colormap gray
FV = mesh(I); title('3D GRAY surface')
Here is the 2D RGB image (i.e., 2d_test_image.png ).
Here are results.
I can only display a 3D 'gray' surface. Can you please show me how to display the 3D RGB surface or how to modify the above source code so that I can generate the 'RGB colomap' or produce a 3D surface with colors similar to the 2D RGB surface colors?

Accepted Answer

Iuliu Ardelean
Iuliu Ardelean on 10 Feb 2021
Edited: Iuliu Ardelean on 10 Feb 2021
Use surf instead of mesh
Looks like this:
Here it is:
I = imread('2d_test_image.png');
Igray = rgb2gray(I);
Igray = im2double(Igray);
[x, y] = size(Igray);
[X, Y] = meshgrid(1:x,1:y);
FV = surf(X, Y, Igray, I, 'EdgeColor', 'none');
title('3D GRAY surface') % actually this is no longer a gray surface...

More Answers (0)




Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!