Iterative Closest Point and 3D matrices

Hi,
Unfortunately, my matrices created form a stack of dicom files dont work with ICP . My matrices are 500*500*80 of vertices while the demo provided works with vectors 3*6400. Do you know how to pass from vertices to vectors or more generally how I could reach my goal namely re-positioning a 3d volume ?
Regards.

댓글 수: 2

Matt J
Matt J 2012년 11월 23일
편집: Matt J 2012년 11월 23일
My matrices are 500*500*80 of vertices
Are you sure you don't mean your image volumes are 500x500x80? ICP doesn't seem appropriate if you only have image intensity data, rather than a list of coordinates.
ocelote
ocelote 2012년 11월 23일
편집: ocelote 2012년 11월 23일
Thank you. Is there any way for me to get coordinate from my "volume" of intensity points ?
Would you know any appropriate methodology ?

댓글을 달려면 로그인하십시오.

답변 (1개)

Matt J
Matt J 2012년 11월 23일
편집: Matt J 2012년 11월 23일

0 개 추천

That's a surface segmentation problem. Maybe use BWPERIM in conjunction with FIND/IND2SUB.

댓글 수: 6

ocelote
ocelote 2012년 11월 23일
편집: ocelote 2012년 11월 23일
Thank you for your time. Could you be a bit more specific about the way I could achieve it ?
I managed to see my volume with
p = patch( isosurface(v(1:10:end,1:10:end,1:10:end),0) );
I must have a surface to work with no ?
BWPERIM seems to be for images (2D data), should I use it on every dicom file ?
Matt J
Matt J 2012년 11월 23일
편집: Matt J 2012년 11월 23일
I can't be much more specific, because I don't know anything specific about your data or what surfaces on it you would like to match.
Usually ICP is meant for matching two surfaces, given a list of coordinates lying on those surfaces. If you have a binary map of the object, BWPERIM would return a binary map of its surfaces, so that might be a possible direction to go. You would have to pre-process that map in some way to get rid of surfaces you don't want to include. You can then use FIND and IND2SUB to convert the binary map to 3D coordinates.
Don't know why you think BWPERIM is only for 2D arrays. See "doc BWPERIM".
thank you for your help. I will try to be more specific :
- I have 3 volumes AB (reference), A and B (AB is made of A an B). I am trying to translate and rotate A and B to match AB using ICP.
- As you pointed out above, I had intensity data so I am using isosurface
a = isosurface(Va(1:2:end,1:2:end,1:2:end),0)
a =
vertices: [4525x3 double]
faces: [9050x3 double]
I get the vertices and faces.
- from here, I use
[Ricp Ticp ER t] = icp(M, D, 10);
But the results are quite bad, it plots my volume A which looks like the same as AB (that is normally twice bigger)... and the plot3 function is really poor in rendering.
Matt J
Matt J 2012년 11월 26일
편집: Matt J 2012년 11월 26일
You haven't said what M and D are.
Regardless, it seems strange to me that you would use the 0 isovalue. Doesn't that just give you the background?
ocelote
ocelote 2012년 11월 27일
M is the model (AB) and D is the data (A), a part of AB. Unfortunately the result is http://hpics.li/304865b where the red part (A) becomes twice bigger whereas it should be half. No I dont have the background either I put 1 or 0 in isosurface.
Matt J
Matt J 2012년 11월 27일
Have you verified that the isosurface() output identifies the surface that you want?

댓글을 달려면 로그인하십시오.

카테고리

도움말 센터File Exchange에서 Image Processing Toolbox에 대해 자세히 알아보기

태그

질문:

2012년 11월 23일

Community Treasure Hunt

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

Start Hunting!

Translated by