www.pudn.com > V3D_Viewer_1.01_SourceCode.zip > readVoxelData.cs


using System; 
using System.Collections.Generic; 
using System.Text; 
 
namespace V3D_Viewer 
{ 
    class readVoxelData 
    { 
        public vtk.vtkImageData VoxelData = new vtk.vtkImageData(); 
        public int[] dimensions = new int[3] { 0, 0, 0 }; 
        public double[] spacing = new double[3]; 
        public double[] metaScalarRange = new double[2] { 0, 0 }; 
        public string info = ""; 
 
        public void ReadVTKV3D(string filename) 
        { 
            readv3dinfo V3Dfileinfo = new readv3dinfo(); 
            V3Dfileinfo.getv3dinfo(filename); 
 
            vtk.vtkImageReader V3Dreader = new vtk.vtkImageReader(); 
            //V3Dreader.RemoveAllInputs(); 
            // all the slices are in one file 
            V3Dreader.SetFileDimensionality(3); 
 
            // image is greyscale 
            V3Dreader.SetNumberOfScalarComponents(1); 
 
            // 2 bytes per voxel 
            V3Dreader.SetDataScalarTypeToUnsignedShort(); 
 
            // volume dimension sizes 
            int maxx = V3Dfileinfo.v3dsizes[0] - 1; 
            int maxy = V3Dfileinfo.v3dsizes[1] - 1; 
            int maxz = V3Dfileinfo.v3dsizes[2] - 1; 
 
            V3Dreader.SetDataExtent(0, maxx, 0, maxy, 0, maxz); 
 
            //voxel spacing 
            spacing = V3Dfileinfo.v3dscales; 
            V3Dreader.SetDataSpacing(spacing); 
 
            // set to zero unless you know 
            double[] origing = new double[3] { 0, 0, 0 }; 
            V3Dreader.SetDataOrigin(origing); 
             
            V3Dreader.SetHeaderSize((uint)V3Dfileinfo.v3doffset); 
 
            // set filename 
            V3Dreader.SetFileName(V3Dfileinfo.v3dfilename); 
 
            V3Dreader.Update(); 
 
            vtk.vtkImageChangeInformation imageChangeInformation = new vtk.vtkImageChangeInformation(); 
            imageChangeInformation.SetInput(V3Dreader.GetOutput()); 
            imageChangeInformation.CenterImageOn(); // Centered the image here.... 
            imageChangeInformation.Update(); 
 
            VoxelData = imageChangeInformation.GetOutput(); 
 
            spacing = VoxelData.GetSpacing(); 
            int numberofpixels = VoxelData.GetNumberOfPoints(); 
            dimensions = VoxelData.GetDimensions(); 
            metaScalarRange = VoxelData.GetScalarRange(); 
            double[] origin = VoxelData.GetOrigin(); 
                 
            info = "\r\n VTK file read, parameters: \r\n"; 
            info += "Volume dimensions : " + dimensions[0] + " " + dimensions[1] + " " + dimensions[2] + "\r\n"; 
            info += "Volume scales : " + spacing[0] + " " + spacing[1] + " " + spacing[2] + "\r\n"; 
            info += "Volume origin: " + origin[0] + " " + origin[1] + " " + origin[2] + "\r\n"; 
            info += "Scalar range : " + metaScalarRange[0] + " " + metaScalarRange[1] + "\r\n"; 
            info += "Number of Pixels : " + numberofpixels + "\r\n"; 
            GC.Collect(); 
       } 
 
        public void readVTKDicom(string dirname) 
        { 
            vtk.vtkDICOMImageReader DICOMreader = new vtk.vtkDICOMImageReader(); 
            DICOMreader.SetDirectoryName(dirname); 
            DICOMreader.SetDataOrigin(0, 0, 0); 
            DICOMreader.Update(); 
 
            vtk.vtkImageChangeInformation imageChangeInformation = new vtk.vtkImageChangeInformation(); 
            imageChangeInformation.SetInput(DICOMreader.GetOutput()); 
            imageChangeInformation.CenterImageOn(); // Centered the image here.... 
            imageChangeInformation.Update(); 
 
            VoxelData = imageChangeInformation.GetOutput(); 
 
            spacing = VoxelData.GetSpacing(); 
            int numberofpixels = VoxelData.GetNumberOfPoints(); 
            dimensions = VoxelData.GetDimensions(); 
            metaScalarRange = VoxelData.GetScalarRange(); 
            double[] origin = VoxelData.GetOrigin(); 
        
            info = "\r\n VTK Dicom dir read, parameters: \r\n"; 
            info += "Volume dimensions : " + dimensions[0] + " " + dimensions[1] + " " + dimensions[2] + "\r\n"; 
            info += "Volume scales : " + spacing[0] + " " + spacing[1] + " " + spacing[2] + "\r\n"; 
            info += "Scalar range : " + metaScalarRange[0] + " " + metaScalarRange[1] + "\r\n"; 
            info += "Volume origin: " + origin[0] + " " + origin[1] + " " + origin[2] + "\r\n"; 
            info += "Number of Pixels : " + numberofpixels + "\r\n"; 
            GC.Collect(); 
        } 
    } 
}