3d image of a computed tomography
조회 수: 7 (최근 30일)
이전 댓글 표시
I have many shots from a computed tomography. I have used the matlab patch function to plot a 3d image. Here is the code:
data = smooth3(data);
p = patch(isosurface(data),'FaceColor','yellow', 'EdgeColor', 'none');
isonormals(data,p)
view(3); axis vis3d tight
camlight; lighting phong
There is a spacing of 2mm between each plane of the tomography. The spacing of x and y axis is 1mm. I think the voxel must be rectangular. How can i do it?
댓글 수: 0
답변 (2개)
Sven
2012년 2월 7일
The isosurface function can take in an x, y and z vector specifying the location of each voxel. So try this:
xVec = 1:size(data,2); % "X" is the 2nd dimension of the matrix
yVec = 1:size(data,1); % "Y" is the 1st dimension
zVec = (1:size(data,3))*2; % Multiply by 2 for 2mm spacing
p = patch(isosurface(xVec,yVec,zVec,data),'FaceColor','yellow', 'EdgeColor', 'none');
Does this work for you?
You may also have your exact X, Y, and Z spacing defined in mm, embedded in the .PixelSpacing (for x,y) and .ImagePositionPatient (for each slice of z) fields of the original DICOM files.
댓글 수: 0
SoyLeyenda
2012년 2월 9일
댓글 수: 1
Sven
2012년 2월 17일
As long as your actual pixel (well, "voxel", because it's 3d) dimensions are true to the original voxel space, then I'm afraid that you didn't _lose_ precision at all... it's just that your Z precision was *always* lower than your X-Y-precision. Is the question answered or are there still any issues you're having?
참고 항목
카테고리
Help Center 및 File Exchange에서 3-D Volumetric Image Processing에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!