Code covered by the BSD License

Highlights from Mat2gray variant with dimension option

Be the first to rate this file! 7 Downloads (last 30 days) File Size: 2.54 KB File ID: #39162

Mat2gray variant with dimension option

by

Jurgen (view profile)

27 Nov 2012 (Updated )

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

File Information
Description

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 = 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.

Required Products Image Processing Toolbox
MATLAB
MATLAB release MATLAB 7.6 (R2008a)
22 May 2013 Jurgen

Jurgen (view profile)

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

Comment only
22 May 2013 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

Comment only
12 Feb 2013