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 についてさらに検索

製品

タグ

質問済み:

2012 年 2 月 13 日

編集済み:

2013 年 10 月 10 日

Community Treasure Hunt

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

Start Hunting!

Translated by