3D viewer cursor coordinates

Hi,
I've been using imshow3Dfull to display a 3D matrix 192*192*17 with pixel value [0,1], it is super useful. I now need to write up a small programme to allow me extract cursor coordinate. I tried control+right click with then export cursor coordinates in 2D only. Does anyone know a way to extract 3D coordinate as [x,y,z]? Alternatively is there another viewer I can use which enables export of [x,y,x] coordinate easily? Essentially I need to write a piece of code which open the data with a 3d viewer, look into the suspicous pixel and click on it which then feed back the [x,y,z] of the cursor.
Link for imshow3dfull:
Many thanks in advance!
Fiona

8 个评论

Rik
Rik 2020-11-16
编辑:Rik 2020-11-16
You should be able to modify that viewer to return the [x,y] position and extract the z position from the slider. Did you try that? Alternatively you could search for other 3D viewers on the FEX.
I have a (by now heavily) modified version of viewer3D that I use for such tasks, where I also integrated WindowLevel.
Hi Rik, Thanks for swift response. I had a quick look into the code and couldn't quite figure out a good solution. Will try viewer3D next.
Hi Rik, can I ask how do you extract datacursor position in viewer3D please? It is not working for me. When I click on it with datacursor mode on, it just won't record any positions....
Can't you create a new button that will get the Value property of your slider?
LOL I’m still trying. Not experienced on this figures... thanks Rik
I'm currently on mobile so I can't give you specific help, but this thread should get you started: https://www.mathworks.com/matlabcentral/answers/483657-how-to-create-a-gui
This is the slider callback function, when you say 'new button which gets the value property of slider' do you mean a new button in the GUI of imshow3Dfull? Sorry after reading all posts and watch videos still can't quite get my head around it! Thanks in advance!!!
% -=< Slice slider callback function >=-
function SliceSlider (hObj,event, Img)
S = round(get(hObj,'Value'));
set(get(gca,'children'),'cdata',squeeze(Img(:,:,S,:)))
caxis([Rmin Rmax])
if sno > 1
set(stxthand, 'String', sprintf('Slice# %d / %d',S, sno));
else
set(stxthand, 'String', '2D image');
end
end
Yes, that is what I mean. You don't need to change the slider callback, you only need the handle to it.

请先登录,再进行评论。

回答(0 个)

类别

帮助中心File Exchange 中查找有关 Just for fun 的更多信息

提问:

2020-11-16

评论:

Rik
2020-11-17

Community Treasure Hunt

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

Start Hunting!

Translated by