Hi all,
I have 160 slices(408*544*160) with a 3d patch on it. I need to find one point on each slice and take in return a 3d matrix of patch: it is my idea but it seems has a fundamental misunderstanding.
d=zeros(408,544,160);
for i=1:160
figure,imshow(image(:,:,i)),[]);
[a,b]=ginput(1);
z=image(a,b,i);
d(a,b,i)=z;
end
how can i fix it?
I was wondering if I can select random point in each slice?when I use ginput, there is noting to stop it from receiving points. How can take it in return as 3d matrix?

 采纳的回答

Sean de Wolski
Sean de Wolski 2012-2-13

0 个投票

d=zeros(408,544,160);
image = rand(size(d));
for i=1:160
figure,imshow(image(:,:,i),[]);
[a,b]=ginput(1);
a = round(a);
b = round(b);
z=image(a,b,i);d(a,b,i)=z;
end
You have to round the points returned from ginput to account for floating points. I would also recommend against opening a new figure on each iteration.

2 个评论

bahar cham
bahar cham 2012-2-13
Thanks. It works. But, can you say what do you mean:"recommend against opening a new figure on each iteration"and what is your idea?
Sean de Wolski
Sean de Wolski 2012-2-13
well if you run the above code, you'll end up with 160 open figures. Which is a lot of clutter, not to mention used memory. I would either close the figure after ginput() or overwrite the image with each call to imshow().

请先登录,再进行评论。

更多回答(0 个)

类别

在 帮助中心 和 File Exchange 中查找有关 Data Exploration 的更多信息

产品

标签

Community Treasure Hunt

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

Start Hunting!

Translated by