I`ve been using vtkDICOMDirectory for finding DICOM series in provided folder path. vtkDICOMDirectory find all the studies in the path and gives all series, files of DICOM images, corresponding to the found studies.
This is what i get for some case.

<img src="http://vtk.1045678.n5.nabble.com/file/n5739305/SeriesList.jpg" border="0" class="center"/>

I select some of the series, get files corresponding to that series, load it using vtkDICOMReader and visualize it using vtkImageViewer

      // get files for selected series
       vtkStringArray *sortedFiles = vtkRepresentationReslice::_DICOMDIRECTORY->GetFileNamesForSeries(serieID);

          // read files
        vtkSmartPointer<vtkDICOMReader > reader = vtkSmartPointer<vtkDICOMReader >::New();
        reader-> SetFileNames(sortedFiles );
        reader-> AutoRescaleOff();
        reader-> UpdateInformation();

        vtkSmartPointer<vtkDICOMApplyRescale > rescale   = vtkSmartPointer<vtkDICOMApplyRescale >::New();
        rescale-> SetInputConnection(reader ->GetOutputPort());
        rescale-> Update();

        vtkDICOMMetaData *metaData = reader ->GetMetaData();
        const vtkDICOMValue  &window = metaData ->GetAttributeValue(DC::WindowWidth),
                            & level = metaData->GetAttributeValue (DC::WindowCenter);

       double dWindow = window. AsDouble();
        double dLevel = level. AsDouble();

        vtkSmartPointer<vtkLookupTable > lut = vtkSmartPointer<vtkLookupTable >::New();
        lut-> SetValueRange(0.0, 1.0);            // from black to white
        lut-> SetSaturationRange(0.0, 0.0);// no color saturation
        lut-> SetRange(dLevel - 0.5 * dWindow , dLevel + 0.5 * dWindow );
        lut-> SetRampToLinear();
        lut-> Build();

        vtkSmartPointer<vtkImageMapToColors > colorMapper = vtkSmartPointer<vtkImageMapToColors >::New();
        colorMapper->SetLookupTable (lut );
        colorMapper->SetInputConnection (rescale ->GetOutputPort());

      // visualize loaded image
        _imageViewer->SetInput(colorMapper->GetOutput());
        _imageViewer->GetRenderer ()->ResetCamera();

Now issued are the highilighted cases on figure above. When i load second highlighted case imageViewer shows only one slice.
I figured out later that issues series have two stacks and when i load second stack i get in viewer 301 slices.

         vtkStringArray *stackNames = reader ->GetStackIDs();
         reader-> SetDesiredStackID(stackNames ->GetValue(1));

But, how to find out how many images is in which of the avalable stacks so my project will be able to choose automatically which stack will be loaded ?

Now real problem gives me first highlighted series which have 0 stacks and 1 time slot. It have 30 files but when i load it it have only one slice shown.

Also, is there some way to recognize these testing series, with only few files, without counting files so i can avoid loading it in the project. I can put some threshold based on the number of files but it would be better if there is some DICOM tag which can give me info if series is testing one or not.

Thank in advance

Zarko




        
        
        
<br/><hr align="left" width="300" />
View this message in context: <a href="http://vtk.1045678.n5.nabble.com/vtkDICOMDirectory-and-vtkDICOMReader-issue-with-files-in-the-stack-tp5739305.html">vtkDICOMDirectory and vtkDICOMReader issue with files in the stack.</a><br/>
Sent from the <a href="http://vtk.1045678.n5.nabble.com/VTK-Users-f1224199.html">VTK - Users mailing list archive</a> at Nabble.com.<br/>