BioImager  3.9.1
A .NET microscopy imaging library. Supports various microscopes by using imported libraries & GUI automation. Supported libraries include PriorĀ® & ZeissĀ® & all devices supported by Micromanager 2.0 and python-microscope.
Loading...
Searching...
No Matches
BioImager.SlideImage Class Reference

openslide wrapper More...

Inheritance diagram for BioImager.SlideImage:

Public Member Functions

 SlideImage ()
 
ImageDimension GetLevelDimension (int level)
 Get the dimensions of a level. More...
 
IEnumerable< ImageDimension > GetLevelDimensions ()
 Get all level dimensions. More...
 
unsafe byte[] ReadRegion (int level, long x, long y, long width, long height)
 Copy pre-multiplied BGRA data from a whole slide image. More...
 
unsafe bool TryReadRegion (int level, long x, long y, long width, long height, ZCT coord, out byte[] data)
 Copy pre-multiplied BGRA data from a whole slide image. More...
 
void Close ()
 
void Dispose ()
 
async Task< byte[]> ReadRegionAsync (int level, long curLevelOffsetXPixel, long curLevelOffsetYPixel, int curTileWidth, int curTileHeight, ZCT coord)
 

Static Public Member Functions

static string DetectVendor (string filename)
 Quickly determine whether a whole slide image is recognized. More...
 
static void Initialize (string path=null)
 Add .dll directory to PATH More...
 
static SlideImage Open (BioImage b)
 Open. More...
 
static double CalculateBaseFactor (int originalResolution, int lastLevelResolution, int totalLevels)
 Calculates the base downsampling factor between two levels of a slide. More...
 
static List< double > GetLevelDownsamples (double baseDownsampleFactor, int totalLevels)
 Calculates the downsample factors for each level of a slide. More...
 

Protected Member Functions

virtual void Dispose (bool disposing)
 Dispose More...
 

Properties

BioImage BioImage [get, set]
 
int LevelCount [get]
 Get the number of levels in the whole slide image. More...
 
ImageDimension Dimensions [get]
 Get the dimensions of level 0 (the largest level). Exactly equivalent to calling GetLevelDimensions(0). More...
 

Detailed Description

openslide wrapper

Definition at line 19 of file SlideImage.cs.

Constructor & Destructor Documentation

◆ SlideImage()

BioImager.SlideImage.SlideImage ( )

Parameters
handle
isOwnerclose handle when disposed
Exceptions
OpenSlideException

Definition at line 49 of file SlideImage.cs.

50 {
51
52 }

Referenced by BioImager.SlideImage.Open().

Member Function Documentation

◆ CalculateBaseFactor()

static double BioImager.SlideImage.CalculateBaseFactor ( int  originalResolution,
int  lastLevelResolution,
int  totalLevels 
)
static

Calculates the base downsampling factor between two levels of a slide.

Parameters
originalDimensionThe dimension (width or height) of the original level.
nextLevelDimensionThe dimension (width or height) of the next level.
Returns
The base downsampling factor.

Definition at line 151 of file SlideImage.cs.

152 {
153 if (totalLevels <= 1)
154 {
155 throw new ArgumentException("Total levels must be greater than 1 to calculate a base factor.");
156 }
157 if (lastLevelResolution <= 0 || originalResolution <= 0)
158 {
159 throw new ArgumentException("Resolutions must be greater than 0.");
160 }
161
162 // Calculate the base downsampling factor
163 double baseFactor = Math.Pow((double)originalResolution / lastLevelResolution, 1.0 / (totalLevels - 1));
164 return baseFactor;
165 }

◆ Close()

void BioImager.SlideImage.Close ( )

Definition at line 265 of file SlideImage.cs.

266 {
267
268 }

◆ DetectVendor()

static string BioImager.SlideImage.DetectVendor ( string  filename)
static

Quickly determine whether a whole slide image is recognized.

If OpenSlide recognizes the file referenced by filename , return a string identifying the slide format vendor.This is equivalent to the value of the NativeMethods.VENDOR property. Calling Open(string) on this file will return a valid OpenSlide object or an OpenSlide object in error state.

Otherwise, return null.Calling Open(string) on this file will also return null.

Parameters
filenameThe filename to check. On Windows, this must be in UTF-8.
Returns
An identification of the format vendor for this file, or NULL.

Definition at line 39 of file SlideImage.cs.

40 {
41 return filename;
42 }

◆ Dispose() [1/2]

void BioImager.SlideImage.Dispose ( )

Definition at line 300 of file SlideImage.cs.

301 {
302 Dispose(disposing: true);
303 GC.SuppressFinalize(this);
304 }

References BioImager.SlideImage.Dispose().

Referenced by BioImager.SlideImage.Dispose().

◆ Dispose() [2/2]

virtual void BioImager.SlideImage.Dispose ( bool  disposing)
protectedvirtual

Dispose

Parameters
disposing

Definition at line 278 of file SlideImage.cs.

279 {
280 if (!disposedValue)
281 {
282 if (disposing)
283 {
284 }
285
286 Close();
287 disposedValue = true;
288 }
289 }

◆ GetLevelDimension()

ImageDimension BioImager.SlideImage.GetLevelDimension ( int  level)

Get the dimensions of a level.

Parameters
levelThe desired level.
Exceptions
OpenSlideException

Definition at line 127 of file SlideImage.cs.

128 {
129 return new ImageDimension(BioImage.Resolutions[level].SizeX, BioImage.Resolutions[level].SizeY);
130 }

Referenced by BioImager.SlideImage.GetLevelDimensions().

◆ GetLevelDimensions()

IEnumerable< ImageDimension > BioImager.SlideImage.GetLevelDimensions ( )

Get all level dimensions.

Returns
Exceptions
OpenSlideException

Definition at line 137 of file SlideImage.cs.

138 {
139 var count = LevelCount;
140 for (int i = 0; i < count; i++)
141 {
142 yield return GetLevelDimension(i);
143 }
144 }
int LevelCount
Get the number of levels in the whole slide image.
Definition: SlideImage.cs:87
ImageDimension GetLevelDimension(int level)
Get the dimensions of a level.
Definition: SlideImage.cs:127

References BioImager.SlideImage.GetLevelDimension(), and BioImager.SlideImage.LevelCount.

◆ GetLevelDownsamples()

static List< double > BioImager.SlideImage.GetLevelDownsamples ( double  baseDownsampleFactor,
int  totalLevels 
)
static

Calculates the downsample factors for each level of a slide.

Parameters
baseDownsampleFactorThe downsample factor between each level.
totalLevelsTotal number of levels in the slide.
Returns
A list of downsample factors for each level.

Definition at line 173 of file SlideImage.cs.

174 {
175 var levelDownsamples = new List<double>();
176
177 for (int level = 0; level < totalLevels; level++)
178 {
179 // Calculate the downsample factor for the current level.
180 // Math.Pow is used to raise the baseDownsampleFactor to the power of the level.
181 double downsampleFactorAtLevel = Math.Pow(baseDownsampleFactor, level);
182 levelDownsamples.Add(downsampleFactorAtLevel);
183 }
184
185 return levelDownsamples;
186 }

◆ Initialize()

static void BioImager.SlideImage.Initialize ( string  path = null)
static

Add .dll directory to PATH

Parameters
path
Exceptions
OpenSlideException

Definition at line 59 of file SlideImage.cs.

60 {
61
62 }

◆ Open()

static SlideImage BioImager.SlideImage.Open ( BioImage  b)
static

Open.

Parameters
filename
Returns
Exceptions
OpenSlideException

Definition at line 74 of file SlideImage.cs.

75 {
76 SlideImage im = new SlideImage();
77 im.BioImage = b;
78 return im;
79 }

References BioImager.SlideImage.SlideImage().

Referenced by BioImager.BioImage.OpenOME().

◆ ReadRegion()

unsafe byte[] BioImager.SlideImage.ReadRegion ( int  level,
long  x,
long  y,
long  width,
long  height 
)

Copy pre-multiplied BGRA data from a whole slide image.

Parameters
levelThe desired level.
xThe top left x-coordinate, in the level 0 reference frame.
yThe top left y-coordinate, in the level 0 reference frame.
widthThe width of the region. Must be non-negative.
heightThe height of the region. Must be non-negative.
Returns
The pixel data of this region.
Exceptions
ArgumentOutOfRangeException
Exceptions
OpenSlideException

Definition at line 225 of file SlideImage.cs.

226 {
227 return BioImage.GetTile(BioImage, App.viewer.GetCoordinate(), level, (int)x, (int)y, (int)width, (int)height).RGBBytes;
228 }
static Bitmap GetTile(BioImage b, ZCT coord, int serie, int tilex, int tiley, int tileSizeX, int tileSizeY)
Definition: Bio.cs:6678

References BioImager.ImageView.GetCoordinate(), and BioImager.BioImage.GetTile().

◆ ReadRegionAsync()

async Task< byte[]> BioImager.SlideImage.ReadRegionAsync ( int  level,
long  curLevelOffsetXPixel,
long  curLevelOffsetYPixel,
int  curTileWidth,
int  curTileHeight,
ZCT  coord 
)

Definition at line 306 of file SlideImage.cs.

307 {
308 try
309 {
310 byte[] bts;
311 TryReadRegion(level, curLevelOffsetXPixel, curLevelOffsetYPixel, curTileWidth, curTileHeight, coord,out bts);
312 return bts;
313 }
314 catch (Exception e)
315 {
316 return null;
317 }
318 }
unsafe bool TryReadRegion(int level, long x, long y, long width, long height, ZCT coord, out byte[] data)
Copy pre-multiplied BGRA data from a whole slide image.
Definition: SlideImage.cs:240

◆ TryReadRegion()

unsafe bool BioImager.SlideImage.TryReadRegion ( int  level,
long  x,
long  y,
long  width,
long  height,
ZCT  coord,
out byte[]  data 
)

Copy pre-multiplied BGRA data from a whole slide image.

Parameters
levelThe desired level.
xThe top left x-coordinate, in the level 0 reference frame.
yThe top left y-coordinate, in the level 0 reference frame.
widthThe width of the region. Must be non-negative.
heightThe height of the region. Must be non-negative.
dataThe BGRA pixel data of this region.
Returns

summary> Close an OpenSlide object. /summary> remarks> No other threads may be using the object. After this call returns, the object cannot be used anymore. /remarks>

Definition at line 240 of file SlideImage.cs.

References BioImager.BioImage.GetTile().

Property Documentation

◆ BioImage

BioImage BioImager.SlideImage.BioImage
getset

Definition at line 21 of file SlideImage.cs.

21{ get; set; }

◆ Dimensions

ImageDimension BioImager.SlideImage.Dimensions
get

Get the dimensions of level 0 (the largest level). Exactly equivalent to calling GetLevelDimensions(0).

Exceptions
OpenSlideException

Definition at line 107 of file SlideImage.cs.

108 {
109 get
110 {
111 if (_dimensionsRef == null)
112 {
113 lock (_dimensionsSynclock)
114 {
115 if (_dimensionsRef == null)
116 _dimensionsRef = GetLevelDimension(0);
117 }
118 }
119 return _dimensionsRef.Value;
120 }
121 }

◆ LevelCount

int BioImager.SlideImage.LevelCount
get

Get the number of levels in the whole slide image.

<return>The number of levels, or -1 if an error occurred.</return>

Exceptions
OpenSlideException

Definition at line 86 of file SlideImage.cs.

87 {
88 get
89 {
90 if (BioImage.MacroResolution.HasValue)
91 {
92 return BioImage.Resolutions.Count - 2;
93 }
94 else
95 return BioImage.Resolutions.Count;
96 }
97 }

Referenced by BioImager.SlideImage.GetLevelDimensions().


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