ginput

조회 수: 3 (최근 30일)
bahar cham
bahar cham 2012년 2월 13일
편집: Youssef Khmou 2013년 10월 10일
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일
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개)

카테고리

Help CenterFile Exchange에서 Specifying Target for Graphics Output에 대해 자세히 알아보기

태그

제품

Community Treasure Hunt

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

Start Hunting!

Translated by