public PixelDataInfo(DicomAttributeCollection dataset) { dataset.LoadDicomFields(this); AspectRatio = PixelAspectRatio.FromString(dataset[DicomTags.PixelAspectRatio].ToString()) ?? new PixelAspectRatio(0, 0); PixelSpacing = PixelSpacing.FromString(dataset[DicomTags.PixelSpacing].ToString()) ?? new PixelSpacing(0, 0); ImagerPixelSpacing = PixelSpacing.FromString(dataset[DicomTags.ImagerPixelSpacing].ToString()) ?? new PixelSpacing(0, 0); }
private static void AssertVolumeSlice(VolumeSlice actualSlice, int expectedRows, int expectedColumns, Vector3D expectedPositionPatient, Vector3D expectedRowOrientationPatient, Vector3D expectedColumnOrientationPatient, float expectedRowSpacing, float expectedColumnSpacing, float expectedSliceThickness, float?expectedSpacingBetweenSlices, string message = null, params object[] args) { const float tolerance = 1e-5f; var msg = !string.IsNullOrEmpty(message) ? "{0} (" + string.Format(message, args) + ")" : "{0}"; Assert.AreEqual(expectedRows, actualSlice.Rows, msg, "Rows"); Assert.AreEqual(expectedColumns, actualSlice.Columns, msg, "Columns"); var imagePositionPatient = ImagePositionPatient.FromString(actualSlice.ImagePositionPatient); Assert.IsNotNull(imagePositionPatient, "ImagePositionPatient"); var actualPositionPatient = new Vector3D((float)imagePositionPatient.X, (float)imagePositionPatient.Y, (float)imagePositionPatient.Z); if (!Vector3D.AreEqual(expectedPositionPatient, actualPositionPatient, tolerance)) { Assert.AreEqual(expectedPositionPatient, actualPositionPatient, msg, "ImagePositionPatient"); } var imageOrientationPatient = ImageOrientationPatient.FromString(actualSlice.ImageOrientationPatient); Assert.IsNotNull(imageOrientationPatient, "ImageOrientationPatient"); var actualRowOrientationPatient = new Vector3D((float)imageOrientationPatient.RowX, (float)imageOrientationPatient.RowY, (float)imageOrientationPatient.RowZ); var actualColumnOrientationPatient = new Vector3D((float)imageOrientationPatient.ColumnX, (float)imageOrientationPatient.ColumnY, (float)imageOrientationPatient.ColumnZ); if (!Vector3D.AreEqual(expectedRowOrientationPatient, actualRowOrientationPatient, tolerance)) { Assert.AreEqual(expectedRowOrientationPatient, actualRowOrientationPatient, msg, "ImageOrientationPatient.Row"); } if (!Vector3D.AreEqual(expectedColumnOrientationPatient, actualColumnOrientationPatient, tolerance)) { Assert.AreEqual(expectedColumnOrientationPatient, actualColumnOrientationPatient, msg, "ImageOrientationPatient.Column"); } var actualPixelSpacing = PixelSpacing.FromString(actualSlice.PixelSpacing); Assert.IsNotNull(actualPixelSpacing, "PixelSpacing"); Assert.AreEqual(expectedRowSpacing, actualPixelSpacing.Row, tolerance, msg, "PixelSpacing.Row"); Assert.AreEqual(expectedColumnSpacing, actualPixelSpacing.Column, tolerance, msg, "PixelSpacing.Column"); Assert.AreEqual(expectedSliceThickness, float.Parse(actualSlice.SliceThickness), tolerance, msg, "SliceThickness"); if (expectedSpacingBetweenSlices.HasValue) { Assert.AreEqual(expectedSpacingBetweenSlices.Value, float.Parse(actualSlice.SpacingBetweenSlices), tolerance, msg, "SpacingBetweenSlices"); } else { Assert.IsEmpty(actualSlice.SpacingBetweenSlices, msg, "SpacingBetweenSlices"); } }