Ejemplo n.º 1
0
        public static DRR ParseDICOM(string dcmFile)
        {
            var drr = new DRR();
            var dcm = DICOMObject.Read(dcmFile);

            if (!dcm.IsDRR())
            {
                throw new Exception("DICOM object not DRR");
            }

            var sel = dcm.GetSelector();

            //READ VOXELS TO MAT
            var pixels = SliceReader.ReadVoxels(dcm);

            var window = sel.WindowWidth.Data;
            var level  = sel.WindowCenter.Data;

            using (var im = new Mat((int)sel.Rows.Data, (int)sel.Columns.Data, MatType.CV_32FC1, pixels.ToArray()))
            {
                drr.Image = im.WindowAndLevel(level, window).CvtColor(ColorConversionCodes.GRAY2BGR);
            }

            var orient = PatientPosition.FromAbbreviation(sel.PatientPosition.Data);

            FieldRenderer.Render(sel, drr);

            //DRAW ISO
            var iso = sel.IsocenterPosition?.Data_;

            if (iso != null)
            {
                var identity    = MatMaker.Identity(4, 4);
                var iso3d       = iso.ToPoint3f();
                var gantryAngle = sel.GantryAngle.Data;
                var collAngle   = sel.BeamLimitingDeviceAngle.Data;
                var tableAngle  = sel.PatientSupportAngle.Data;
                var dcm2IEC     = Transform.DICOM2IEC(orient.Orientation);
                var tx          = Transform.GantryTransform(gantryAngle);

                // iso3d = Transform.IECToDICOM(orient.Orientation).TransformPoint3f(isoDICOM_BEVCoord);
                var sid = sel.RTImageSID.Data;
                var mag = 1.0f;// (float)(sid / (sid - isoDICOM_BEVCoord.Z));

                var origin = new Point2f((float)sel.RTImagePosition.Data_[0], (float)sel.RTImagePosition.Data_[0]);

                var spacing = sel.ImagePlanePixelSpacing.Data_;

                // var isoDICOM_BEV = Transform.IECToDICOM(orient.Orientation).TransformPoint3f(isoIEC_BEV);
                GraticuleRenderer.Render(drr.Image, collAngle, spacing[0]);
                //drr.Image.Line(iso2D, pt2,
                //  new Scalar(255, 255, 0), 1, LineTypes.Link8);
                drr.Label = sel.RTImageLabel?.Data;
            }



            return(drr);
        }
Ejemplo n.º 2
0
Archivo: DFT.cs Proyecto: nampn/ODental
 private string ConvertMaritalStatus(PatientPosition patpos)
 {
     switch(patpos){
         case PatientPosition.Single:
             return "Single";
         case PatientPosition.Married:
             return "Married";
         case PatientPosition.Divorced:
             return "Divorced";
         case PatientPosition.Widowed:
             return "Widowed";
         case PatientPosition.Child:
             return "Single";
         default:
             return "Single";
     }
 }
Ejemplo n.º 3
0
        private string ConvertMaritalStatus(PatientPosition patpos)
        {
            switch (patpos)
            {
            case PatientPosition.Single:
                return("Single");

            case PatientPosition.Married:
                return("Married");

            case PatientPosition.Divorced:
                return("Divorced");

            case PatientPosition.Widowed:
                return("Widowed");

            case PatientPosition.Child:
                return("Single");

            default:
                return("Single");
            }
        }