public TissueAnnotaionList groubByOnClassAndOthers(String ClassName) { TissueAnnotaionList newList = new TissueAnnotaionList(); foreach (TissueAnnotationClass annotaion in this.tissueList) { TissueAnnotationClass newAnnotaion = annotaion.Clone(); if (!newAnnotaion.getAnnotaionClass().Equals(ClassName)) { newAnnotaion.setAnnotaionClassOther(); } newList.add(newAnnotaion); } newList.sort(); return(newList); }
private static TissueAnnotaionList GetAnnotaions(String srcSlides, String outputPics) { TissueAnnotaionList annotationList = new TissueAnnotaionList(); int i = 0; //Get Anotaions from silde foreach (var slideName in Util.GetSlideFilenames(new String[] { srcSlides })) { using (var slideCache = new SlideCache(slideName)) { Parallel.ForEach(slideCache.Slide.GetAnnotations(), (annotation) => { if (abort != 0) { if (i >= abort) { return; } i++; } //Annotaions Bitmap extrahieren var contained = new List <IAnnotation>(); foreach (var candidate in slideCache.Slide.GetAnnotations()) { if (candidate == annotation) { continue; } var rectangle = annotation.BoundingBox; rectangle.Intersect(candidate.BoundingBox); if (rectangle.IsEmpty) { continue; } if (annotation.BoundingBox.Contains(candidate.BoundingBox)) { contained.Add(candidate); } } using (Bitmap annotationBitmap = annotation.Extract(1, contained)) { TissueAnnotationClass tissueAnnotation = new TissueAnnotationClass(annotation.Id, annotation.Name, slideCache.SlideName); //Werte Berechnsen tissueAnnotation = tissueAnnotation.ComputeFeatureValues(annotationBitmap); //Zur Liste hinzufügren annotationList.add(tissueAnnotation); //FOR DEBUG Save Image if (isSave) { annotationBitmap.Save(outputPics + "\\" + tissueAnnotation + ".png"); } Console.WriteLine(tissueAnnotation + " exc:" + contained.Count); } }); if (abort != 0 && i >= abort) { return(annotationList); } } } return(annotationList); }