コード例 #1
0
 public ActionResult Put([FromBody] ManualContourDTO contour)
 {
     if (logic.Edit(contour))
     {
         return(Ok());
     }
     return(BadRequest());
 }
コード例 #2
0
        public ActionResult <ManualContourDTO> Get(Guid guid)
        {
            ManualContourDTO contour = logic.Get(guid);

            if (contour == null)
            {
                return(NotFound());
            }

            return(contour);
        }
コード例 #3
0
        public List <ManualContourDTO> FetchByDicomIdToDTOs(string dicomid)
        {
            List <ManualContourDTO> contours = new List <ManualContourDTO>();

            foreach (Guid guid in repository.FetchByDicomId(dicomid))
            {
                ManualContourDTO contour = repository.Load(guid);
                if (contour != null)
                {
                    contours.Add(contour);
                }
            }
            return(contours);
        }
コード例 #4
0
        public List <ManualContourDTO> FetchAllToDTOs()
        {
            List <ManualContourDTO> contours = new List <ManualContourDTO>();

            foreach (Guid guid in repository.FetchAll())
            {
                ManualContourDTO contour = repository.Load(guid);
                if (contour != null)
                {
                    contours.Add(contour);
                }
            }
            return(contours);
        }
コード例 #5
0
        public static StatisticsResult GenerateStatistics(ManualContourDTO contour)
        {
            System.Drawing.Bitmap bitmap = OrthancConnection.GetBitmapByInstanceId(contour.dicomid);
            int width  = bitmap.Width;
            int height = bitmap.Height;

            int[,] matrixWithContour = CannyAlgorithm.MakeMatrixFromPoints(width, height, contour.lines.First().points);

            int count = 0;

            for (int x = 0; x < width; x++)
            {
                for (int y = 0; y < height; y++)
                {
                    if (matrixWithContour[x, y] == 0)
                    {
                        count++;
                    }
                }
            }

            int[,] image = CannyAlgorithm.ReadMatrixFromBitmap(bitmap);


            double pixelSizeX = 0;
            double pixelSizeY = 0;

            List <string> splitString = contour.pixelSpacing.Split('\\').ToList();
            List <double> split       = new List <double>();

            foreach (var s in splitString)
            {
                double d = 0;
                if (double.TryParse(s, System.Globalization.NumberStyles.Number, System.Globalization.CultureInfo.InvariantCulture, out d))
                {
                    split.Add(d);
                }
            }
            if (split.Count >= 2)
            {
                pixelSizeX = split[0];
                pixelSizeY = split[1];
            }

            double pixelAreaInMms   = pixelSizeX * pixelSizeY;
            double pixelLenghtInMms = pixelSizeX;

            return(GenerateStatistics(contour.lines.First().points, matrixWithContour, image, 0, width, 0, height, pixelAreaInMms, pixelLenghtInMms, contour.centralPoints.First()));
        }
コード例 #6
0
        public ManualContourDTO Get(Guid guid)
        {
            ManualContourDTO result = null;

            try
            {
                result = repository.Load(guid);
            }
            catch (Exception e)
            {
                Console.WriteLine("Catched exception: ");
                Console.WriteLine(e.ToString());
            }
            return(result);
        }
コード例 #7
0
        public static ManualContourDTO PrepareContour(ManualContourDTO contour)
        {
            List <Point> result = new List <Point>();
            int          count  = contour.lines.First().points.Count;
            int          i;

            for (i = 0; i < count; i++)
            {
                Point p1 = contour.lines.First().points[i];
                Point p2 = contour.lines.First().points[(i + 1) % count];
                result.Add(p1);
                result.Add(p2);
                result.AddRange(BresenhamClass.Bresenham(new List <Point>(), p1.x, p1.y, p2.x, p2.y));
            }

            contour.lines.First().points = new List <Point>(result);
            return(contour);
        }
コード例 #8
0
        public ActionResult <ManualContourDTO> Post([FromBody] ManualContourDTO contour)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (contour == null)
            {
                return(BadRequest());
            }

            if (contour.lines == null)
            {
                return(BadRequest());
            }

            if (contour.lines.Count == 0)
            {
                return(BadRequest());
            }

            foreach (var l in contour.lines)
            {
                if (l.points == null)
                {
                    return(BadRequest());
                }

                if (l.points.Count < 3)
                {
                    return(BadRequest());
                }
            }

            logic.Add(contour);

            return(CreatedAtAction(nameof(Get),
                                   new { guid = contour.guid }, contour));
        }
コード例 #9
0
 public bool Edit(ManualContourDTO contour)
 {
     return(repository.Edit(contour));
 }
コード例 #10
0
 public void Add(ManualContourDTO contour)
 {
     contour            = PrepareContour(contour);
     contour.statistics = Statistics.GenerateStatistics(contour);
     repository.Save(contour);
 }