private string DoInnerTissueSegmentation(Image <Bgr, byte> img, Image <Gray, byte> mask, string filename) { InnerTissueSegmentation seg = new InnerTissueSegmentation(img.Clone(), mask.Clone(), registrationParameters.InnerStructuresSegParams); seg.Execute(); UMat innerMask = seg.GetOutput()[0].Clone(); seg.Dispose(); string filepathResult = registrationParameters.OutputDirectory + filename; ReadWriteUtils.WriteUMatToFile(filepathResult, innerMask); return(filepathResult); }
/// <summary> /// Do segmentation of inner structures of the tissue for a given image. /// </summary> /// <param name="filename">image filename</param> /// <param name="parameters">registration parameters containing segmentation params</param> /// <returns>returns the segmentation instance</returns> private InnerTissueSegmentation GetInnerStructureSegmentation(string filename) { Image <Bgr, byte> image = ReadWriteUtils.ReadOpenCVImageFromFile <Bgr, byte>(filename); WholeTissueSegmentation segImage = new WholeTissueSegmentation(image, _parameters.WholeTissueSegParams); segImage.Execute(); Image <Gray, byte> wholeMask = segImage.GetOutput().Clone(); segImage.Dispose(); InnerTissueSegmentation innerSegImage = new InnerTissueSegmentation(image, wholeMask, _parameters.InnerStructuresSegParams); innerSegImage.Execute(); return(innerSegImage); }
private void buttonPreview_Click(object sender, EventArgs e) { Cursor.Current = Cursors.WaitCursor; if (image != null) { WholeTissueSegmentation segImage = new WholeTissueSegmentation(image, segmentationParametersWholeTissue); segImage.Execute(); Image <Gray, byte> mask = segImage.GetOutput().Clone(); segImage.Dispose(); if (mask != null) { InnerTissueSegmentation seg = new InnerTissueSegmentation(image.Clone(), mask.Clone(), segmentationParametersInnerTissue); seg.Execute(); List <UMat> result = seg.GetOutput(); UMat a = new UMat(); result[0].Clone().ConvertTo(a, Emgu.CV.CvEnum.DepthType.Cv8U); UMat b = new UMat(); result[1].Clone().ConvertTo(b, Emgu.CV.CvEnum.DepthType.Cv8U); seg.Dispose(); if (pictureBoxSegmentation1.Image != null) { this.Invoke(new MethodInvoker(delegate() { pictureBoxSegmentation1.Image.Dispose(); pictureBoxSegmentation1.Image = null; })); } pictureBoxSegmentation1.Image = a.Bitmap; if (pictureBoxSegmentation2.Image != null) { this.Invoke(new MethodInvoker(delegate() { pictureBoxSegmentation2.Image.Dispose(); pictureBoxSegmentation2.Image = null; })); } pictureBoxSegmentation2.Image = b.Bitmap; } } Cursor.Current = Cursors.Default; }