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

2 ビュー (過去 30 日間)
Huayan Wang
Huayan Wang 2018 年 2 月 14 日
コメント済み: Huayan Wang 2018 年 2 月 15 日
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.)
Huayan Wang
Huayan Wang 2018 年 2 月 15 日
This works very well, exactly what I want.
Thank you so much!

サインインしてコメントする。

その他の回答 (0 件)

Community Treasure Hunt

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

Start Hunting!

Translated by