Esempio n. 1
0
        /// <summary>
        /// Assumes input stream contains gzipped DICOM file contents.
        /// </summary>
        /// <param name="inputStream">The input stream.</param>
        /// <returns></returns>
        public DecodedSegmentationTaskData Decode(Stream inputStream)
        {
            // Get Dicom Files
            var dicomFolders = DicomZipSeries.DecompressSegmentationData(inputStream);
            var output       = LoadVolumes(dicomFolders);

            // The primary series is always the first volume in the input/output data
            // we take the first set of DICOM identifiers of that series.
            var firstIdentifiers = output.First().Value.Identifiers.First();

            return(new DecodedSegmentationTaskData(output, firstIdentifiers.Series.SeriesInstanceUid, firstIdentifiers.Patient.Id));
        }
        /// <summary>
        /// Given a compressed package of DICOM data, reads MedicalVolumes from the package.
        /// </summary>
        /// <param name="compressedData"></param>
        /// <returns></returns>
        public static IReadOnlyDictionary <string, MedicalVolume> LoadCompressedImageSeries(byte[] compressedData)
        {
            var dicomFolders = DicomZipSeries.DecompressSegmentationData(compressedData);

            var result = new Dictionary <string, MedicalVolume>();

            foreach (var(channelId, content) in dicomFolders)
            {
                result.Add(channelId, LoadVolume(content));
            }

            return(result);
        }