great! thanks a lot! On Wed, Apr 1, 2009 at 1:57 PM, Xiao Han <[email protected]> wrote: > I didn't find any ITK filter to do this, so I just wrote a simple function > myself. > I use an array (zSlicePos array) to store the slice position for each slice > of the original non-uniform data. > Then, for each slice of the target uniformly-spaced image, > I first compare its z-coordinate with the entries of the slice-position > array to find the indexes of the > two closest slices in the original data, one to the left (or top) and one to > the right (or bottom). > Then a simple interpolation can be performed, as in the following pheudo > code: > > // compute the weights for interpolation in z-direction > (slice-direction) > // zSlicePos stores the physical z-coordinate for each slice of the > original data > // "leftslice" and "rightslice" are the indexes of the two closest > slices of the original data > // "z" is the physical coordinate of the slice (of the target > uniform-spacing image) to be interpolated > leftweight = zSlicePos[leftslice] - z; > rightweight = zSlicePos[rightslice] - z; > > // perform interpolation for each voxel on the current slice > for(int yindex = 0; yindex < newYSize; yindex++) > { > for(int xindex = 0; xindex < newXSize; xindex++) > { > newVal = leftweight* oldImage[xindex][yindex][leftslice] - > > rightweight*oldImage[xindex][yindex][rightslice]; > newVal = newVal/(leftweight - rightweight); > newImage[xindex][yindex][zindex] = newVal; > } > } > > Of cause, the size and spacing of the target uniform-spacing image have to > be determined before computing the interpolation. > I used the median value of the original set of unevenly slice-spacing values > as the spacing of the final image, but you may prefer to use the minimum > value or any other > criterion. The origin and size of the new image can be set to cover the > physical expansion of the original set of slices. > > Hope this helps, > > Xiao > > > > > On Wed, Apr 1, 2009 at 10:55 AM, sebastian ordas <[email protected]> > wrote: >> >> thanks Xiao. >> >> so what you suggest is to do an interpolation along the z axis, right? >> but how to take into account the uneven spacing in that interpolation? >> Is there any ITK filter for this aim? >> >> thanks >> sebastian >> >> On Wed, Apr 1, 2009 at 12:49 PM, Xiao Han <[email protected]> wrote: >> > Unevenly spaced slices happen a lot for DICOM images as well. >> > What I did is to first load the data to a 3D volume (ignore the uneven >> > spacing at the file reading step), >> > then re-sample this temporary volume to uniform spacing as the final >> > loaded >> > image. >> > The re-sampling is pretty simple since only interpolation along the >> > slice >> > direction is needed. >> > >> > I think this re-sampling step is unavoidable, but it only need be done >> > once >> > and all later image manipulation can >> > simply use the re-sampled, uniformly-spaced image. >> > >> > Hope this helps, >> > >> > Xiao >> > >> > >> > On Wed, Apr 1, 2009 at 8:09 AM, sebastian ordas >> > <[email protected]> >> > wrote: >> >> >> >> Hi Team, >> >> >> >> I would like to extend the raw reader to allow for importing unevenly >> >> spaced slices (jpeg images) into a single data set? >> >> I could have a separate text file with the interslice separation, but >> >> how to gather the slices into a single volume? mitk::Image does not >> >> allow such arrangement, right? >> >> >> >> Any advice would be greatly appreciated. >> >> >> >> best regards, >> >> sebastian >> >> >> >> >> >> >> >> ------------------------------------------------------------------------------ >> >> _______________________________________________ >> >> mitk-users mailing list >> >> [email protected] >> >> https://lists.sourceforge.net/lists/listinfo/mitk-users >> > >> > > >
------------------------------------------------------------------------------ _______________________________________________ mitk-users mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/mitk-users
