Mat2gray variant with dimension option
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.
Cite As
Jurgen (2024). Mat2gray variant with dimension option (https://www.mathworks.com/matlabcentral/fileexchange/39162-mat2gray-variant-with-dimension-option), MATLAB Central File Exchange. Retrieved .
MATLAB Release Compatibility
Platform Compatibility
Windows macOS LinuxCategories
- MATLAB > Graphics > Images > Modify Image Colors >
Tags
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!Discover Live Editor
Create scripts with code, output, and formatted text in a single executable document.