File Exchange

## Mat2gray variant with dimension option

version 1.4 (2.54 KB) by

Normalizes sections of an N-D matrix divided along DIM to the 0.0-1.0 range.

2 Downloads

Updated

Similar to mat2gray. Except dim2gray allows user to specify a dimension DIM that will determine the limits used to normalize values in that dimension.
In contrast, mat2gray scales all values in A based on 2 values (min and max by default).

I found it useful for normalizing RGB/HSV images per color channel in 1 short command, but tried to make it so it accepts N-D matrices.

from the help:
DIM2GRAY - Normalize N-dimensional array along a specified dimension.
B = DIM2GRAY(A,DIM,[LIMS])
Normalizes (i.e. scales values) in matrix A along the dimension DIM
B has type double or single in the 0-1 range, and is the same size as A.
DIM is an integer scalar--A is 'sliced' along DIM.
LIMS, optional, is a Nx2 vector of limits--where N == size(A,DIM).
It specifies limits per dimensional slice, similar to mat2gray(A,LIMS).
Usage without LIMS defaults to min-max, like mat2gray(A), only
dim2gray uses min-max limits per slice/chunk. Use NaN to specify a
min or max limit.

Example: an HSV image
A = imread('peppers.png');
A = rgb2hsv(A);
B = dim2gray(A,3)

Will linearly normalize every color plane to 0.0 & 1.0 based on the min
and max *per channel*. Equivalent to:
B = cat(3,mat2gray(A(:,:,1)),mat2gray(A(:,:,2)),mat2gray(A(:,:,3)));

%This clips range at .1 and .9:
C = dim2gray(A,3,[0.1 0.9;0.1 0.9;0.1 0.9])

Example: Multiple measurements of signal(e.g. voltage) over time
Let every row be a measurement(5) and every column a timepoint(32).
DATA = rand(5,32);
dim2gray(DATA,2); %normalize every measurement to 0-1 range
dim2gray(DATA,1); %normalize every unique timepoint to 0-1 range

Hope it helps. Welcome feedback.

Jurgen

### Jurgen (view profile)

Hi Lili, I don't think I understand. Can you give an example of what you mean?

Lili Johnson

### Lili Johnson (view profile)

Jurgen,

It is a very useful app. I want to know how I can save each splitted images individually.

Best Regards,
Lili

### Updates

 13 Feb 2013 1.4 Corrected bug in NaN handling for LIMS. 12 Feb 2013 1.3 Something went wrong with previous edit, no change. New attemp. 12 Feb 2013 1.2 n/a 12 Feb 2013 1.1 Cleaned up code & comments. Added LIMS option.
##### MATLAB Release
MATLAB 7.6 (R2008a)
##### Tags Add Tags

Download apps, toolboxes, and other File Exchange content using Add-On Explorer in MATLAB.