←Select platform

WindowLevelExt Method

Summary
Sets up the paint or paint and image processing methods' window leveling options for this RasterImage
Syntax
C#
Objective-C
C++/CLI
Java
Python
public void WindowLevelExt( 
   int lowBit, 
   int highBit, 
   RasterColor16[] palette, 
   RasterWindowLevelMode mode 
) 
- (BOOL)windowLevelExt:(NSInteger)lowBitValue  
               highBit:(NSInteger)highBitValue  
               palette:(nullable NSArray<LTRasterColor16 *> *)palette  
                  mode:(LTRasterWindowLevelMode)mode  
                 error:(NSError **)error 
public void windowLevelExt( 
   int lowBit, 
   int highBit, 
   RasterColor16[] palette, 
   RasterWindowLevelMode mode 
); 
public: 
void WindowLevelExt(  
   int lowBit, 
   int highBit, 
   array<RasterColor16>^ palette, 
   RasterWindowLevelMode mode 
)  
def WindowLevelExt(self,lowBit,highBit,] palette,mode): 

Parameters

lowBit
Value indicating the low bit used for leveling. 0 <= LowBit <= HighBit <= (11 for 12-bit grayscale or 15 for 16-bit grayscale).

highBit
Value indicating the high bit used for leveling. 0 <= LowBit <= HighBit <= (11 for 12-bit grayscale or 15 for 16-bit grayscale).

palette
Optional 16-bit lookup table that can be used to implement a user defined conversion. For every intensity value between 0 and 2 raised to the power of (HighBit - LowBit + 1)-1 there should be a corresponding entry in the lookup table that contains a color. If  palette is null, the conversion is a normal shift (right or left) and the painted image is 8 or 16-bit grayscale. If  palette is not null, the painted image is a 48-bit image.

mode
Value indicating whether  palette is used by the paint and image processing methods or only by the paint methods.

Remarks

This method is available in the (Document/Medical only) Toolkits.

Provides "on demand" window leveling for the paint methods and does not alter the image data. To convert the image data to a window leveled image, use WindowLevelExt.

If RasterWindowLevelMode.PaintAndProcessing is specified, then all image processing methods will take the  palette into account.

Only TIFF and DICOM file formats are capable of saving images that have been window-leveled. Images can be window-leveled by calling WindowLevelExt and specifying RasterWindowLevelMode.PaintAndProcessing for the  mode parameter, by using the WindowLevelExt or by loading an image from a file format that supports Window Leveling. If a window-leveled image is saved as any other file format, the image data will be converted before being saved. For more information, refer to Saving Window-Leveled Images.

LEADTOOLS supports two types of LUTs for 10-16-bit grayscale images (8-bit LUT and 16-bit LUT). Typical grayscale image display and processing is done using an 8-bit LUT. But, you can also use a 16-bit LUT, which offers more precision. Some special video cards and monitors also support display of grayscale images using a 16-bit LUT.

For a version of this function that uses an 8-bit palette, see WindowLevel.

For more information, refer to Introduction to Image Processing With LEADTOOLS.

For more information, refer to Grayscale Images.

Example
C#
using Leadtools; 
using Leadtools.Codecs; 
using Leadtools.ImageProcessing; 
using Leadtools.ImageProcessing.Core; 
using Leadtools.ImageProcessing.Color; 
using Leadtools.Dicom; 
using Leadtools.Drawing; 
using Leadtools.Controls; 
using Leadtools.Svg; 
 
 
public void WindowLevelExtExample() 
{ 
	RasterCodecs codecs = new RasterCodecs(); 
	// Load a 16-bit grayscale image 
	RasterImage image = codecs.Load(Path.Combine(LEAD_VARS.ImagesDir,"DICOM", "image2.dcm")); 
 
	// Get the min and max values 
	MinMaxBitsCommand minMaxBitsCmd = new MinMaxBitsCommand(); 
	minMaxBitsCmd.Run(image); 
 
	MinMaxValuesCommand minMaxValuesCmd = new MinMaxValuesCommand(); 
	minMaxValuesCmd.Run(image); 
 
	int lowBit = minMaxBitsCmd.MinimumBit; 
	int highBit = minMaxBitsCmd.MaximumBit; 
 
	int size = (1 << (image.HighBit - image.LowBit + 1)); 
	RasterColor16[] palette = new RasterColor16[size]; 
 
	// fill the first half of the LUT with RED 
	for (int x = 0; x < size / 2; x++) 
	{ 
		palette[x].R = RasterColor16.MaximumComponent; 
		palette[x].G = 0; 
		palette[x].B = 0; 
		palette[x].Reserved = 0; 
	} 
 
	int minVal = minMaxValuesCmd.MinimumValue; 
	int maxVal = minMaxValuesCmd.MaximumValue; 
 
	// Fill the rest with gray values  
	for (int x = (size / 2); x < size; x++) 
	{ 
		palette[x].R = Convert.ToUInt16(Math.Min(RasterColor16.MaximumComponent, (Convert.ToUInt32(x - minVal) * RasterColor16.MaximumComponent) / (maxVal - minVal))); 
		palette[x].G = palette[x].R; 
		palette[x].B = palette[x].R; 
		palette[x].Reserved = 0; 
	} 
	image.WindowLevelExt(lowBit, highBit, palette, RasterWindowLevelMode.PaintAndProcessing); 
 
	codecs.Save(image, Path.Combine(LEAD_VARS.ImagesDir, "DICOM","IMAGE1_WindowLevel.BMP"), RasterImageFormat.Bmp, 0); 
 
	image.Dispose(); 
	codecs.Dispose(); 
} 
 
static class LEAD_VARS 
{ 
   public const string ImagesDir = @"C:\LEADTOOLS22\Resources\Images"; 
} 
Requirements

Target Platforms

Help Version 22.0.2023.5.16
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2023 LEAD Technologies, Inc. All Rights Reserved.

Leadtools Assembly

Products | Support | Contact Us | Intellectual Property Notices
© 1991-2023 LEAD Technologies, Inc. All Rights Reserved.