BioLib  4.1.1
A GUI-less version of Bio .NET library for editing & annotating various microscopy image formats.
Loading...
Searching...
No Matches
BioLib.QuPath.Image Class Reference

Static Public Member Functions

static Image FromBioImage (BioImage b, int id)
 
static List< ImageFromBioImages (List< BioImage > b, int id)
 

Properties

ServerBuilder ServerBuilder [get, set]
 
int EntryID [get, set]
 
string RandomizedName [get, set]
 
string ImageName [get, set]
 
Dictionary< string, object > Metadata [get, set]
 

Member Function Documentation

◆ FromBioImage()

static Image BioLib.QuPath.Image.FromBioImage ( BioImage b,
int id )
static
338 {
339 QuPath.Image im = new QuPath.Image();
340 im.EntryID = id;
341 im.RandomizedName = Guid.NewGuid().ToString();
342 im.ImageName = b.Filename;
343 im.ServerBuilder = new QuPath.ServerBuilder();
344 im.ServerBuilder.Uri = "file:/" + b.ID.Replace("\\","/");
345 im.ServerBuilder.ProviderClassName = "qupath.lib.images.servers.bioformats.BioFormatsServerBuilder";
346 im.ServerBuilder.Args = new List<string>();
347 im.ServerBuilder.Args.Add("--series");
348 im.ServerBuilder.Args.Add(id.ToString());
349 im.ServerBuilder.Metadata = new QuPath.Metadata();
350 im.ServerBuilder.Metadata.Name = b.Filename;
351 im.ServerBuilder.Metadata.Width = b.SizeX;
352 im.ServerBuilder.Metadata.Height = b.SizeY;
353 im.ServerBuilder.Metadata.Magnification = b.Magnification;
354 im.ServerBuilder.Metadata.IsRGB = b.isRGB;
355 im.ServerBuilder.Metadata.ChannelType = "DEFAULT";
356 im.ServerBuilder.Metadata.PixelCalibration = new PixelCalibration();
357 im.ServerBuilder.Metadata.PixelCalibration.PixelWidth = new PixelDimension();
358 im.ServerBuilder.Metadata.PixelCalibration.PixelWidth.Value = b.PhysicalSizeX;
359 im.ServerBuilder.Metadata.PixelCalibration.PixelWidth.Unit = "µm";
360 im.ServerBuilder.Metadata.PixelCalibration.PixelHeight = new PixelDimension();
361 im.ServerBuilder.Metadata.PixelCalibration.PixelHeight.Value = b.PhysicalSizeY;
362 im.ServerBuilder.Metadata.PixelCalibration.PixelHeight.Unit = "µm";
363 im.ServerBuilder.Metadata.PixelCalibration.ZSpacing = new ZSpacing();
364 if (b.Resolutions[0].PixelFormat == PixelFormat.Format16bppGrayScale || b.Resolutions[0].PixelFormat == PixelFormat.Format48bppRgb)
365 im.ServerBuilder.Metadata.PixelType = "UINT16";
366 else if(b.Resolutions[0].PixelFormat == PixelFormat.Format8bppIndexed || b.Resolutions[0].PixelFormat == PixelFormat.Format24bppRgb)
367 im.ServerBuilder.Metadata.PixelType = "UINT8";
368
369 if (b.PhysicalSizeZ != 0 || b.PhysicalSizeZ < 0)
370 {
371 im.ServerBuilder.Metadata.PixelCalibration.ZSpacing.Value = b.PhysicalSizeZ;
372 im.ServerBuilder.Metadata.PixelCalibration.ZSpacing.Unit = "µm";
373 }
374 else
375 {
376 im.ServerBuilder.Metadata.PixelCalibration.ZSpacing.Value = 1;
377 im.ServerBuilder.Metadata.PixelCalibration.ZSpacing.Unit = "z-slice";
378 }
379 im.ServerBuilder.Metadata.PixelCalibration.TimeUnit = "SECONDS";
380 im.ServerBuilder.Metadata.PixelCalibration.Timepoints = new List<object>();
381 if(b.SizeT > 1)
382 for (int i = 0; i < b.SizeT; i++)
383 {
384 im.ServerBuilder.Metadata.PixelCalibration.Timepoints.Add(0.0);
385 }
386 im.ServerBuilder.Metadata.PreferredTileHeight = b.SizeX;
387 im.ServerBuilder.Metadata.PreferredTileWidth = b.SizeY;
388 im.ServerBuilder.Metadata.SizeT = b.SizeT;
389 im.ServerBuilder.Metadata.SizeZ = b.SizeZ;
390 im.Metadata = new Dictionary<string, object>();
391 double max = Double.MinValue;
392 foreach (Bitmap item in b.Buffers)
393 {
394 foreach (var s in item.Stats)
395 {
396 if(max < s.Max)
397 max = s.Max;
398 }
399 }
400 im.ServerBuilder.Metadata.MaxValue = (int)max;
401 im.ServerBuilder.Metadata.Levels = new List<Level>();
402 int li = 0;
403 foreach (var r in b.Resolutions)
404 {
405 Level l = new Level();
406 l.Width = r.SizeX;
407 l.Height = r.SizeY;
408 if (b.Type != BioImage.ImageType.stack)
409 l.Downsample = 1;
410 else if (b.Type != BioImage.ImageType.pyramidal)
411 l.Downsample = b.GetLevelDownsample(li);
412 else
413 l.Downsample = 1;
414 im.ServerBuilder.Metadata.Levels.Add(l);
415 li++;
416 }
417 im.ServerBuilder.Metadata.Channels = new List<Channel>();
418 foreach (AForge.Channel c in b.Channels)
419 {
420 if(b.isRGB)
421 {
422 QuPath.Channel rr = new QuPath.Channel();
423 QuPath.Channel gg = new QuPath.Channel();
424 QuPath.Channel bb = new QuPath.Channel();
425 rr.Name = c.Name;
426 gg.Name = c.Name;
427 bb.Name = c.Name;
428 int alpha = 255;
429 rr.Color = -65536;
430 gg.Color = -16711936;
431 bb.Color = -16776961;
432 im.ServerBuilder.Metadata.Channels.Add(rr);
433 im.ServerBuilder.Metadata.Channels.Add(gg);
434 im.ServerBuilder.Metadata.Channels.Add(bb);
435 }
436 else
437 {
438 QuPath.Channel rr = new QuPath.Channel();
439 rr.Color = (255 << 24) | (c.EmissionColor.R << 16) | (c.EmissionColor.G << 8) | c.EmissionColor.B;
440 im.ServerBuilder.Metadata.Channels.Add(rr);
441 }
442
443 }
444 im.ServerBuilder.BuilderType = "uri";
445 return im;
446 }

◆ FromBioImages()

static List< Image > BioLib.QuPath.Image.FromBioImages ( List< BioImage > b,
int id )
static
448 {
449 List<Image> images = new List<Image>();
450 foreach (var image in b)
451 {
452 images.Add(FromBioImage(image,id));
453 id++;
454 }
455 return images;
456 }

Property Documentation

◆ EntryID

int BioLib.QuPath.Image.EntryID
getset
333{ get; set; }

◆ ImageName

string BioLib.QuPath.Image.ImageName
getset
335{ get; set; }

◆ Metadata

Dictionary<string, object> BioLib.QuPath.Image.Metadata
getset
336{ get; set; }

◆ RandomizedName

string BioLib.QuPath.Image.RandomizedName
getset
334{ get; set; }

◆ ServerBuilder

ServerBuilder BioLib.QuPath.Image.ServerBuilder
getset
332{ get; set; }

The documentation for this class was generated from the following file: