示例#1
1
 public Image WybierzPrzekroj(Image obraz3d, int numerPrzekroju)
 {
     int numberSlices = (int)obraz3d.GetDepth();
     if (numberSlices < numerPrzekroju)
     {
         return obraz3d;
     }
     else
     {
         SliceImageFilter sliceFilter = new SliceImageFilter();
         sliceFilter.SetStart(new VectorInt32(new[] { 1, 1, numerPrzekroju }));
         sliceFilter.SetStop(new VectorInt32(new[] { 512, 512, numerPrzekroju + 1 }));
         var obraz2d = sliceFilter.Execute(obraz3d);
         sliceFilter.Dispose();
         return obraz2d;
     }
 }
示例#2
0
        public Image WybierzPrzekroj(Image obraz3d, int przekrojMin, int PrzekrojMax)
        {
            int numberSlices = (int)obraz3d.GetDepth();

            if (numberSlices < przekrojMin)
            {
                return(obraz3d);
            }
            else
            {
                Image obraz2d = new Image();
                if (przekrojMin < PrzekrojMax)
                {
                    if (PrzekrojMax - 1 > numberSlices)
                    {
                        PrzekrojMax = numberSlices;
                    }
                    SliceImageFilter sliceFilter = new SliceImageFilter();
                    sliceFilter.SetStart(new VectorInt32(new[] { 1, 1, przekrojMin }));
                    sliceFilter.SetStop(new VectorInt32(new[] { 512, 512, PrzekrojMax }));
                    obraz2d = sliceFilter.Execute(obraz3d);
                    sliceFilter.Dispose();
                }
                return(obraz2d);
            }
        }
示例#3
0
        private void Podglad_Click(object sender, EventArgs e)
        {
            //Bitmap obraz1 = segm.konwertujObraz(obrazWys, numberofSlice);
            //Form forma = new Wyswietlanie(obraz1);
            //forma.Show();
            obraz obrazForm = new obraz((int)(obrazWys.GetDepth()), obrazWys);

            obrazForm.Show();
        }
示例#4
0
        private void segmentacja_Click(object sender, EventArgs e)
        {
            // obraz obrazForm = new obraz((int)(obraz.GetDepth()),obraz);
            int ilosc_przekrojow = (int)obraz.GetDepth();

            //    var u = obrazForm.ShowDialog();
            //  numberofSlice = obrazForm.numberofSlice;
            obrazWys = segm.segmentujObraz(0, ilosc_przekrojow);
            //           Bitmap og = segm.konwertujObraz(obraz, numberofSlice);
            this.Podglad.Enabled = true;
            this.Zapisz.Enabled  = true;
        }
示例#5
0
        public Image WybierzPrzekroj(Image obraz3d, int numerPrzekroju)
        {
            int numberSlices = (int)obraz3d.GetDepth();

            if (numberSlices < numerPrzekroju)
            {
                return(obraz3d);
            }
            else
            {
                SliceImageFilter sliceFilter = new SliceImageFilter();
                sliceFilter.SetStart(new VectorInt32(new[] { 1, 1, numerPrzekroju }));
                sliceFilter.SetStop(new VectorInt32(new[] { 512, 512, numerPrzekroju + 1 }));
                var obraz2d = sliceFilter.Execute(obraz3d);
                sliceFilter.Dispose();
                return(obraz2d);
            }
        }
示例#6
0
        public Image segmentujObraz(int numerPrzekroj, int numerMaxPrzekroju = 0)
        {
            try {
                Image image;

                if (numerMaxPrzekroju == 0)
                {
                    image = WybierzPrzekroj(obraz, numerPrzekroj);
                }
                else
                {
                    image = WybierzPrzekroj(obraz, numerPrzekroj, numerMaxPrzekroju);
                }

                itk.simple.Image imgWstepnePrzetwarzanie  = this.WstepnePrzetwarzanie(image);
                itk.simple.Image imgSegmentowanaSledziona = this.SegmetacjaSledziony(imgWstepnePrzetwarzanie);
                itk.simple.Image imgNalozenieObrazow      = this.NalozObrazy(image, imgSegmentowanaSledziona);

                itk.simple.Image obrazWysegmentowany = imgNalozenieObrazow;
                uint             e = obraz.GetDimension();
                uint             j = obraz.GetWidth();
                uint             k = obraz.GetDepth();
                uint             o = obrazWysegmentowany.GetDepth();

                return(obrazWysegmentowany);
                //zapiszObraz(obrazWysegmentowany);
            }
            catch (ArgumentNullException e)
            {
                throw new ArgumentNullException("sprawdz czy wczytales obraz");
            }
            catch (Exception e)
            {
                //throw new Exception("blad podczas segmentacji obrazu");
                throw new Exception(e.Message);
            }
        }
示例#7
0
 public Image WybierzPrzekroj(Image obraz3d, int przekrojMin, int PrzekrojMax)
 {
     int numberSlices = (int)obraz3d.GetDepth();
     if (numberSlices < przekrojMin)
     {
         return obraz3d;
     }
     else
     {
         Image obraz2d = new Image();
         if (przekrojMin < PrzekrojMax)
         {
             if (PrzekrojMax-1 > numberSlices)
             {
                 PrzekrojMax = numberSlices;
             }
             SliceImageFilter sliceFilter = new SliceImageFilter();
             sliceFilter.SetStart(new VectorInt32(new[] { 1, 1, przekrojMin }));
             sliceFilter.SetStop(new VectorInt32(new[] { 512, 512, PrzekrojMax }));
             obraz2d = sliceFilter.Execute(obraz3d);
             sliceFilter.Dispose();
         }
         return obraz2d;
     }
 }