how to superimpose a surface plot on a different size gray scale image

2 次查看(过去 30 天)
I have a grayscale image which has a size of 2448*2048.
I have a surface plot on a mesh grid of (1:110, 1:92)
Their data numbers are totally different. How can I make the grayscale image as the background and make the surface fit right onto it and transparent so that I can see the background image through the surface plot at the same I can still draw ROI on the surface plot with the roipoly function?

采纳的回答

Walter Roberson
Walter Roberson 2018-2-14
Look at the XData and YData parameters of image(): you can specify the coordinates of the centers of the bottom left and upper right pixels. Getting them to line up exactly with the boundaries of (for example) 1:110 is a bit of a nuisance because you have to account for the 1/2 pixel, which will be 1/2448/2 or 1/2048/2 of the image, but you can do it (but it's usually easier to just let half a pixel hang outside the surf plot.)
When you create the surf() plot, you will probably want to use 'edgecolor', 'none'. Make it transparent by passing in 'AlphaData', such as .8 .
  3 个评论
Walter Roberson
Walter Roberson 2018-2-14
All points in the image() are considered to have Z of 0, so Z below 0 on the surface plot would be "behind" the image.
You should consider using
surf(X, Y, ones(size(Z)), Z)
so that your Z data gets interpreted as "color" and so MATLAB thinks your surface is at 1 (and thus "above" your image.)

请先登录,再进行评论。

更多回答(0 个)

Community Treasure Hunt

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

Start Hunting!

Translated by