# Finding the coordinates of a points of 2D projection in 3D volume

13 次查看（过去 30 天）
Hi,
I already got the projection of a 3D image on the axial plane, so now, I have the 2D projection of that image. I selected some points on the 2D projection and now I want to find the location of those points on the 3D image. Does any one know how I can find the coordinates of those points?
##### 3 个评论显示 1更早的评论隐藏 1更早的评论
The image with star points are those I want to find in 3D image and the image that I showed it in 3D slicer is my 3D image. I had coordinates of star points.
darova 2020-5-17

### 回答（4 个）

Charles Mistretta 2021-5-12
I am not good matlab programmer but maybe this will get you started. I hav a 3d volume called temp
I make mips in all three directions and project the intensity values (1) throughout the volume
When I add up all these backprojected values I get three where the bacprojections overlap
Then I apply a function that gives the coordinates at the minimum
%find 3d coordinates of point identfied in mipt images through volume
% multiply through the volume at point identified in three mip views
%start wth volume called temp
tempmip2=squeeze(max(temp,[],2));
figure, imshow(tempmip2(:,:),[])
title 'temp2'
tempmip1=squeeze(max(temp,[],1));
figure, imshow(tempmip1(:,:),[])
title 'temp1'
tempmip3=squeeze(max(temp,[],3));
figure, imshow(tempmip3(:,:),[])
title 'temp3'
drawnow
%make all necessary volumes the same
tempmult1=zeros(512,512,394);
tempmult2=zeros(512,512,394);
tempmult3=zeros(512,512,394);
tempmult12=zeros(512,512,394);
tempmult123=zeros(512,512,394);
%multiply throughout volume by value in mip
for x=1:512
x
tempmult1(x,289,15)=tempmip1(289,15);
end
max(max(max(tempmult)))
for y=1:512
y
tempmult2(196,y,15)=tempmip2(196,15);
end
max(max(max(tempmult)))
tempmult12(:,:,:)=tempmult1(:,:,:)+tempmult2(:,:,:);
max(max(max(tempmult12)))
for z=1:394
z
tempmult3(:,:,z)=tempmip3(197,296);
end
max(max(max(tempmult3)))
% add all the volume They should add at the point related to the points
% chosen in the mips
tempmult123(:,:,:)=tempmult1(:,:,:)+tempmult2(:,:,:)+tempmult3(:,:,:);
max(max(max(tempmult123(:,:,:))))
%this was a function previously given to me someone named Walter-sorry -lost
%last name
[~, linearidx] = max(tempmult123(:));
[r,c,p] = ind2sub(size(tempmult123), linearidx);
%this give 3d coords corresponding to points chosen in MIPs
[r,c,p]
% the points identified in the three mip views might not be consistent so it might be good to do some blurring along the way
##### 0 个评论显示 -2更早的评论隐藏 -2更早的评论

Charles Mistretta 2021-5-12
send e-mail to camistre@wisc.edu and I will send you the volume called temp which is an angiogram
##### 0 个评论显示 -2更早的评论隐藏 -2更早的评论

Charles Mistretta 2021-5-12
The script I sent was probably too complicated.You can just get the coordinates by placing your points in the three views. The key thing is that you need three views to tease ut the coordinates. One 2d image wont provide that informationn
##### 0 个评论显示 -2更早的评论隐藏 -2更早的评论

Tim 2021-5-20
What kind of projection are you using? Only some projections allow for direct correspondence between values in the projection and locations in the volume (e.g. MIP values can be associated with volume indices, assuming there are no repeat values, but averages cannot). If you are using MIP's, the easiest way is simply to do something like:
[Projection, Indices_of_max_along_MIP_axis] = max(volume, [], MIP_axis);
Use the indices of the feature selected in the projection to look up the indices along the MIP axis. The other indices are just the indices along the first and second dimensions of the projection for the value you are selecting.
But this only works for MIP's, and not even then sometimes (imagine a uniform value cube). The best way to locate a volume is to use an actual volume visualizer, vs. working with a projection.

### 类别

Help CenterFile Exchange 中查找有关 Display and Exploration 的更多信息

### Community Treasure Hunt

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

Start Hunting!

Translated by