set opacity to M x N x P grayscale matrix
4 views (last 30 days)
Show older comments
I have a matrix define as data = rand(M,N,P) where M = 262, N = 359, P = 562. Each element in the matrix gets assigned an intensity value for 0 - 255 depending on input scan data.
E.g. data(200,220,232) = 32 or data(200,220,233) = 156
How can i assign transparency to each element in the matrix based on the intensity value. For example: all intensities below 128 have 0.8 transparency, and every value between 128-255 has linear opacity from 0.1-0.4
This is all in Matlab.
Thank you
0 Comments
Accepted Answer
Youssef Khmou
on 25 Jan 2014
Logical operations can divide the elements, here is the starting point :
M=rand(262,359,562);
Threshold=0.45; % an example
E=M ;% matrix of transparency
E(E<Threshold)=0.8;
E(E>Threshold)=0.4;
2 Comments
Youssef Khmou
on 25 Jan 2014
Edited: Youssef Khmou
on 25 Jan 2014
I can not understand your approach, the proposition i posted is from mathematical viewpoint, but making the transparency in 3D plot is something that needs more details
More Answers (1)
Walter Roberson
on 25 Jan 2014
Transparency is a property of images, not of matrices. And there is no build-in method in MATLAB to create a 4-dimensional plot (three axis plus value at each point = 4 dimensions.) You have to define how you are planning to display the data, and then we can talk about transparency.
2 Comments
Walter Roberson
on 25 Jan 2014
I would have to look more closely at the program some time. I think it is creating patch objects with 3D volume areas (marching cubes algorithm I seem to recall.) If it is, then a patch() would have been generated; try
findobj(gca, 'type', 'patch')
Once you find that patch object, you can adjust it's AlphaCData property
See Also
Categories
Find more on Lighting, Transparency, and Shading in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!