## WINLEV Image Window-Level Function

Section: Handle-Based Graphics

### Usage

Adjusts the data range used to map the current image to the current colormap. The general syntax for its use is

      winlev(window,level)

where `window` is the new window, and `level` is the new level, or

      winlev

in which case it returns a vector containing the current window and level for the active image.

### Function Internals

FreeMat deals with scalar images on the range of `[0,1]`, and must therefor map an arbitrary image `x` to this range before it can be displayed. By default, the `image` command chooses

and

This ensures that the entire range of image values in `x` are mapped to the screen. With the `winlev` function, you can change the range of values mapped. In general, before display, a pixel `x` is mapped to `[0,1]` via:

### Examples

The window level function is fairly easy to demonstrate. Consider the following image, which is a Gaussian pulse image that is very narrow:

    --> t = linspace(-1,1,256);
    --> xmat = ones(256,1)*t; ymat = xmat';
    --> A = exp(-(xmat.^2 + ymat.^2)*100);
    --> image(A);

The data range of `A` is `[0,1]`, as we can verify numerically:

    --> min(A(:))

    ans =
     1.3839e-87

    --> max(A(:))

    ans =
        0.9969

To see the tail behavior, we use the `winlev` command to force FreeMat to map a smaller range of `A` to the colormap.

    --> image(A);
    --> winlev(1e-4,0.5e-4)

The result is a look at more of the tail behavior of `A`. We can also use the winlev function to find out what the window and level are once set, as in the following example.

    --> image(A);
    --> winlev(1e-4,0.5e-4)
    --> winlev
    Warning: Newly defined variable clim shadows a function of the same name.  Use clear clim to recover access to the function

    ans =
     1.0000e-04