BioLib  3.6.2
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]
 

Detailed Description

Definition at line 325 of file QuPath.cs.

Member Function Documentation

◆ FromBioImage()

static Image BioLib.QuPath.Image.FromBioImage ( BioImage b,
int id )
static

Definition at line 332 of file QuPath.cs.

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

◆ FromBioImages()

static List< Image > BioLib.QuPath.Image.FromBioImages ( List< BioImage > b,
int id )
static

Definition at line 442 of file QuPath.cs.

443 {
444 List<Image> images = new List<Image>();
445 foreach (var image in b)
446 {
447 images.Add(FromBioImage(image,id));
448 id++;
449 }
450 return images;
451 }

Property Documentation

◆ EntryID

int BioLib.QuPath.Image.EntryID
getset

Definition at line 328 of file QuPath.cs.

328{ get; set; }

◆ ImageName

string BioLib.QuPath.Image.ImageName
getset

Definition at line 330 of file QuPath.cs.

330{ get; set; }

◆ Metadata

Dictionary<string, object> BioLib.QuPath.Image.Metadata
getset

Definition at line 331 of file QuPath.cs.

331{ get; set; }

◆ RandomizedName

string BioLib.QuPath.Image.RandomizedName
getset

Definition at line 329 of file QuPath.cs.

329{ get; set; }

◆ ServerBuilder

ServerBuilder BioLib.QuPath.Image.ServerBuilder
getset

Definition at line 327 of file QuPath.cs.

327{ get; set; }

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